1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
|
#include "mts/MTS_IO_ICellularRadio.h"
const char MTS::IO::ICellularRadio::ETX = 0x03; //Ends socket connection
const char MTS::IO::ICellularRadio::DLE = 0x10; //Escapes ETX and DLE within Payload
const char MTS::IO::ICellularRadio::CR = 0x0D;
const char MTS::IO::ICellularRadio::NL = 0x0A;
const char MTS::IO::ICellularRadio::CTRL_Z = 0x1A;
const std::string MTS::IO::ICellularRadio::RSP_ERROR("ERROR");
const std::string MTS::IO::ICellularRadio::RSP_OK("OK");
const std::string MTS::IO::ICellularRadio::DEFAULT_RADIO_PORT("/dev/modem_at1");
const std::string MTS::IO::ICellularRadio::DEFAULT_RADIO_DIR("/var/run/radio/");
const std::string MTS::IO::ICellularRadio::VALUE_UNKNOWN("Unknown");
const std::string MTS::IO::ICellularRadio::VALUE_UNAVAILABLE("Unavailable");
const std::string MTS::IO::ICellularRadio::VALUE_NOT_SUPPORTED("Not Supported");
const std::string MTS::IO::ICellularRadio::VALUE_NOT_REGISTERED("NOT REGISTERED");
const std::string MTS::IO::ICellularRadio::VALUE_REGISTERED("REGISTERED");
const std::string MTS::IO::ICellularRadio::VALUE_SEARCHING("SEARCHING");
const std::string MTS::IO::ICellularRadio::VALUE_DENIED("DENIED");
const std::string MTS::IO::ICellularRadio::VALUE_ROAMING("ROAMING");
//Static Data
const std::string MTS::IO::ICellularRadio::KEY_TYPE("type"); //!< GSM or CDMA
const std::string MTS::IO::ICellularRadio::KEY_CODE("code"); //!< Product Code : H5, H6, C2, EV3, G3
const std::string MTS::IO::ICellularRadio::KEY_MODEL("model"); //!< Model : HE910, LE910, CE910, DE910, GE910
const std::string MTS::IO::ICellularRadio::KEY_MANUFACTURER("manufacturer"); //!< Manufacturer: Telit
const std::string MTS::IO::ICellularRadio::KEY_HARDWARE("hardware"); //!< Radio Hardware Version
const std::string MTS::IO::ICellularRadio::KEY_FIRMWARE("firmware"); //!< Radio Firmware Version
const std::string MTS::IO::ICellularRadio::KEY_FIRMWARE_BUILD("firmwarebuild"); //!< Radio Firmware Build
const std::string MTS::IO::ICellularRadio::KEY_CARRIER("carrier"); //!< Cellular Service Provider (Home Network)
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_VERIZON("Verizon");
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_AERIS("Aeris");
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_SPRINT("Sprint");
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_USCELLULAR("U.S. Cellular");
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_ATT("AT&T");
const std::string MTS::IO::ICellularRadio::VALUE_CARRIER_TMOBILE("T-Mobile");
const std::string MTS::IO::ICellularRadio::KEY_IMEI("imei"); //!< International Mobile Station Equipment Identity
const std::string MTS::IO::ICellularRadio::KEY_MEID("meid"); //!< Mobile Equipment Identifier
const std::string MTS::IO::ICellularRadio::KEY_IMSI("imsi"); //!< International Mobile Subscriber Identity
const std::string MTS::IO::ICellularRadio::KEY_MSID("msid"); //!< Mobil Station ID / Mobile Identification Number (MSID/MIN) (CDMA-Only)
const std::string MTS::IO::ICellularRadio::KEY_MDN("mdn"); //!< Mobile Directory Number : Actual phone number dialed to reach radio
const std::string MTS::IO::ICellularRadio::KEY_ICCID("iccid"); //!< Integrated Circuit Card Identifier
const std::string MTS::IO::ICellularRadio::KEY_MSL("msl"); //!< Master Subsidy Lock
//Dynamic Data
const std::string MTS::IO::ICellularRadio::KEY_ROAMING("roaming"); //!< Indicates whether or not using Home Network
const std::string MTS::IO::ICellularRadio::KEY_DATETIME("datetime"); //!< Date and Time from tower
const std::string MTS::IO::ICellularRadio::KEY_SERVICE("service"); //!< Service Connection Type [GPRS, EGPRS, WCDMA, HSDPA, 1xRTT, EVDO]
const std::string MTS::IO::ICellularRadio::KEY_NETWORK("network"); //!< Cellular Service Provider
const std::string MTS::IO::ICellularRadio::KEY_NETWORK_REG("netreg"); //!< Network Registration
const std::string MTS::IO::ICellularRadio::KEY_CID("cid"); //!< Cellular ID (Tower) in HEX
const std::string MTS::IO::ICellularRadio::KEY_LAC("lac"); //!< Location Area Code in HEX
const std::string MTS::IO::ICellularRadio::KEY_RAC("rac"); //!< Routing Area Code in HEX
const std::string MTS::IO::ICellularRadio::KEY_RSSI("rssi"); //!< Signal Strength
const std::string MTS::IO::ICellularRadio::KEY_RSSIDBM("rssidBm"); //!< Signal Strength in dBm
const std::string MTS::IO::ICellularRadio::KEY_MCC("mcc"); //!< Country Code
const std::string MTS::IO::ICellularRadio::KEY_MNC("mnc"); //!< Operator Code
const std::string MTS::IO::ICellularRadio::KEY_CHANNEL("channel"); //!< ARFCN or UARFCN Assigned Radio Channel
const std::string MTS::IO::ICellularRadio::KEY_TXPWR("txpwr"); //!< Transmit Power
const std::string MTS::IO::ICellularRadio::KEY_PSC("psc"); //!< Active Primary Synchronization Code (PSC)
const std::string MTS::IO::ICellularRadio::KEY_ECIO("ecio"); //!< Active Ec/Io (chip energy per total wideband power in dBm)
const std::string MTS::IO::ICellularRadio::KEY_RSCP("rscp"); //!< Active RSCP (Received Signal Code Power in dBm)
const std::string MTS::IO::ICellularRadio::KEY_DRX("drx"); //!< Discontinuous reception cycle length (ms)
const std::string MTS::IO::ICellularRadio::KEY_MM("mm"); //!< Mobility Management State
const std::string MTS::IO::ICellularRadio::KEY_RR("rr"); //!< Radio Resource State
const std::string MTS::IO::ICellularRadio::KEY_NOM("nom"); //!< Network Operator Mode
const std::string MTS::IO::ICellularRadio::KEY_ABND("abnd"); //!< Active Band
const std::string MTS::IO::ICellularRadio::KEY_BLER("bler"); //!< Block Error Rate (percentage)
const std::string MTS::IO::ICellularRadio::KEY_SD("sd"); //!< Service Domain
const std::string MTS::IO::ICellularRadio::KEY_DEBUG("debug"); //!< Debug Information
const std::string MTS::IO::ICellularRadio::KEY_MIP("mipProfile"); //!< Mobile IP Information
const std::string MTS::IO::ICellularRadio::KEY_MIP_ID("id"); //!< Mobile IP ID
const std::string MTS::IO::ICellularRadio::KEY_MIP_ENABLED("enabled"); //!< Mobile IP Enabled/Disabled
const std::string MTS::IO::ICellularRadio::KEY_MIP_NAI("nai"); //!< Network Access Identifier
const std::string MTS::IO::ICellularRadio::KEY_MIP_HOMEADDRESS("homeAddress"); //!< Home Address
const std::string MTS::IO::ICellularRadio::KEY_MIP_PRIMARYHA("primaryAddress"); //!< Primary Home Agent
const std::string MTS::IO::ICellularRadio::KEY_MIP_SECONDARYHA("secondaryAddress"); //!< Secondary Home Agent
const std::string MTS::IO::ICellularRadio::KEY_MIP_MNAAASPI("mnAaaSpi"); //!< Mobile Node Authentication, Authorization, and Accounting Server Security Parameter Index
const std::string MTS::IO::ICellularRadio::KEY_MIP_MNHASPI("mnHaSpi"); //!< Mobile Node Home Agent Security Server Parameter Index
const std::string MTS::IO::ICellularRadio::KEY_MIP_REVTUN("revTun"); //!< Reverse Tunneling Enabled
const std::string MTS::IO::ICellularRadio::KEY_MIP_MNAAASS("mnAaaSs"); //!< Mobile Node Authentication, Authorization, and Accounting Server Shared Secret
const std::string MTS::IO::ICellularRadio::KEY_MIP_MNHASS("mnHaSs"); //!< Mobile Node Home Agent Shared Secret
const std::string MTS::IO::ICellularRadio::VALUE_TYPE_GSM("GSM");
const std::string MTS::IO::ICellularRadio::VALUE_TYPE_LTE("LTE");
const std::string MTS::IO::ICellularRadio::VALUE_TYPE_CDMA("CDMA");
const std::string MTS::IO::ICellularRadio::VALUE_SD_NO_SERVICE("NO SERVICE");
const std::string MTS::IO::ICellularRadio::VALUE_SD_CS_ONLY("CS ONLY");
const std::string MTS::IO::ICellularRadio::VALUE_SD_PS_ONLY("PS ONLY");
const std::string MTS::IO::ICellularRadio::VALUE_SD_CSPS("CS+PS");
const std::string MTS::IO::ICellularRadio::VALUE_ABND_GSM_850("GSM 850");
const std::string MTS::IO::ICellularRadio::VALUE_ABND_GSM_900("GSM 900");
const std::string MTS::IO::ICellularRadio::VALUE_ABND_DCS_1800("DCS 1800");
const std::string MTS::IO::ICellularRadio::VALUE_ABND_PCS_1900("PCS 1900");
const std::vector<std::string> MTS::IO::ICellularRadio::DEFAULT_BAIL_STRINGS = { MTS::IO::ICellularRadio::RSP_OK, MTS::IO::ICellularRadio::RSP_ERROR };
MTS::IO::ICellularRadio::~ICellularRadio()
{
}
MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertModelToMtsShortCode(const std::string& sModel, std::string& sCode, MTS::IO::ICellularRadio *radioObject) {
CODE eCode = FAILURE;
if(sModel.find("HE910-D") == 0) {
sCode = "H5";
eCode = SUCCESS;
} else if (sModel.find("HE910-EUD") == 0) {
sCode = "H6";
eCode = SUCCESS;
} else if (sModel.find("LE910-JN1") == 0) {
sCode = "LDC3";
eCode = SUCCESS;
} else if (sModel.find("LE866A1-JS") == 0) {
sCode = "LSB3";
eCode = SUCCESS;
} else if (sModel.find("LE910-NAG") == 0) {
sCode = "LAT1";
eCode = SUCCESS;
} else if (sModel.find("LE910C4-NF") == 0) {
sCode = "L4N1";
eCode = SUCCESS;
} else if (sModel.find("LE910-NA1") == 0) {
if (NULL == radioObject) {
sCode = VALUE_NOT_SUPPORTED;
eCode = ERROR;
} else {
std::string sValue;
eCode = radioObject->getActiveFirmware(sValue);
if (eCode == SUCCESS) {
sCode = "LNA3";
} else {
sCode = "LAT3";
}
}
eCode = SUCCESS;
} else if (sModel.find("LE910-SVG") == 0) {
sCode = "LVW2";
eCode = SUCCESS;
} else if (sModel.find("LE910C1-NS") == 0) {
sCode = "LSP3";
eCode = SUCCESS;
} else if (sModel.find("LE910C1-AP") == 0) {
sCode = "LAP3";
eCode = SUCCESS;
} else if (sModel.find("ME910C1-NA") == 0) {
sCode = "MAT1";
eCode = SUCCESS;
} else if (sModel.find("ME910C1-NV") == 0) {
sCode = "MVW1";
eCode = SUCCESS;
} else if (sModel.find("ME910C1-WW") == 0) {
sCode = "MNG2";
eCode = SUCCESS;
} else if (sModel.find("LE910-EUG") == 0) {
sCode = "LEU1";
eCode = SUCCESS;
} else if (sModel.find("LE910C4-EU") == 0) {
sCode = "L4E1";
eCode = SUCCESS;
} else if (sModel.find("LE910-EU1") == 0) {
sCode = "LEU3";
eCode = SUCCESS;
} else if (sModel.find("GE910") == 0) {
sCode = "G3";
eCode = SUCCESS;
} else if (sModel.find("CE910") == 0) {
sCode = "C2";
eCode = SUCCESS;
} else if (sModel.find("DE910") == 0) {
sCode = "EV3";
eCode = SUCCESS;
} else {
sCode = VALUE_NOT_SUPPORTED;
//printError("RADIO| Could not identify MTS short code from model. [%s]", sModel.c_str());
eCode = ERROR;
}
return eCode;
}
MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertServiceDomainToString(SERVICEDOMAIN eSd, std::string& sSd) {
CODE eCode = FAILURE;
switch(eSd) {
case NO_SERVICE: sSd = VALUE_SD_NO_SERVICE; eCode = SUCCESS; break;
case CS_ONLY: sSd = VALUE_SD_CS_ONLY; eCode = SUCCESS; break;
case PS_ONLY: sSd = VALUE_SD_PS_ONLY; eCode = SUCCESS; break;
case CSPS: sSd = VALUE_SD_CSPS; eCode = SUCCESS; break;
default: sSd = VALUE_UNKNOWN; eCode = FAILURE; break;
}
return eCode;
}
MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertActiveBandToString(ACTIVEBAND eBand, std::string& sBand) {
CODE eCode = FAILURE;
switch(eBand) {
case GSM_850: sBand = VALUE_ABND_GSM_850; eCode = SUCCESS; break;
case GSM_900: sBand = VALUE_ABND_GSM_900; eCode = SUCCESS; break;
case DCS_1800: sBand = VALUE_ABND_DCS_1800; eCode = SUCCESS; break;
case PCS_1900: sBand = VALUE_ABND_PCS_1900; eCode = SUCCESS; break;
default: sBand = VALUE_UNKNOWN; eCode = FAILURE; break;
}
return eCode;
}
MTS::IO::ICellularRadio::CODE MTS::IO::ICellularRadio::convertModelToType(const std::string& sModel, std::string& sType) {
CODE eCode = FAILURE;
sType = VALUE_NOT_SUPPORTED;
if(sModel.find("HE910-D") == 0) {
sType = VALUE_TYPE_GSM;
eCode = SUCCESS;
} else if (sModel.find("HE910-EUD") == 0) {
sType = VALUE_TYPE_GSM;
eCode = SUCCESS;
} else if (sModel.find("LE910-JN1") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE866A1-JS") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910-NAG") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910C4-NF") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910-NA1") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910-SVG") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910-EUG") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910C4-EU") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910-EU1") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910C1-NS") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("LE910C1-AP") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("ME910C1-NA") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("ME910C1-NV") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("ME910C1-WW") == 0) {
sType = VALUE_TYPE_LTE;
eCode = SUCCESS;
} else if (sModel.find("GE910") == 0) {
sType = VALUE_TYPE_GSM;
eCode = SUCCESS;
} else if (sModel.find("CE910") == 0) {
sType = VALUE_TYPE_CDMA;
eCode = SUCCESS;
} else if (sModel.find("DE910") == 0) {
sType = VALUE_TYPE_CDMA;
eCode = SUCCESS;
} else {
sType = VALUE_TYPE_GSM;
eCode = ERROR;
//printError("RADIO| Could not identify type from model. [%s]. Assuming [%s]", sModel.c_str(), sType.c_str());
}
return eCode;
}
|