blob: 6d9cfd9ce9bea3130048189acc2959a1f243a429 [file] [log] [blame]
rjw1f884582022-01-06 17:20:42 +08001/* Copyright Statement:
2 *
3 * This software/firmware and related documentation ("MediaTek Software") are
4 * protected under relevant copyright laws. The information contained herein
5 * is confidential and proprietary to MediaTek Inc. and/or its licensors.
6 * Without the prior written permission of MediaTek inc. and/or its licensors,
7 * any reproduction, modification, use or disclosure of MediaTek Software,
8 * and information contained herein, in whole or in part, shall be strictly prohibited.
9 */
10/* MediaTek Inc. (C) 2010. All rights reserved.
11 *
12 * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
13 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
14 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
15 * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
18 * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
19 * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
20 * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
21 * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
22 * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
23 * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
24 * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
25 * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
26 * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
27 * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
28 * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
29 * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
30 *
31 * The following software/firmware and/or related documentation ("MediaTek Software")
32 * have been modified by MediaTek Inc. All revisions are subject to any receiver's
33 * applicable license agreements with MediaTek Inc.
34 */
35
36#ifndef SMSADDRESS_H_
37#define SMSADDRESS_H_
38#include <cstdint>
39#include <string>
40#include <vector>
41
42class SmsAddress {
43public:
44 SmsAddress();
45 virtual ~SmsAddress();
46 // From TS 23.040 9.1.2.5 and TS 24.008 table 10.5.118
47 // and C.S0005-D table 2.7.1.3.2.4-2
48 static constexpr int TON_UNKNOWN = 0;
49 static constexpr int TON_INTERNATIONAL = 1;
50 static constexpr int TON_NATIONAL = 2;
51 static constexpr int TON_NETWORK = 3;
52 static constexpr int TON_SUBSCRIBER = 4;
53 static constexpr int TON_ALPHANUMERIC = 5;
54 static constexpr int TON_ABBREVIATED = 6;
55
56 int ton;
57 std::string address;
58 std::vector<uint8_t> origBytes;
59 //uint8_t* origBytes = nullptr;
60 //int origBytes_length = 0;
61
62 /**
63 * Returns the address of the SMS message in String form or null if unavailable
64 */
65 std::string getAddressString() {
66 return address;
67 }
68
69 /**
70 * Returns true if this is an alphanumeric address
71 */
72 bool isAlphanumeric() {
73 return ton == TON_ALPHANUMERIC;
74 }
75
76 /**
77 * Returns true if this is a network address
78 */
79 bool isNetworkSpecific() {
80 return ton == TON_NETWORK;
81 }
82
83 bool couldBeEmailGateway() {
84 // Some carriers seems to send email gateway messages in this form:
85 // from: an UNKNOWN TON, 3 or 4 digits long, beginning with a 5
86 // PID: 0x00, Data coding scheme 0x03
87 // So we just attempt to treat any message from an address length <= 4
88 // as an email gateway
89
90 return address.length() <= 4;
91 }
92};
93
94#endif /* SMSADDRESS_H_ */