aboutsummaryrefslogtreecommitdiffstats
path: root/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h
blob: 615c382d6bb5dd6a0fe721f0da06546f6a6df9db (plain)
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
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
/*===========================================================================
FILE:
   QMIEnum.h

DESCRIPTION:
   QMI protocol enumerations and related methods

PUBLIC ENUMERATIONS AND METHODS:
   eQMIService
   eQMIMessageCTL
   eQMIMessageWDS
   eQMIMessageDMS
   eQMIMessageNAS
   eQMIMessageWMS
   eQMIMessagePDS
   eQMIMessageAUTH
   eQMIMessageAT
   eQMIMessageVoice
   eQMIMessageUIM
   eQMIMessagePBM
   eQMIMessageSAR
   eQMIMessageRMTFS
   eQMIMessageWDA
   eQMIMessageQCMAP
   eQMIMessageCOEX
   eQMIMessagePDC
   eQMIMessageSTX
   eQMIMessageRFRPE
   eQMIMessageCAT
   eQMIMessageRMS
   eQMIMessageOMA
   eQMIResultCode
   eQMIErrorCode
   eQMICallEndReason
   eIPAddressType
   eSMSMessageMode

Copyright (c) 2013, The Linux Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of The Linux Foundation nor the names of its
      contributors may be used to endorse or promote products derived from 
      this software without specific prior written permission.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
===========================================================================*/

//---------------------------------------------------------------------------
// Pragmas
//---------------------------------------------------------------------------
#pragma once

//---------------------------------------------------------------------------
// Include Files
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// Definitions
//---------------------------------------------------------------------------

// Invalid QMI transaction ID
const ULONG INVALID_QMI_TRANSACTION_ID = 0;

// QMI DMS PRL size constants
const ULONG QMI_DMS_MAX_PRL_SIZE = 16384;
const ULONG QMI_DMS_MAX_PRL_BLOCK = 256;

/*=========================================================================*/
// eQMIService Enumeration
//    QMI Service Type Enumeration
/*=========================================================================*/
enum eQMIService
{
   eQMI_SVC_ENUM_BEGIN = -1, 

   eQMI_SVC_CONTROL,       // 000 Control service
   eQMI_SVC_WDS,           // 001 Wireless data service
   eQMI_SVC_DMS,           // 002 Device management service
   eQMI_SVC_NAS,           // 003 Network access service
   eQMI_SVC_QOS,           // 004 Quality of service, err, service 
   eQMI_SVC_WMS,           // 005 Wireless messaging service
   eQMI_SVC_PDS,           // 006 Position determination service
   eQMI_SVC_AUTH,          // 007 Authentication service
   eQMI_SVC_AT,            // 008 AT command processor service
   eQMI_SVC_VOICE,         // 009 Voice service
   eQMI_SVC_CAT2,          // 010 Card application toolkit service (new)
   eQMI_SVC_UIM,           // 011 UIM service
   eQMI_SVC_PBM,           // 012 Phonebook service
   eQMI_SVC_QCHAT,         // 013 QCHAT Service
   eQMI_SVC_RMTFS,         // 014 Remote file system service
   eQMI_SVC_TEST,          // 015 Test service
   eQMI_SVC_LOC,           // 016 Location service 
   eQMI_SVC_SAR,           // 017 Specific absorption rate service
   eQMI_SVC_IMSS,          // 018 IMS settings service
   eQMI_SVC_ADC,           // 019 Analog to digital converter driver service
   eQMI_SVC_CSD,           // 020 Core sound driver service
   eQMI_SVC_MFS,           // 021 Modem embedded file system service
   eQMI_SVC_TIME,          // 022 Time service
   eQMI_SVC_TS,            // 023 Thermal sensors service
   eQMI_SVC_TMD,           // 024 Thermal mitigation device service
   eQMI_SVC_SAP,           // 025 Service access proxy service
   eQMI_SVC_WDA,           // 026 Wireless data administrative service
   eQMI_SVC_TSYNC,         // 027 TSYNC control service 
   eQMI_SVC_RFSA,          // 028 Remote file system access service
   eQMI_SVC_CSVT,          // 029 Circuit switched videotelephony service
   eQMI_SVC_QCMAP,         // 030 Qualcomm mobile access point service
   eQMI_SVC_IMSP,          // 031 IMS presence service
   eQMI_SVC_IMSVT,         // 032 IMS videotelephony service
   eQMI_SVC_IMSA,          // 033 IMS application service
   eQMI_SVC_COEX,          // 034 Coexistence service
   eQMI_SVC_RESERVED_35,   // 035 Reserved
   eQMI_SVC_PDC,           // 036 Persistent device configuration service
   eQMI_SVC_RESERVED_37,   // 037 Reserved
   eQMI_SVC_STX,           // 038 Simultaneous transmit service
   eQMI_SVC_BIT,           // 039 Bearer independent transport service
   eQMI_SVC_IMSRTP,        // 040 IMS RTP service
   eQMI_SVC_RFRPE,         // 041 RF radiated performance enhancement service
   eQMI_SVC_DSD,           // 042 Data system determination service
   eQMI_SVC_SSCTL,         // 043 Subsystem control service

   eQMI_SVC_CAT = 224,     // 224 Card application toolkit service
   eQMI_SVC_RMS,           // 225 Remote management service
   eQMI_SVC_OMA,           // 226 Open mobile alliance dev mgmt service

   eQMI_SVC_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIService validity check

PARAMETERS:
   svc         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIService svc )
{
   bool retVal = false;
   if ( (svc > eQMI_SVC_ENUM_BEGIN && svc <= eQMI_SVC_SSCTL)
   ||   (svc >= eQMI_SVC_CAT && svc < eQMI_SVC_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageCTL Enumeration
//    QMI Control Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageCTL
{
   eQMI_CTL_ENUM_BEGIN = -1, 

   eQMI_CTL_SET_INSTANCE_ID = 32,   // 32 Set the unique link instance ID
   eQMI_CTL_GET_VERSION_INFO,       // 33 Get supported service version info
   eQMI_CTL_GET_CLIENT_ID,          // 34 Get a unique client ID 
   eQMI_CTL_RELEASE_CLIENT_ID,      // 35 Release the unique client ID 
   eQMI_CTL_REVOKE_CLIENT_ID_IND,   // 36 Indication of client ID revocation
   eQMI_CTL_INVALID_CLIENT_ID,      // 37 Indication of invalid client ID
   eQMI_CTL_SET_DATA_FORMAT,        // 38 Set host driver data format 
   eQMI_CTL_SYNC,                   // 39 Synchronize client/server
   eQMI_CTL_SYNC_IND = 39,          // 39 Synchronize indication
   eQMI_CTL_SET_EVENT,              // 40 Set event report conditions
   eQMI_CTL_EVENT_IND = 40,         // 40 Event report indication
   eQMI_CTL_SET_POWER_SAVE_CFG,     // 41 Set power save config
   eQMI_CTL_SET_POWER_SAVE_MODE,    // 42 Set power save mode
   eQMI_CTL_GET_POWER_SAVE_MODE,    // 43 Get power save mode

   eQMI_CTL_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageCTL validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageCTL msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_CTL_SET_INSTANCE_ID && msgID < eQMI_CTL_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageWDS Enumeration
//    QMI WDS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageWDS
{
   eQMI_WDS_ENUM_BEGIN = -1, 

   eQMI_WDS_RESET,                // 000 Reset WDS service state variables
   eQMI_WDS_SET_EVENT,            // 001 Set connection state report conditions
   eQMI_WDS_EVENT_IND = 1,        // 001 Connection state report indication
   eQMI_WDS_ABORT,                // 002 Abort previously issued WDS command
   eQMI_WDS_SET_INDICATION,       // 003 Set indication conditions

   eQMI_WDS_GET_MESSAGES = 30,    // 030 Get supported messages
   eQMI_WDS_GET_FIELDS,           // 031 Get supported fields
   eQMI_WDS_START_NET,            // 032 Start WDS network interface
   eQMI_WDS_STOP_NET,             // 033 Stop WDS network interface
   eQMI_WDS_GET_PKT_STATUS,       // 034 Get packet data connection status
   eQMI_WDS_PKT_STATUS_IND = 34,  // 034 Packet data connection status indication
   eQMI_WDS_GET_RATES,            // 035 Get current bit rates of the connection
   eQMI_WDS_GET_STATISTICS,       // 036 Get the packet data transfer statistics
   eQMI_WDS_G0_DORMANT,           // 037 Go dormant
   eQMI_WDS_G0_ACTIVE,            // 038 Go active
   eQMI_WDS_CREATE_PROFILE,       // 039 Create profile with specified settings
   eQMI_WDS_MODIFY_PROFILE,       // 040 Modify profile with specified settings
   eQMI_WDS_DELETE_PROFILE,       // 041 Delete the specified profile 
   eQMI_WDS_GET_PROFILE_LIST,     // 042 Get all profiles
   eQMI_WDS_GET_PROFILE,          // 043 Get the specified profile
   eQMI_WDS_GET_DEFAULTS,         // 044 Get the default data session settings 
   eQMI_WDS_GET_SETTINGS,         // 045 Get the runtime data session settings 
   eQMI_WDS_SET_MIP,              // 046 Get the mobile IP setting 
   eQMI_WDS_GET_MIP,              // 047 Set the mobile IP setting 
   eQMI_WDS_GET_DORMANCY,         // 048 Get the dormancy status

   eQMI_WDS_GET_AUTOCONNECT = 52, // 052 Get the NDIS autoconnect setting
   eQMI_WDS_GET_DURATION,         // 053 Get the duration of data session
   eQMI_WDS_GET_MODEM_STATUS,     // 054 Get the modem status
   eQMI_WDS_MODEM_IND = 54,       // 054 Modem status indication
   eQMI_WDS_GET_DATA_BEARER,      // 055 Get the data bearer type
   eQMI_WDS_GET_MODEM_INFO,       // 056 Get the modem info
   eQMI_WDS_MODEM_INFO_IND = 56,  // 056 Modem info indication

   eQMI_WDS_GET_ACTIVE_MIP = 60,  // 060 Get the active mobile IP profile
   eQMI_WDS_SET_ACTIVE_MIP,       // 061 Set the active mobile IP profile
   eQMI_WDS_GET_MIP_PROFILE,      // 062 Get mobile IP profile settings
   eQMI_WDS_SET_MIP_PROFILE,      // 063 Set mobile IP profile settings
   eQMI_WDS_GET_MIP_PARAMS,       // 064 Get mobile IP parameters
   eQMI_WDS_SET_MIP_PARAMS,       // 065 Set mobile IP parameters
   eQMI_WDS_GET_LAST_MIP_STATUS,  // 066 Get last mobile IP status
   eQMI_WDS_GET_AAA_AUTH_STATUS,  // 067 Get AN-AAA authentication status
   eQMI_WDS_GET_CUR_DATA_BEARER,  // 068 Get current data bearer
   eQMI_WDS_GET_CALL_LIST,        // 069 Get the call history list
   eQMI_WDS_GET_CALL_ENTRY,       // 070 Get an entry from the call history list
   eQMI_WDS_CLEAR_CALL_LIST,      // 071 Clear the call history list
   eQMI_WDS_GET_CALL_LIST_MAX,    // 072 Get maximum size of call history list
   eQMI_WDS_GET_DEFAULT_PROF_NUM, // 073 Get default profile number
   eQMI_WDS_SET_DEFAULT_PROF_NUM, // 074 Set default profile number
   eQMI_WDS_RESET_PROFILE,        // 075 Reset profile
   eQMI_WDS_RESET_PROF_PARAM,     // 076 Reset profile param to invalid
   eQMI_WDS_SET_IP_FAMILY,        // 077 Set the client IP family preference
   eQMI_WDS_SET_FMC_TUNNEL,       // 078 Set FMC tunnel parameters
   eQMI_WDS_CLEAR_FMC_TUNNEL,     // 079 Clear FMC tunnel parameters
   eQMI_WDS_GET_FMC_TUNNEL,       // 080 Get FMC tunnel parameters
   eQMI_WDS_SET_AUTOCONNECT,      // 081 Set the NDIS autoconnect setting
   eQMI_WDS_GET_DNS,              // 082 Get the DNS setting
   eQMI_WDS_SET_DNS,              // 083 Set the DNS setting
   eQMI_WDS_GET_PRE_DORMANCY,     // 084 Get the CDMA pre-dormancy settings
   eQMI_WDS_SET_CAM_TIMER,        // 085 Set the CAM timer
   eQMI_WDS_GET_CAM_TIMER,        // 086 Get the CAM timer
   eQMI_WDS_SET_SCRM,             // 087 Set SCRM status 
   eQMI_WDS_GET_SCRM,             // 088 Get SCRM status
   eQMI_WDS_SET_RDUD,             // 089 Set RDUD status 
   eQMI_WDS_GET_RDUD,             // 090 Get RDUD status 
   eQMI_WDS_GET_SIPMIP_CALL_TYPE, // 091 Set SIP/MIP call type 
   eQMI_WDS_SET_PM_PERIOD,        // 092 Set EV-DO page monitor period
   eQMI_WDS_PM_PERIOD_IND = 92,   // 092 EV-DO page monitor period indication
   eQMI_WDS_SET_FORCE_LONG_SLEEP, // 093 Set EV-DO force long sleep feature
   eQMI_WDS_GET_PM_PERIOD,        // 094 Get EV-DO page monitor period
   eQMI_WDS_GET_CALL_THROTTLE,    // 095 Get call throttle info
   eQMI_WDS_GET_NSAPI,            // 096 Get NSAPI
   eQMI_WDS_SET_DUN_CTRL_PREF,    // 097 Set DUN control preference
   eQMI_WDS_GET_DUN_CTRL_INFO,    // 098 Set DUN control info
   eQMI_WDS_SET_DUN_CTRL_EVENT,   // 099 Set DUN control event preference
   eQMI_WDS_DUN_CTRL_IND = 99,    // 099 DUN control event report indication
   eQMI_WDS_PENDING_DUN_CTRL,     // 100 Control pending DUN call
   eQMI_WDS_TMGI_ACTIVATE,        // 101 Activate eMBMS TMGI  
   eQMI_WDS_TMGI_ACT_IND = 101,   // 101 eMBMS TMGI activate indication  
   eQMI_WDS_TMGI_DEACTIVATE,      // 102 Activate eMBMS TMGI  
   eQMI_WDS_TMGI_DEACT_IND = 102, // 102 eMBMS TMGI activate indication  
   eQMI_WDS_TMGI_LIST_QUERY,      // 103 Query for eMBMS TMGI list  
   eQMI_WDS_TMGI_LIST_IND,        // 104 eMBMS TMGI list query indication  
   eQMI_WDS_GET_PREF_DATA_SYS,    // 105 Get preferred data system
   eQMI_WDS_GET_LAST_DATA_STATUS, // 106 Get last data call status
   eQMI_WDS_GET_CURR_DATA_SYS,    // 107 Get current data systems status
   eQMI_WDS_GET_PDN_THROTTLE,     // 108 Get PDN throttle info

   eQMI_WDS_GET_LTE_ATTACH = 133, // 133 Get LTE attach parameters
   eQMI_WDS_RESET_PKT_STATS,      // 134 Reset packet statistics
   eQMI_WDS_GET_FLOW_CTRL_STATUS, // 135 Get flow control status
   eQMI_WDS_TMGI_SWITCH,          // 136 Activate/deactivate eMBMS TMGI  
   eQMI_WDS_TMGI_SWITCH_IND = 136,// 136 eMBMS TMGI activate/deactivate ind
   eQMI_WDS_BIND_DATA_PORT,       // 137 Bind data port
   eQMI_WDS_SET_PDN_FILTER,       // 138 Set additional PDN filter
   eQMI_WDS_REMOVE_PDN_FILTER,    // 139 Remove PDN filter
   eQMI_WDS_EX_IP_CFG_IND,        // 140 Extend IP config indication
   eQMI_WDS_CFG_REV_IP_CONN_EVT,  // 141 Configure reverse IP connection event
   eQMI_WDS_REV_IP_TRANSPORT_IND, // 142 Reverse IP transport connection ind
   eQMI_WDS_GET_IPSEC_SA_CFG,     // 143 Get IPSec static SA config
   eQMI_WDS_REV_IP_TPORT_CFG_DONE,// 144 Reverse IP transport config complete
   eQMI_WDS_GET_EX_DATA_BEARER,   // 145 Get extended data bearer
   eQMI_WDS_GET_LTE_MAX_ATTACH,   // 146 Get LTE maximum attach PDN number
   eQMI_WDS_SET_LTE_ATTACH_PDNS,  // 147 Set LTE attach PDN list
   eQMI_WDS_GET_LTE_ATTACH_PDNS,  // 148 Set LTE attach PDN list
   eQMI_WDS_LTE_ATTACH_PDNS_IND,  // 149 LTE attach PDN list indication
   eQMI_WDS_SET_LTE_DATA_RETRY,   // 150 Set LTE data retry
   eQMI_WDS_GET_LTE_DATA_RETRY,   // 151 Get LTE data retry
   eQMI_WDS_SET_LTE_ATTACH_TYPE,  // 152 Set LTE attach type
   eQMI_WDS_GET_LTE_ATTACH_TYPE,  // 153 Get LTE attach type
   eQMI_WDS_REV_IP_FILTER_IND,    // 154 Reverse IP transport filter ind
   eQMI_WDS_HANDOFF_INFO_IND,     // 155 Handoff info indication

   eQMI_WDS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageWDS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageWDS msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_WDS_ENUM_BEGIN && msgID <= eQMI_WDS_SET_INDICATION)
   ||   (msgID >= eQMI_WDS_GET_MESSAGES && msgID <= eQMI_WDS_GET_DORMANCY)
   ||   (msgID >= eQMI_WDS_GET_AUTOCONNECT && msgID <= eQMI_WDS_MODEM_INFO_IND)
   ||   (msgID >= eQMI_WDS_GET_ACTIVE_MIP && msgID <= eQMI_WDS_GET_PDN_THROTTLE)
   ||   (msgID >= eQMI_WDS_GET_LTE_ATTACH && msgID < eQMI_WDS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageDMS Enumeration
//    QMI DMS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageDMS
{
   eQMI_DMS_ENUM_BEGIN = -1, 

   eQMI_DMS_RESET,               // 00 Reset DMS service state variables
   eQMI_DMS_SET_EVENT,           // 01 Set connection state report conditions
   eQMI_DMS_EVENT_IND = 1,       // 01 Connection state report indication

   eQMI_DMS_GET_MESSAGES = 30,   // 30 Get supported messages
   eQMI_DMS_GET_FIELDS,          // 31 Get supported fields
   eQMI_DMS_GET_CAPS,            // 32 Get the device capabilities
   eQMI_DMS_GET_MANUFACTURER,    // 33 Get the device manfacturer
   eQMI_DMS_GET_MODEL_ID,        // 34 Get the device model ID
   eQMI_DMS_GET_REV_ID,          // 35 Get the device revision ID
   eQMI_DMS_GET_NUMBER,          // 36 Get the assigned voice number
   eQMI_DMS_GET_IDS,             // 37 Get the ESN/IMEI/MEID
   eQMI_DMS_GET_POWER_STATE,     // 38 Get the get power state
   eQMI_DMS_UIM_SET_PIN_PROT,    // 39 UIM - Set PIN protection
   eQMI_DMS_UIM_PIN_VERIFY,      // 40 UIM - Verify PIN 
   eQMI_DMS_UIM_PIN_UNBLOCK,     // 41 UIM - Unblock PIN
   eQMI_DMS_UIM_PIN_CHANGE,      // 42 UIM - Change PIN
   eQMI_DMS_UIM_GET_PIN_STATUS,  // 43 UIM - Get PIN status
   eQMI_DMS_GET_MSM_ID = 44,     // 44 Get MSM ID
   eQMI_DMS_GET_OPERATING_MODE,  // 45 Get the operating mode
   eQMI_DMS_SET_OPERATING_MODE,  // 46 Set the operating mode
   eQMI_DMS_GET_TIME,            // 47 Get timestamp from the device
   eQMI_DMS_GET_PRL_VERSION,     // 48 Get the PRL version
   eQMI_DMS_GET_ACTIVATED_STATE, // 49 Get the activation state 
   eQMI_DMS_ACTIVATE_AUTOMATIC,  // 50 Perform an automatic activation
   eQMI_DMS_ACTIVATE_MANUAL,     // 51 Perform a manual activation
   eQMI_DMS_GET_USER_LOCK_STATE, // 52 Get the lock state
   eQMI_DMS_SET_USER_LOCK_STATE, // 53 Set the lock state
   eQMI_DMS_SET_USER_LOCK_CODE,  // 54 Set the lock PIN
   eQMI_DMS_READ_USER_DATA,      // 55 Read user data
   eQMI_DMS_WRITE_USER_DATA,     // 56 Write user data
   eQMI_DMS_READ_ERI_FILE,       // 57 Read the enhanced roaming indicator file
   eQMI_DMS_FACTORY_DEFAULTS,    // 58 Reset to factory defaults
   eQMI_DMS_VALIDATE_SPC,        // 59 Validate service programming code
   eQMI_DMS_UIM_GET_ICCID,       // 60 Get UIM ICCID
   eQMI_DMS_GET_FIRWARE_ID,      // 61 Get firmware ID
   eQMI_DMS_SET_FIRMWARE_ID,     // 62 Set firmware ID
   eQMI_DMS_GET_HOST_LOCK_ID,    // 63 Get host lock ID
   eQMI_DMS_UIM_GET_CK_STATUS,   // 64 UIM - Get control key status
   eQMI_DMS_UIM_SET_CK_PROT,     // 65 UIM - Set control key protection
   eQMI_DMS_UIM_UNBLOCK_CK,      // 66 UIM - Unblock facility control key
   eQMI_DMS_GET_IMSI,            // 67 Get the IMSI
   eQMI_DMS_UIM_GET_STATE,       // 68 UIM - Get the UIM state
   eQMI_DMS_GET_BAND_CAPS,       // 69 Get the device band capabilities
   eQMI_DMS_GET_FACTORY_ID,      // 70 Get the device factory ID
   eQMI_DMS_GET_FIRMWARE_PREF,   // 71 Get firmware preference 
   eQMI_DMS_SET_FIRMWARE_PREF,   // 72 Set firmware preference 
   eQMI_DMS_LIST_FIRMWARE,       // 73 List all stored firmware
   eQMI_DMS_DELETE_FIRMWARE,     // 74 Delete specified stored firmware
   eQMI_DMS_SET_TIME,            // 75 Set device time
   eQMI_DMS_GET_FIRMWARE_INFO,   // 76 Get stored firmware info
   eQMI_DMS_GET_ALT_NET_CFG,     // 77 Get alternate network config
   eQMI_DMS_SET_ALT_NET_CFG,     // 78 Set alternate network config
   eQMI_DMS_GET_IMG_DLOAD_MODE,  // 79 Get next image download mode
   eQMI_DMS_SET_IMG_DLOAD_MODE,  // 80 Set next image download mode
   eQMI_DMS_GET_SW_VERSION,      // 81 Get software version
   eQMI_DMS_SET_SPC,             // 82 Set SPC
   eQMI_DMS_GET_CURRENT_PRL_INFO,// 83 Get current PRL info
   eQMI_DMS_BIND_SUBSCRIPTION,   // 84 Bind subscription
   eQMI_DMS_GET_SUBSCRIPTION,    // 85 Get bound subscription

   eQMI_DMS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageDMS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageDMS msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_DMS_ENUM_BEGIN && msgID <= eQMI_DMS_EVENT_IND)
   ||   (msgID >= eQMI_DMS_GET_MESSAGES && msgID < eQMI_DMS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageNAS Enumeration
//    QMI NAS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageNAS
{
   eQMI_NAS_ENUM_BEGIN = -1, 

   eQMI_NAS_RESET,               // 000 Reset NAS service state variables
   eQMI_NAS_ABORT,               // 001 Abort previously issued NAS command
   eQMI_NAS_SET_EVENT,           // 002 Set NAS state report conditions
   eQMI_NAS_EVENT_IND = 2,       // 002 Connection state report indication
   eQMI_NAS_SET_REG_EVENT,       // 003 Set NAS registration report conditions

   eQMI_NAS_GET_MESSAGES = 30,   // 030 Get supported messages
   eQMI_NAS_GET_FIELDS,          // 031 Get supported fields
   eQMI_NAS_GET_RSSI,            // 032 Get the signal strength
   eQMI_NAS_SCAN_NETS,           // 033 Scan for visible network
   eQMI_NAS_REGISTER_NET,        // 034 Initiate a network registration
   eQMI_NAS_ATTACH_DETACH,       // 035 Initiate an attach or detach action
   eQMI_NAS_GET_SS_INFO,         // 036 Get info about current serving system
   eQMI_NAS_SS_INFO_IND = 36,    // 036 Current serving system info indication
   eQMI_NAS_GET_HOME_INFO,       // 037 Get info about home network
   eQMI_NAS_GET_NET_PREF_LIST,   // 038 Get the list of preferred networks
   eQMI_NAS_SET_NET_PREF_LIST,   // 039 Set the list of preferred networks
   eQMI_NAS_GET_NET_BAN_LIST,    // 040 Get the list of forbidden networks
   eQMI_NAS_SET_NET_BAN_LIST,    // 041 Set the list of forbidden networks
   eQMI_NAS_SET_TECH_PREF,       // 042 Set the technology preference
   eQMI_NAS_GET_TECH_PREF,       // 043 Get the technology preference
   eQMI_NAS_GET_ACCOLC,          // 044 Get the Access Overload Class
   eQMI_NAS_SET_ACCOLC,          // 045 Set the Access Overload Class 
   eQMI_NAS_GET_SYSPREF,         // 046 Get the CDMA system preference 
   eQMI_NAS_GET_NET_PARAMS,      // 047 Get various network parameters 
   eQMI_NAS_SET_NET_PARAMS,      // 048 Set various network parameters 
   eQMI_NAS_GET_RF_INFO,         // 049 Get the SS radio/band channel info
   eQMI_NAS_GET_AAA_AUTH_STATUS, // 050 Get AN-AAA authentication status
   eQMI_NAS_SET_SYS_SELECT_PREF, // 051 Set system selection preference
   eQMI_NAS_GET_SYS_SELECT_PREF, // 052 Get system selection preference
   eQMI_NAS_SYS_SELECT_IND = 52, // 052 System selection pref indication

   eQMI_NAS_SET_DDTM_PREF = 55,  // 055 Set DDTM preference
   eQMI_NAS_GET_DDTM_PREF,       // 056 Get DDTM preference
   eQMI_NAS_DDTM_IND = 56,       // 056 DDTM preference indication
   eQMI_NAS_GET_OPERATER_NAME,   // 057 Get operator name data
   eQMI_NAS_OPERATER_NAME_IND,   // 058 Operator name data indication
   eQMI_NAS_GET_PLMN_MODE,       // 059 Get PLMN mode bit from CSP
   eQMI_NAS_PLMN_MODE_IND,       // 060 CSP PLMN mode bit indication
   eQMI_NAS_UPDATE_AKEY,         // 061 Update the A-KEY
   eQMI_NAS_GET_3GPP2_SUBS_INFO, // 062 Get 3GPP2 subscription info
   eQMI_NAS_SET_3GPP2_SUBS_INFO, // 063 Set 3GPP2 subscription info
   eQMI_NAS_MOB_CAI_REV,         // 064 Get mobile CAI revision information
   eQMI_NAS_GET_RTRE_CONFIG,     // 065 Get RTRE configuration information
   eQMI_NAS_SET_RTRE_CONFIG,     // 066 Set RTRE configuration information
   eQMI_NAS_GET_CELL_LOC_INFO,   // 067 Get cell location information
   eQMI_NAS_GET_PLMN_NAME,       // 068 Get operator name for specified network
   eQMI_NAS_BIND_SUBS,           // 069 Bind client to a specific subscription
   eQMI_NAS_MANAGED_ROAMING_IND, // 070 Managed roaming indication
   eQMI_NAS_DSB_PREF_IND,        // 071 Dual standby preference indication
   eQMI_NAS_SUBS_INFO_IND,       // 072 Subscription info indication
   eQMI_NAS_GET_MODE_PREF,       // 073 Get mode preference

   eQMI_NAS_SET_DSB_PREF = 75,   // 075 Set dual standby preference
   eQMI_NAS_NETWORK_TIME_IND,    // 076 Network time indication
   eQMI_NAS_GET_SYSTEM_INFO,     // 077 Get system info
   eQMI_NAS_SYSTEM_INFO_IND,     // 078 System info indication
   eQMI_NAS_GET_SIGNAL_INFO,     // 079 Get signal info
   eQMI_NAS_CFG_SIGNAL_INFO,     // 080 Configure signal info report
   eQMI_NAS_SIGNAL_INFO_IND,     // 081 Signal info indication
   eQMI_NAS_GET_ERROR_RATE,      // 082 Get error rate info
   eQMI_NAS_ERROR_RATE_IND,      // 083 Error rate indication
   eQMI_NAS_EVDO_SESSION_IND,    // 084 CDMA 1xEV-DO session close indication
   eQMI_NAS_EVDO_UATI_IND,       // 085 CDMA 1xEV-DO UATI update indication
   eQMI_NAS_GET_EVDO_SUBTYPE,    // 086 Get CDMA 1xEV-DO protocol subtype
   eQMI_NAS_GET_EVDO_COLOR_CODE, // 087 Get CDMA 1xEV-DO color code
   eQMI_NAS_GET_ACQ_SYS_MODE,    // 088 Get current acquisition system mode
   eQMI_NAS_SET_RX_DIVERSITY,    // 089 Set the RX diversity
   eQMI_NAS_GET_RX_TX_INFO,      // 090 Get detailed RX/TX information
   eQMI_NAS_UPDATE_AKEY_EXT,     // 091 Update the A-KEY (extended)
   eQMI_NAS_GET_DSB_PREF,        // 092 Get dual standby preference
   eQMI_NAS_DETACH_LTE,          // 093 Detach the current LTE system
   eQMI_NAS_BLOCK_LTE_PLMN,      // 094 Block LTE PLMN
   eQMI_NAS_UNBLOCK_LTE_PLMN,    // 095 Unblock LTE PLMN
   eQMI_NAS_RESET_LTE_PLMN_BLK,  // 096 Reset LTE PLMN blocking
   eQMI_NAS_CUR_PLMN_NAME_IND,   // 097 Current PLMN name indication
   eQMI_NAS_CONFIG_EMBMS,        // 098 Configure eMBMS
   eQMI_NAS_GET_EMBMS_STATUS,    // 099 Get eMBMS status
   eQMI_NAS_EMBMS_STATUS_IND,    // 100 eMBMS status indication
   eQMI_NAS_GET_CDMA_POS_INFO,   // 101 Get CDMA position info
   eQMI_NAS_RF_BAND_INFO_IND,    // 102 RF band info indication
   eQMI_NAS_FORCE_NET_SEARCH,    // 103 Force network search
   eQMI_NAS_NET_REJECT_IND,      // 104 Network reject indication
   eQMI_NAS_GET_MANAGED_ROAM,    // 105 Get managed roaming configuration
   eQMI_NAS_RTRE_CONFIG_IND,     // 106 RTRE configuration indication
   eQMI_NAS_GET_CENTRALIZED_EOM, // 107 Get centralized EONS support
   eQMI_NAS_CFG_SIGNAL_INFO2,    // 108 Configure signal info report (V2)
   eQMI_NAS_GET_TDS_CELL_INFO,   // 109 Get TD-SCDMA cell/position info
   eQMI_NAS_SET_HPLMN_IRAT_TIMER,// 110 Set HPLMN IRAT search timer
   eQMI_NAS_GET_EMBMS_SIQ_QUAL,  // 111 Get eMBMS signal quality
   eQMI_NAS_LIMIT_SYS_INFO,      // 112 Limit system info indications
   eQMI_NAS_GET_SYS_INFO_LIMITS, // 113 Get system info indication limits
   eQMI_NAS_UPDATE_IMS_STATUS,   // 114 Update IMS status
   eQMI_NAS_GET_IMS_PREFERENCE,  // 115 Get IMS preference status
   eQMI_NAS_IMS_PREFERENCE_IND,  // 116 IMS preference status indication
   eQMI_NAS_CFG_IND_PLMN_NAME,   // 117 Configure indication for PLMN name 
   eQMI_NAS_CDMA_AVOID_SYSTEM,   // 118 CDMA avoid system
   eQMI_NAS_GET_AVOIDED_SYSTEMS, // 119 Get CDMA avoided system list
   eQMI_NAS_SET_HPLMN_SRCH_TIMER,// 120 Set HPLMN search timer
   eQMI_NAS_GET_HPLMN_SRCH_TIMER,// 121 Get HPLMN search timer
   eQMI_NAS_SET_E911_STATE,      // 122 Set E911 state
   eQMI_NAS_E911_STATE_IND,      // 123 E911 state ready indication
   eQMI_NAS_GET_SUBS_INFO,       // 124 Get subscription info
   eQMI_NAS_GET_NET_TIME,        // 125 Get network time
   eQMI_NAS_GET_LTE_SIB16_TIME,  // 126 Get LTE SIB16 network time
   eQMI_NAS_LTE_SIB16_TIME_IND,  // 127 LTE SIB16 network time indication

   eQMI_NAS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageNAS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageNAS msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_NAS_ENUM_BEGIN && msgID <= eQMI_NAS_SET_REG_EVENT)
   ||   (msgID >= eQMI_NAS_GET_MESSAGES && msgID <= eQMI_NAS_SYS_SELECT_IND)
   ||   (msgID >= eQMI_NAS_SET_DDTM_PREF && msgID <= eQMI_NAS_GET_MODE_PREF)
   ||   (msgID >= eQMI_NAS_SET_DSB_PREF && msgID < eQMI_NAS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageWMS Enumeration
//    QMI WMS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageWMS
{
   eQMI_WMS_ENUM_BEGIN = -1, 

   eQMI_WMS_RESET,                  // 00 Reset WMS service state variables
   eQMI_WMS_SET_EVENT,              // 01 Set new message report conditions
   eQMI_WMS_EVENT_IND = 1,          // 01 New message report indication

   eQMI_WMS_GET_MESSAGES = 30,      // 030 Get supported messages
   eQMI_WMS_GET_FIELDS,             // 031 Get supported fields
   eQMI_WMS_RAW_SEND,               // 32 Send a raw message
   eQMI_WMS_RAW_WRITE,              // 33 Write a raw message to the device
   eQMI_WMS_RAW_READ,               // 34 Read a raw message from the device
   eQMI_WMS_MODIFY_TAG,             // 35 Modify message tag on the device
   eQMI_WMS_DELETE,                 // 36 Delete message by index/tag/memory

   eQMI_WMS_GET_MSG_PROTOCOL = 48,  // 48 Get the current message protocol
   eQMI_WMS_GET_MSG_LIST,           // 49 Get list of messages from the device
   eQMI_WMS_SET_ROUTES,             // 50 Set routes for message memory storage
   eQMI_WMS_GET_ROUTES,             // 51 Get routes for message memory storage
   eQMI_WMS_GET_SMSC_ADDR,          // 52 Get SMSC address
   eQMI_WMS_SET_SMSC_ADDR,          // 53 Set SMSC address
   eQMI_WMS_GET_MSG_LIST_MAX,       // 54 Get maximum size of SMS storage
   eQMI_WMS_SEND_ACK,               // 55 Send ACK
   eQMI_WMS_SET_RETRY_PERIOD,       // 56 Set retry period
   eQMI_WMS_SET_RETRY_INTERVAL,     // 57 Set retry interval
   eQMI_WMS_SET_DC_DISCO_TIMER,     // 58 Set DC auto-disconnect timer
   eQMI_WMS_SET_MEMORY_STATUS,      // 59 Set memory storage status
   eQMI_WMS_SET_BC_ACTIVATION,      // 60 Set broadcast activation
   eQMI_WMS_SET_BC_CONFIG,          // 61 Set broadcast config
   eQMI_WMS_GET_BC_CONFIG,          // 62 Get broadcast config
   eQMI_WMS_MEMORY_FULL_IND,        // 63 Memory full indication
   eQMI_WMS_GET_DOMAIN_PREF,        // 64 Get domain preference
   eQMI_WMS_SET_DOMAIN_PREF,        // 65 Set domain preference
   eQMI_WMS_MEMORY_SEND,            // 66 Send message from memory store
   eQMI_WMS_GET_MSG_WAITING,        // 67 Get message waiting info
   eQMI_WMS_MSG_WAITING_IND,        // 68 Message waiting indication
   eQMI_WMS_SET_PRIMARY_CLIENT,     // 69 Set client as primary client
   eQMI_WMS_SMSC_ADDR_IND,          // 70 SMSC address indication
   eQMI_WMS_INDICATOR_REG,          // 71 Register for indicators
   eQMI_WMS_GET_TRANSPORT_INFO,     // 72 Get transport layer info
   eQMI_WMS_TRANSPORT_INFO_IND,     // 73 Transport layer info indication
   eQMI_WMS_GET_NW_REG_INFO,        // 74 Get network registration info
   eQMI_WMS_NW_REG_INFO_IND,        // 75 Network registration info indication
   eQMI_WMS_BIND_SUBSCRIPTION,      // 76 Bind client to a subscription
   eQMI_WMS_GET_INDICATOR_REG,      // 77 Get indicator registration
   eQMI_WMS_GET_SMS_PARAMETERS,     // 78 Get SMS EF-SMSP parameters
   eQMI_WMS_SET_SMS_PARAMETERS,     // 79 Set SMS EF-SMSP parameters
   eQMI_WMS_CALL_STATUS_IND,        // 80 Call status indication
   eQMI_WMS_GET_DOMAIN_PREF_CFG,    // 81 Get domain pref config
   eQMI_WMS_SET_DOMAIN_PREF_CFG,    // 82 Set domain pref config
   eQMI_WMS_GET_RETRY_PERIOD,       // 83 Get retry period
   eQMI_WMS_GET_RETRY_INTERVAL,     // 84 Get retry interval
   eQMI_WMS_GET_DC_DISCO_TIMER,     // 85 Get DC auto-disconnect timer
   eQMI_WMS_GET_MEMORY_STATUS,      // 86 Get memory storage status
   eQMI_WMS_GET_PRIMARY_CLIENT,     // 87 Get primary cleint
   eQMI_WMS_GET_SUBSCR_BINDING,     // 88 Get client subscription binding
   eQMI_WMS_ASYNC_RAW_SEND,         // 89 Asynchronously send a raw message
   eQMI_WMS_ASYNC_RAW_SEND_IND = 89,// 89 Asynchronous send indication
   eQMI_WMS_ASYNC_SEND_ACK,         // 90 Asynchronously send ACK
   eQMI_WMS_ASYNC_SEND_ACK_IND = 90,// 90 Asynchronou send ACK indication
   eQMI_WMS_ASYNC_MEMORY_SEND,      // 91 Async send msg from memory store
   eQMI_WMS_ASYNC_MEM_SEND_IND = 91,// 91 Async memory store send indication
   eQMI_WMS_GET_SERVICE_READY,      // 92 Get service ready status
   eQMI_WMS_SERVICE_READY_IND,      // 93 Service ready status indication
   eQMI_WMS_BC_CONFIG_IND,          // 94 Broadcast config indication
   eQMI_WMS_SET_MSG_WAITING,        // 95 Set message waiting info

   eQMI_WMS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageWMS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageWMS msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_WMS_ENUM_BEGIN && msgID <= eQMI_WMS_EVENT_IND)
   ||   (msgID >= eQMI_WMS_GET_MESSAGES && msgID <= eQMI_WMS_DELETE)
   ||   (msgID >= eQMI_WMS_GET_MSG_PROTOCOL && msgID < eQMI_WMS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessagePDS Enumeration
//    QMI PDS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessagePDS
{
   eQMI_PDS_ENUM_BEGIN = -1, 

   eQMI_PDS_RESET,                // 000 Reset PDS service state variables
   eQMI_PDS_SET_EVENT,            // 001 Set PDS report conditions
   eQMI_PDS_EVENT_IND = 1,        // 001 PDS report indication

   eQMI_PDS_GET_STATE = 32,       // 032 Return PDS service state
   eQMI_PDS_STATE_IND = 32,       // 032 PDS service state indication
   eQMI_PDS_SET_STATE,            // 033 Set PDS service state
   eQMI_PDS_START_SESSION,        // 034 Start a PDS tracking session
   eQMI_PDS_GET_SESSION_INFO,     // 035 Get PDS tracking session info
   eQMI_PDS_FIX_POSITION,         // 036 Manual tracking session position
   eQMI_PDS_END_SESSION,          // 037 End a PDS tracking session
   eQMI_PDS_GET_NMEA_CFG,         // 038 Get NMEA sentence config
   eQMI_PDS_SET_NMEA_CFG,         // 039 Set NMEA sentence config
   eQMI_PDS_INJECT_TIME,          // 040 Inject a time reference
   eQMI_PDS_GET_DEFAULTS,         // 041 Get default tracking session config
   eQMI_PDS_SET_DEFAULTS,         // 042 Set default tracking session config
   eQMI_PDS_GET_XTRA_PARAMS,      // 043 Get the GPS XTRA parameters 
   eQMI_PDS_SET_XTRA_PARAMS,      // 044 Set the GPS XTRA parameters 
   eQMI_PDS_FORCE_XTRA_DL,        // 045 Force a GPS XTRA database download
   eQMI_PDS_GET_AGPS_CONFIG,      // 046 Get the AGPS mode configuration
   eQMI_PDS_SET_AGPS_CONFIG,      // 047 Set the AGPS mode configuration
   eQMI_PDS_GET_SVC_AUTOTRACK,    // 048 Get the service auto-tracking state
   eQMI_PDS_SET_SVC_AUTOTRACK,    // 049 Set the service auto-tracking state
   eQMI_PDS_GET_COM_AUTOTRACK,    // 050 Get COM port auto-tracking config
   eQMI_PDS_SET_COM_AUTOTRACK,    // 051 Set COM port auto-tracking config
   eQMI_PDS_RESET_DATA,           // 052 Reset PDS service data
   eQMI_PDS_SINGLE_FIX,           // 053 Request single position fix
   eQMI_PDS_GET_VERSION,          // 054 Get PDS service version
   eQMI_PDS_INJECT_XTRA,          // 055 Inject XTRA data
   eQMI_PDS_INJECT_POSITION,      // 056 Inject position data
   eQMI_PDS_INJECT_WIFI,          // 057 Inject Wi-Fi obtained data
   eQMI_PDS_GET_SBAS_CONFIG,      // 058 Get SBAS config
   eQMI_PDS_SET_SBAS_CONFIG,      // 059 Set SBAS config
   eQMI_PDS_SEND_NI_RESPONSE,     // 060 Send network initiated response
   eQMI_PDS_INJECT_ABS_TIME,      // 061 Inject absolute time
   eQMI_PDS_INJECT_EFS,           // 062 Inject EFS data
   eQMI_PDS_GET_DPO_CONFIG,       // 063 Get DPO config
   eQMI_PDS_SET_DPO_CONFIG,       // 064 Set DPO config
   eQMI_PDS_GET_ODP_CONFIG,       // 065 Get ODP config
   eQMI_PDS_SET_ODP_CONFIG,       // 066 Set ODP config
   eQMI_PDS_CANCEL_SINGLE_FIX,    // 067 Cancel single position fix
   eQMI_PDS_GET_GPS_STATE,        // 068 Get GPS state
   eQMI_PDS_SET_PPM_EVT_REPORT,   // 069 Set PPM event report  
   eQMI_PDS_SET_SPI_REPORT,       // 070 Set SPI streaming reporting
   eQMI_PDS_SET_SPI_RPT_IND = 70, // 070 Set SPI streaming indication
   eQMI_PDS_SET_SPI_STATUS,       // 071 Set SPI status
   eQMI_PDS_SET_PPM_REPORT,       // 072 Set PPM reporting state
   eQMI_PDS_SET_PPM_RPT_IND = 72, // 072 Set PPM reporting state indication
   eQMI_PDS_FORCE_RECEIVER_OFF,   // 073 Force receiver off

   eQMI_PDS_GET_METHODS = 80,     // 080 Get GPS position methods state
   eQMI_PDS_SET_METHODS,          // 081 Set GPS position methods state
   eQMI_PDS_INJECT_SENSOR,        // 082 Inject sensor data
   eQMI_PDS_INJECT_TIME_SYNC,     // 083 Inject time sync data
   eQMI_PDS_GET_SENSOR_CFG,       // 084 Get sensor config
   eQMI_PDS_SET_SENSOR_CFG,       // 085 Set sensor config
   eQMI_PDS_GET_NAV_CFG,          // 086 Get navigation config
   eQMI_PDS_SET_NAV_CFG,          // 087 Set navigation config

   eQMI_PDS_SET_WLAN_BLANK = 90,  // 090 Set WLAN blanking
   eQMI_PDS_SET_LBS_SC_RPT,       // 091 Set LBS security challenge reporting
   eQMI_PDS_LBS_SC_IND = 91,      // 091 LBS security challenge indication
   eQMI_PDS_SET_LBS_SC,           // 092 Set LBS security challenge
   eQMI_PDS_GET_LBS_ENCRYPT_CFG,  // 093 Get LBS security encryption config
   eQMI_PDS_SET_LBS_UPDATE_RATE,  // 094 Set LBS security update rate
   eQMI_PDS_SET_CELLDB_CONTROL,   // 095 Set cell database control
   eQMI_PDS_READY_IND,            // 096 Ready indication
   eQMI_PDS_INJECT_MOTION_DATA,   // 097 Inject motion data 
   eQMI_PDS_SET_GNSS_ERR_REPORT,  // 098 Set GNSS error recovery report 
   eQMI_PDS_GNSS_ERR_IND = 98,    // 098 GNSS error recovery report indication
   eQMI_PDS_RESET_SERVICE,        // 099 Reset location service
   eQMI_PDS_INJECT_TEST_DATA,     // 100 Inject test data
   eQMI_PDS_SET_GNSS_RF_CFG,      // 101 Set GNSS RF config
   eQMI_PDS_INJECT_COG_DATA,      // 102 Inject course over ground data
   eQMI_PDS_INJECT_SUPL_CERT,     // 103 Inject SUPL certificate
   eQMI_PDS_DELETE_SUPL_CERT ,    // 104 Delete SUPL certificate
   eQMI_PDS_GET_IS801_OVER_SUPL,  // 105 Get IS-801 Over SUPL indicator
   eQMI_PDS_SET_IS801_OVER_SUPL,  // 106 Set IS-801 Over SUPL indicator
   eQMI_PDS_GET_SUPL_HASH_ALG,    // 107 Get SUPL hash algorithm
   eQMI_PDS_SET_SUPL_HASH_ALG,    // 108 Set SUPL hash algorithm
   eQMI_PDS_GET_SUPL_MAX_VERSION, // 109 Get SUPL maximum version
   eQMI_PDS_SET_SUPL_MAX_VERSION, // 110 Set SUPL maximum version
   eQMI_PDS_GET_SUPL_SECURITY,    // 111 Get SUPL security
   eQMI_PDS_SET_SUPL_SECURITY,    // 112 Set SUPL security
   eQMI_PDS_GET_SUPL_TLS_VERSION, // 113 Get SUPL TLS version
   eQMI_PDS_SET_SUPL_TLS_VERSION, // 114 Set SUPL TLS version
   eQMI_PDS_GET_AGNSS_POS_MODES,  // 115 Get AGNSS positioning modes
   eQMI_PDS_SET_AGNSS_POS_MODES,  // 116 Set AGNSS positioning modes
   eQMI_PDS_GET_EMERGENCY_PROTO,  // 117 Get emergency protocol config
   eQMI_PDS_SET_EMERGENCY_PROTO,  // 118 Set emergency protocol config
   eQMI_PDS_GET_APN_PROFILES,     // 119 Get APN profiles
   eQMI_PDS_SET_APN_PROFILES,     // 120 Set APN profiles
   eQMI_PDS_GET_HOME_SUPL_ADDR,   // 121 Get home SUPL address
   eQMI_PDS_SET_HOME_SUPL_ADDR,   // 122 Set home SUPL address
   eQMI_PDS_INJECT_VEHICLE_DATA,  // 123 Inject vehicle sensor data
   eQMI_PDS_INJECT_PEDO_DATA,     // 124 Inject pedometer data

   eQMI_PDS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessagePDS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessagePDS msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_PDS_ENUM_BEGIN && msgID <= eQMI_PDS_EVENT_IND)
   ||   (msgID >= eQMI_PDS_GET_STATE && msgID <= eQMI_PDS_FORCE_RECEIVER_OFF)
   ||   (msgID >= eQMI_PDS_GET_METHODS && msgID <= eQMI_PDS_SET_NAV_CFG)
   ||   (msgID >= eQMI_PDS_SET_WLAN_BLANK && msgID < eQMI_PDS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageAUTH Enumeration
//    QMI Authentication Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageAUTH
{
   eQMI_AUTH_ENUM_BEGIN = -1, 

   eQMI_AUTH_START_EAP = 32,        // 32 Start the EAP session
   eQMI_AUTH_SEND_EAP,              // 33 Send and receive EAP packets
   eQMI_AUTH_EAP_RESULT_IND,        // 34 EAP session result indication
   eQMI_AUTH_GET_EAP_KEYS,          // 35 Get the EAP session keys
   eQMI_AUTH_END_EAP,               // 36 End the EAP session
   eQMI_AUTH_RUN_AKA,               // 37 Runs the AKA algorithm
   eQMI_AUTH_AKA_RESULT_IND,        // 38 AKA algorithm result indication

   eQMI_AUTH_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageAUTH validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageAUTH msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_AUTH_START_EAP && msgID < eQMI_AUTH_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageAT Enumeration
//    QMI AT Command Processor Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageAT
{
   eQMI_AT_ENUM_BEGIN = -1, 

   eQMI_AT_RESET,                   // 00 Reset AT service state variables

   eQMI_AT_REG_COMMANDS = 32,       // 32 Register AT commands to be forwarded
   eQMI_AT_COMMAND_IND,             // 33 AT command indication
   eQMI_AT_SEND_RESPONSE,           // 34 Send the response to an AT command
   eQMI_AT_ABORT_IND,               // 35 AT command abort indication

   eQMI_AT_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageAT validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageAT msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_AT_RESET)
   ||   (msgID >= eQMI_AT_REG_COMMANDS && msgID < eQMI_AT_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};


/*=========================================================================*/
// eQMIMessageVoice Enumeration
//    QMI Voice Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageVoice
{
   eQMI_VOICE_ENUM_BEGIN = -1, 

   eQMI_VOICE_INDICATION_REG = 3,    // 03 Set indication registration state

   eQMI_VOICE_GET_MESSAGES = 30,     // 30 Get supported messages
   eQMI_VOICE_GET_FIELDS,            // 31 Get supported fields
   eQMI_VOICE_CALL_ORIGINATE,        // 32 Originate a voice call
   eQMI_VOICE_CALL_END,              // 33 End a voice call
   eQMI_VOICE_CALL_ANSWER,           // 34 Answer incoming voice call

   eQMI_VOICE_GET_CALL_INFO = 36,    // 36 Get call information
   eQMI_VOICE_OTASP_STATUS_IND,      // 37 OTASP/OTAPA event indication
   eQMI_VOICE_INFO_REC_IND,          // 38 New info record indication
   eQMI_VOICE_SEND_FLASH,            // 39 Send a simple flash
   eQMI_VOICE_BURST_DTMF,            // 40 Send a burst DTMF
   eQMI_VOICE_START_CONT_DTMF,       // 41 Starts a continuous DTMF
   eQMI_VOICE_STOP_CONT_DTMF,        // 42 Stops a continuous DTMF
   eQMI_VOICE_DTMF_IND,              // 43 DTMF event indication
   eQMI_VOICE_SET_PRIVACY_PREF,      // 44 Set privacy preference
   eQMI_VOICE_PRIVACY_IND,           // 45 Privacy change indication
   eQMI_VOICE_ALL_STATUS_IND,        // 46 Voice all call status indication
   eQMI_VOICE_GET_ALL_STATUS,        // 47 Get voice all call status

   eQMI_VOICE_MANAGE_CALLS = 49,     // 49 Manage calls
   eQMI_VOICE_SUPS_NOTIFICATION_IND, // 50 Supplementary service notifications
   eQMI_VOICE_SET_SUPS_SERVICE,      // 51 Manage supplementary service
   eQMI_VOICE_GET_CALL_WAITING,      // 52 Query sup service call waiting
   eQMI_VOICE_GET_CALL_BARRING,      // 53 Query sup service call barring
   eQMI_VOICE_GET_CLIP,              // 54 Query sup service CLIP
   eQMI_VOICE_GET_CLIR,              // 55 Query sup service CLIR
   eQMI_VOICE_GET_CALL_FWDING,       // 56 Query sup service call forwarding
   eQMI_VOICE_SET_CALL_BARRING_PWD,  // 57 Set call barring password
   eQMI_VOICE_ORIG_USSD,             // 58 Initiate USSD operation then wait
   eQMI_VOICE_ANSWER_USSD,           // 59 Answer USSD request
   eQMI_VOICE_CANCEL_USSD,           // 60 Cancel USSD operation
   eQMI_VOICE_USSD_RELEASE_IND,      // 61 USSD release indication
   eQMI_VOICE_USSD_IND,              // 62 USSD request/notification indication
   eQMI_VOICE_UUS_IND,               // 63 UUS information indication
   eQMI_VOICE_SET_CONFIG,            // 64 Set config
   eQMI_VOICE_GET_CONFIG,            // 65 Get config
   eQMI_VOICE_SUPS_IND,              // 66 Sup service request indication
   eQMI_VOICE_ASYNC_ORIG_USSD,       // 67 Initiate USSD operation
   eQMI_VOICE_ASYNC_USSD_IND = 67,   // 67 USSD request/notification indication
   eQMI_VOICE_BIND_SUBSCRIPTION,     // 68 Bind subscription
   eQMI_VOICE_ALS_SET_LINE_SW,       // 69 ALS set line switching
   eQMI_VOICE_ALS_SELECT_LINE,       // 70 ALS select line
   eQMI_VOICE_AOC_RESET_ACM,         // 71 AOC reset ACM
   eQMI_VOICE_AOC_SET_ACM_MAX,       // 72 ACM set ACM maximum
   eQMI_VOICE_AOC_GET_CM_INFO,       // 73 AOC get call meter info
   eQMI_VOICE_AOC_LOW_FUNDS_IND,     // 74 AOC low funds indication
   eQMI_VOICE_GET_COLP,              // 75 Get COLP info
   eQMI_VOICE_GET_COLR,              // 76 Get COLR info
   eQMI_VOICE_GET_CNAP,              // 77 Get CNAP info
   eQMI_VOICE_MANAGE_IP_CALLS,       // 78 Manage VoIP calls
   eQMI_VOICE_ALS_GET_LINE_SW,       // 79 ALS get line switching
   eQMI_VOICE_ALS_GET_LINE_SEL,      // 80 ALS get selected line
   eQMI_VOICE_MODIFIED_IND,          // 81 Call modified indication
   eQMI_VOICE_MODIFY_ACCEPT_IND,     // 82 Call modify accept indication
   eQMI_VOICE_SPEECH_CODEC_IND,      // 83 Speech codec info indication
   eQMI_VOICE_HANDOVER_IND,          // 84 Handover indication
   eQMI_VOICE_CONFERENCE_INFO_IND,   // 85 Conference info indication
   eQMI_VOICE_CONFERENCE_JOIN_IND,   // 86 Conference join indication
   eQMI_VOICE_CONFERENCE_UPDATE_IND, // 87 Conference update indication
   eQMI_VOICE_EXT_BURST_TYPE_IND,    // 88 Extended burst type indication
   eQMI_VOICE_MT_PAGE_MISS_IND,      // 89 MT page miss indication
   eQMI_VOICE_CC_RESULT_INFO_IND,    // 90 Call control result info indication

   eQMI_VOICE_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageVoice validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageVoice msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_VOICE_INDICATION_REG)
   ||   (msgID >= eQMI_VOICE_GET_MESSAGES && msgID <= eQMI_VOICE_CALL_ANSWER)
   ||   (msgID >= eQMI_VOICE_GET_CALL_INFO && msgID <= eQMI_VOICE_GET_ALL_STATUS)
   ||   (msgID >= eQMI_VOICE_MANAGE_CALLS && msgID < eQMI_VOICE_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageUIM Enumeration
//    QMI UIM Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageUIM
{
   eQMI_UIM_ENUM_BEGIN = -1, 

   eQMI_UIM_RESET,                     // 00 Reset

   eQMI_UIM_GET_MESSAGES = 30,            // 30 Get supported messages
   eQMI_UIM_GET_FIELDS,                   // 31 Get supported fields
   eQMI_UIM_READ_TRANSPARENT,             // 32 Read data
   eQMI_UIM_READ_TRANSPARENT_IND = 32,    // 32 Read data indication
   eQMI_UIM_READ_RECORD,                  // 33 Read one or more records
   eQMI_UIM_READ_RECORD_IND = 33,         // 33 Read records indication
   eQMI_UIM_WRITE_TRANSPARENT,            // 34 Write data
   eQMI_UIM_WRITE_TRANSPARENT_IND = 34,   // 34 Write data indication
   eQMI_UIM_WRITE_RECORD,                 // 35 Write a record
   eQMI_UIM_WRITE_RECORD_IND = 35,        // 35 Write a record indication
   eQMI_UIM_GET_FILE_ATTRIBUTES,          // 36 Get file attributes
   eQMI_UIM_GET_FILE_ATTRIBUTES_IND = 36, // 36 Get file attributes indication
   eQMI_UIM_SET_PIN_PROTECTION,           // 37 Set PIN protection
   eQMI_UIM_SET_PIN_PROTECTION_IND = 37,  // 37 Set PIN protection indication
   eQMI_UIM_VERITFY_PIN,                  // 38 Verify PIN 
   eQMI_UIM_VERITFY_PIN_IND = 38,         // 38 Verify PIN indication
   eQMI_UIM_UNBLOCK_PIN,                  // 39 Unblock PIN
   eQMI_UIM_UNBLOCK_PIN_IND = 39,         // 39 Unblock PIN indication
   eQMI_UIM_CHANGE_PIN,                   // 40 Change PIN
   eQMI_UIM_CHANGE_PIN_IND = 40,          // 40 Change PIN indication
   eQMI_UIM_DEPERSONALIZATION,            // 41 Depersonalization
   eQMI_UIM_REFRESH_REGISTER,             // 42 Refresh register
   eQMI_UIM_REFRESH_OK,                   // 43 Validate refresh
   eQMI_UIM_REFRESH_COMPLETE,             // 44 Complete refresh
   eQMI_UIM_GET_LAST_REFRESH_EVENT,       // 45 Get last refresh event
   eQMI_UIM_EVENT_REGISTRATION,           // 46 Register for indications
   eQMI_UIM_GET_CARD_STATUS,              // 47 Get card status
   eQMI_UIM_POWER_DOWN,                   // 48 Power down
   eQMI_UIM_POWER_UP,                     // 49 Power up
   eQMI_UIM_CARD_STATUS_IND,              // 50 Card status indication
   eQMI_UIM_REFRESH_IND,                  // 51 Refresh indication
   eQMI_UIM_AUTHENTICATE,                 // 52 Authenticate
   eQMI_UIM_AUTHENTICATE_IND = 52,        // 52 Authenticate indication
   eQMI_UIM_CLOSE_SESSION,                // 53 Close session
   eQMI_UIM_GET_SERVICE_STATUS,           // 54 Get service status
   eQMI_UIM_SET_SERVICE_STATUS,           // 55 Set service status
   eQMI_UIM_CHANGE_PROVISIONING,          // 56 Change provisioning   
   eQMI_UIM_GET_LABEL,                    // 57 Get label 
   eQMI_UIM_GET_CONFIG,                   // 58 Get configuration
   eQMI_UIM_SEND_ADPU,                    // 59 Send ADPU
   eQMI_UIM_SEND_ADPU_IND = 59,           // 59 Send ADPU indication
   eQMI_UIM_SAP_CONNECTION,               // 60 SAP connection
   eQMI_UIM_SAP_REQUEST,                  // 61 SAP request
   eQMI_UIM_SAP_CONNECTION_IND,           // 62 SAP connection indication
   eQMI_UIM_LOGICAL_CHANNEL,              // 63 Logical channel
   eQMI_UIM_SUBSCRIPTION_OK,              // 64 OK to publish subscription?
   eQMI_UIM_GET_ATR,                      // 65 Get ATR
   eQMI_UIM_SESSION_CLOSED_IND,           // 67 Session closed indication
   eQMI_UIM_REGISTER_REFRESH_ALL,         // 68 Register for all refresh 
   eQMI_UIM_SET_FILE_STATUS,              // 69 Set file status 

   eQMI_UIM_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageUIM validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageUIM msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_UIM_RESET)
   ||   (msgID >= eQMI_UIM_GET_MESSAGES && msgID < eQMI_UIM_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessagePBM Enumeration
//    QMI PBM Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessagePBM
{
   eQMI_PBM_ENUM_BEGIN = -1, 

   eQMI_PBM_INDICATION_REG = 1,     // 01 Set indication registration state
   eQMI_PBM_GET_CAPABILITIES,       // 02 Get phonebook capabilities by type
   eQMI_PBM_GET_ALL_CAPABILITIES,   // 03 Get all phonebook capabilities
   eQMI_PBM_READ_RECORDS,           // 04 Read phonebook records
   eQMI_PBM_READ_RECORD_IND = 4,    // 04 Read phonebook record indication
   eQMI_PBM_WRITE_RECORD,           // 05 Add/modify a phonebook record
   eQMI_PBM_DELETE_RECORD,          // 06 Delete a phonebook record
   eQMI_PBM_DELETE_ALL_RECORDS,     // 07 Delete all phonebook records
   eQMI_PBM_SEARCH_RECORDS,         // 08 Search phonebook records
   eQMI_PBM_RECORD_UPDATE_IND,      // 09 Phonebook record update indication
   eQMI_PBM_REFRESH_IND,            // 10 Phonebook refresh indication
   eQMI_PBM_READY_IND,              // 11 Phonebook ready indication
   eQMI_PBM_EMERGENCY_LIST_IND,     // 12 Phonebook emergency list indication
   eQMI_PBM_ALL_READY_IND,          // 13 All phonebooks ready indication
   eQMI_PBM_GET_EMERGENCY_LIST,     // 14 Get phonebook emergency list
   eQMI_PBM_GET_ALL_GROUPS,         // 15 Get all phonebook groups
   eQMI_PBM_SET_GROUP_INFO,         // 16 Set phonebook group info
   eQMI_PBM_GET_STATE,              // 17 Get phonebook state
   eQMI_PBM_READ_ALL_HIDDEN_RECS,   // 18 Read all hidden phonebook records
   eQMI_PBM_HIDDEN_REC_STATUS_IND,  // 19 Hidden record status indication
   eQMI_PBM_GET_NEXT_EMPTY_REC_ID,  // 20 Get next empty record ID
   eQMI_PBM_GET_NEXT_REC_ID,        // 21 Get next non-empty record ID
   eQMI_PBM_GET_AAS_LIST,           // 22 Get AAS list
   eQMI_PBM_SET_AAS,                // 23 Add/modify/delete AAS entry
   eQMI_PBM_UPDATE_AAS_IND,         // 24 AAS change indication
   eQMI_PBM_UPDATE_GAS_IND,         // 25 GAS change indication
   eQMI_PBM_BIND_SUBSCRIPTION,      // 26 Bind client to specific subscription
   eQMI_PBM_GET_SUBSCRIPTION,       // 27 Get subscription client is bound to
   eQMI_PBM_SET_CAPS_READ_OP,       // 28 ADN set capabilities read operation
   eQMI_PBM_SET_CAPS_READ_IND = 28, // 28 ADN set caps read op indication
   eQMI_PBM_EX_READ_RECORDS,        // 29 Read phonebook records
   eQMI_PBM_EX_READ_RECORD_IND = 29,// 29 Read phonebook record indication
   eQMI_PBM_EX_WRITE_RECORD,        // 30 Add/modify a phonebook record
   eQMI_PBM_EX_SEARCH_RECORDS,      // 31 Search phonebook records
   eQMI_PBM_EX_READ_ALL_HIDDEN_RECS,// 32 Read all hidden phonebook records
   eQMI_PBM_SIM_INIT_DONE_IND,      // 33 SIM initialization done indication
   eQMI_PBM_READ_UNDC_RECS,         // 34 Read undecoded phonebook records
   eQMI_PBM_READ_UNDC_RECS_IND = 34,// 34 Read undecoded phonebook record ind

   eQMI_PBM_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessagePBM validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessagePBM msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_PBM_INDICATION_REG && msgID < eQMI_PBM_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageLOC Enumeration
//    QMI LOC Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageLOC
{
   eQMI_LOC_ENUM_BEGIN = -1, 

   eQMI_LOC_GET_MESSAGES = 30,      // 030 Get supported messages
   eQMI_LOC_GET_FIELDS,             // 031 Get supported fields
   eQMI_LOC_CLIENT_REVISION,        // 032 Send client revision to service
   eQMI_LOC_REGISTER_EVENTS,        // 033 Register for events/indications
   eQMI_LOC_START,                  // 034 Start GPS session
   eQMI_LOC_STOP,                   // 035 Start GPS session
   eQMI_LOC_POSITION_REPORT_IND,    // 036 Position report indication
   eQMI_LOC_GNSS_SAT_INFO_IND,      // 037 GNSS satellite info indication
   eQMI_LOC_NMEA_IND,               // 038 NMEA sentence indication
   eQMI_LOC_NETWORK_REQ_IND,        // 039 Network initiated request indication
   eQMI_LOC_INJECT_TIME_REQ_IND,    // 040 Inject time request indication
   eQMI_LOC_INJECT_ORBITS_REQ_IND,  // 041 Inject predicted orbits req ind
   eQMI_LOC_INJECT_POS_REQ_IND,     // 042 Inject position request indication
   eQMI_LOC_ENGINE_STATE_IND,       // 043 Engine state indication
   eQMI_LOC_FIX_SESSION_STATE_IND,  // 044 Fi session state indication
   eQMI_LOC_WIFI_REQ_IND,           // 045 Wi-Fi request indication
   eQMI_LOC_SENSOR_DATA_IND,        // 046 Sensor streaming ready status ind
   eQMI_LOC_INJECT_TIME_SYNC_IND,   // 047 Inject time sync data indication
   eQMI_LOC_SPI_STREAM_REQ_IND,     // 048 SPI streaming reports req indication
   eQMI_LOC_SVR_CONNECTION_REQ_IND, // 049 Server connection req indication
   eQMI_LOC_GET_REV_REQ,            // 050 Get service revision
   eQMI_LOC_GET_REV_REQ_IND = 50,   // 050 Get service revision indication
   eQMI_LOC_GET_FIX_CRIT,           // 051 Get fix criteria
   eQMI_LOC_GET_FIX_CRIT_IND = 51,  // 051 Get fix criteria indication
   eQMI_LOC_NI_USER_RSP,            // 052 Network initiated user response
   eQMI_LOC_NI_USER_RSP_IND = 52,   // 052 Network initiated user response ind
   eQMI_LOC_INJECT_ORBITS,          // 053 Inject predicted orbits data
   eQMI_LOC_INJECT_ORBITS_IND = 53, // 053 Inject predicted orbits indication
   eQMI_LOC_GET_ORBIT_SRC,          // 054 Get predicted orbits data source
   eQMI_LOC_GET_ORBIT_SRC_IND = 54, // 054 Get predicted orbits data source ind
   eQMI_LOC_GET_ORBIT_VLD,          // 055 Get predicted orbits data validity
   eQMI_LOC_GET_ORBIT_VLD_IND = 55, // 055 Get predicted orbits validity ind
   eQMI_LOC_INJECT_UTC,             // 056 Inject UTC time
   eQMI_LOC_INJECT_UTC_IND = 56,    // 056 Inject UTC time indication
   eQMI_LOC_INJECT_POS,             // 057 Inject position
   eQMI_LOC_INJECT_POS_IND = 57,    // 057 Inject position indication
   eQMI_LOC_SET_ENG_LOCK,           // 058 Set engine lock
   eQMI_LOC_SET_ENG_LOCK_IND = 58,  // 058 Set engine lock indication
   eQMI_LOC_GET_ENG_LOCK,           // 059 Get engine lock
   eQMI_LOC_GET_ENG_LOCK_IND = 59,  // 059 Get engine lock indication
   eQMI_LOC_SET_SBAS_CFG,           // 060 Set SBAS config
   eQMI_LOC_SET_SBAS_CFG_IND = 60,  // 060 Set SBAS config indication
   eQMI_LOC_GET_SBAS_CFG,           // 061 Get SBAS config
   eQMI_LOC_GET_SBAS_CFG_IND = 61,  // 061 Get SBAS config indication
   eQMI_LOC_SET_NMEA_TYPS,          // 062 Set NMEA sentence types
   eQMI_LOC_SET_NMEA_TYPS_IND = 62, // 062 Set NMEA sentence types indication
   eQMI_LOC_GET_NMEA_TYPS,          // 063 Get NMEA sentence types
   eQMI_LOC_GET_NMEA_TYPS_IND = 63, // 063 Get NMEA sentence types indication
   eQMI_LOC_SET_LPM_CFG,            // 064 Set low power mode config
   eQMI_LOC_SET_LPM_CFG_IND = 64,   // 064 Set low power mode config indication
   eQMI_LOC_GET_LPM_CFG,            // 065 Get low power mode config
   eQMI_LOC_GET_LPM_CFG_IND = 65,   // 065 Get low power mode config indication
   eQMI_LOC_SET_SERVER,             // 066 Set A-GPS server
   eQMI_LOC_SET_SERVER_IND = 66,    // 066 Set A-GPS server indication
   eQMI_LOC_GET_SERVER,             // 067 Set A-GPS server
   eQMI_LOC_GET_SERVER_IND = 67,    // 067 Set A-GPS server indication
   eQMI_LOC_DEL_ASST_DATA,          // 068 Delete assistance data
   eQMI_LOC_DEL_ASST_DATA_IND = 68, // 068 Delete assistance data indication
   eQMI_LOC_SET_XTRA_T,             // 069 Set XTRA_T session control 
   eQMI_LOC_SET_XTRA_T_IND = 69,    // 069 Set XTRA_T session control indication
   eQMI_LOC_GET_XTRA_T,             // 070 Get XTRA_T session control 
   eQMI_LOC_GET_XTRA_T_IND = 70,    // 070 Get XTRA_T session control indication
   eQMI_LOC_INJECT_WIFI,            // 071 Inject Wi-Fi info
   eQMI_LOC_INJECT_WIFI_IND = 71,   // 071 Inject Wi-Fi info indication
   eQMI_LOC_NOTIFY_WIFI,            // 072 Notify server of Wi-Fi status
   eQMI_LOC_NOTIFY_WIFI_IND = 72,   // 072 Notify server of Wi-Fi status ind
   eQMI_LOC_GET_REG_EVENTS,         // 073 Get registered event status
   eQMI_LOC_GET_REG_EVENTS_IND = 73,// 073 Get registered event status ind
   eQMI_LOC_SET_OP_MODE,            // 074 Set operation mode
   eQMI_LOC_SET_OP_MODE_IND = 74,   // 074 Set operation mode indication
   eQMI_LOC_GET_OP_MODE,            // 075 Get operation mode
   eQMI_LOC_GET_OP_MODE_IND = 75,   // 075 Get operation mode indication
   eQMI_LOC_SET_SPI_STATUS,         // 076 Set SPI status
   eQMI_LOC_SET_SPI_STATUS_IND = 76,// 076 Set SPI status indication
   eQMI_LOC_INJECT_SENSOR,          // 077 Inject sensor data
   eQMI_LOC_INJECT_SENSOR_IND = 77, // 077 Inject sensor data indication
   eQMI_LOC_INJ_TIME_SYNC,          // 078 Inject time sync data
   eQMI_LOC_INJ_TIME_SYNC_IND = 78, // 078 Inject time sync data indication
   eQMI_LOC_SET_CRADLE,             // 079 Set cradle mount config
   eQMI_LOC_SET_CRADLE_IND = 79,    // 079 Set cradle mount config indication
   eQMI_LOC_GET_CRADLE,             // 080 Get cradle mount config
   eQMI_LOC_GET_CRADLE_IND = 80,    // 080 Get cradle mount config indication
   eQMI_LOC_SET_EXT_POWER,          // 081 Set external power config
   eQMI_LOC_SET_EXT_POWER_IND = 81, // 081 Set external power config indication
   eQMI_LOC_GET_EXT_POWER,          // 082 Get external power config
   eQMI_LOC_GET_EXT_POWER_IND = 82, // 082 Get external power config indication
   eQMI_LOC_INFORM_CONN,            // 083 Inform service of connection status
   eQMI_LOC_INFORM_CONN_IND = 83,   // 083 Inform connection status indication
   eQMI_LOC_SET_PROTO_CFG,          // 084 Set protocol config
   eQMI_LOC_SET_PROTO_CFG_IND = 84, // 084 Set protocol config indication
   eQMI_LOC_GET_PROTO_CFG,          // 085 Get protocol config
   eQMI_LOC_GET_PROTO_CFG_IND = 85, // 085 Get protocol config indication
   eQMI_LOC_SET_SENSOR_CFG,         // 086 Set sensor control config
   eQMI_LOC_SET_SENSOR_CFG_IND = 86,// 086 Set sensor control config indication
   eQMI_LOC_GET_SENSOR_CFG,         // 087 Get sensor control config
   eQMI_LOC_GET_SENSOR_CFG_IND = 87,// 087 Get sensor control config indication
   eQMI_LOC_SET_SENSOR_PRP,         // 088 Set sensor properties
   eQMI_LOC_SET_SENSOR_PRP_IND = 88,// 088 Set sensor properties indication
   eQMI_LOC_GET_SENSOR_PRP,         // 089 Get sensor properties
   eQMI_LOC_GET_SENSOR_PRP_IND = 89,// 089 Get sensor properties indication
   eQMI_LOC_SET_SENSOR_PRF,         // 090 Set sensor performance control
   eQMI_LOC_SET_SENSOR_PRF_IND = 90,// 090 Set sensor performance control ind
   eQMI_LOC_GET_SENSOR_PRF,         // 091 Get sensor performance control
   eQMI_LOC_GET_SENSOR_PRF_IND = 91,// 091 Get sensor performance control ind
   eQMI_LOC_INJ_SUPL_CERT,          // 092 Inject SUPL certificate
   eQMI_LOC_INJ_SUPL_CERT_IND = 92, // 092 Inject SUPL certificate indication
   eQMI_LOC_DEL_SUPL_CERT,          // 093 Delete SUPL certificate
   eQMI_LOC_DEL_SUPL_CERT_IND = 93, // 093 Delete SUPL certificate indication
   eQMI_LOC_SET_ENGINE_CFG,         // 094 Set position engine config
   eQMI_LOC_SET_ENGINE_CFG_IND = 94,// 094 Set position engine config ind
   eQMI_LOC_GET_ENGINE_CFG,         // 095 Get position engine config
   eQMI_LOC_GET_ENGINE_CFG_IND = 95,// 095 Get position engine config ind
   eQMI_LOC_GEOFENCE_NOTIF_IND,     // 096 Geofence notification indication
   eQMI_LOC_GEOFENCE_ALERT_IND,     // 097 Geofence alert indication
   eQMI_LOC_GEOFENCE_BREACH_IND,    // 098 Geofence breach indication
   eQMI_LOC_ADD_GEOFENCE,           // 099 Add circular geofence
   eQMI_LOC_ADD_GEOFENCE_IND = 99,  // 099 Add circular geofence indication
   eQMI_LOC_DEL_GEOFENCE,           // 100 Delete geofence
   eQMI_LOC_DEL_GEOFENCE_IND = 100, // 100 Delete geofence indication
   eQMI_LOC_QRY_GEOFENCE,           // 101 Query geofence
   eQMI_LOC_QRY_GEOFENCE_IND = 101, // 101 Query geofence indication
   eQMI_LOC_EDIT_GEOFENCE,          // 102 Edit geofence 
   eQMI_LOC_EDIT_GEOFENCE_IND = 102,// 102 Edit geofence indication
   eQMI_LOC_GET_BEST_POS,           // 103 Get best available position
   eQMI_LOC_GET_BEST_POS_IND = 103, // 103 Get best available position ind
   eQMI_LOC_INJ_MOTION,             // 104 Inject motion data
   eQMI_LOC_INJ_MOTION_IND = 104,   // 104 Inject motion data indication
   eQMI_LOC_GET_NI_GF_IDS,          // 105 Get NI geofence ID list
   eQMI_LOC_GET_NI_GF_IDS_IND = 105,// 105 Get NI geofence ID list indication
   eQMI_LOC_INJ_GSM_CELL,           // 106 Inject GSM cell info
   eQMI_LOC_INJ_GSM_CELL_IND = 106, // 106 Inject GSM cell info indication
   eQMI_LOC_INJ_NI_MSG,             // 107 Inject network initiated message
   eQMI_LOC_INJ_NI_MSG_IND = 107,   // 107 Inject NI message indication
   eQMI_LOC_WWAN_OOS,               // 108 Notify WWAN is now OOS
   eQMI_LOC_WWAN_OOS_IND = 108,     // 108 Notify WWAN is now OOS indication
   eQMI_PEDOMETER_CTRL_IND,         // 109 Pedometer control indication
   eQMI_MOTION_DATA_CTRL_IND,       // 110 Motion data control indication
   eQMI_LOC_INJ_PEDOMETER,          // 111 Inject pedometer data
   eQMI_LOC_INJ_PEDOMETER_IND = 111,// 111 Inject pedometer data indication
   eQMI_LOC_INJ_WCDMA_CI,           // 112 Inject WCDMA cell info
   eQMI_LOC_INJ_WCDMA_CI_IND = 112, // 112 Inject WCDMA cell info indication
   eQMI_LOC_INJ_TDSCDMA,            // 113 Inject TD-SCDMA cell info
   eQMI_LOC_INJ_TDSCDMA_IND = 113,  // 113 Inject TD-SCDMA cell info indication
   eQMI_LOC_INJ_SUBS_ID,            // 114 Inject subscriber ID
   eQMI_LOC_INJ_SUBS_ID_IND = 114,  // 114 Inject subscriber ID indication

   eQMI_LOC_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageLOC validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageLOC msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_LOC_GET_MESSAGES && msgID < eQMI_LOC_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageSAR Enumeration
//    QMI SAR Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageSAR
{
   eQMI_SAR_ENUM_BEGIN = -1, 

   eQMI_SAR_SET_RF_SAR_STATE = 1,   // 01 Set the RF SAR state
   eQMI_SAR_GET_RF_SAR_STATE,       // 02 Get the RF SAR state

   eQMI_SAR_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageSAR validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageSAR msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_SAR_SET_RF_SAR_STATE && msgID < eQMI_SAR_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageRMTFS Enumeration
//    QMI Remote Filesystem Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageRMTFS
{
   eQMI_RMTFS_ENUM_BEGIN = -1, 

   eQMI_RMTFS_OPEN = 1,             // 01 Request an open 
   eQMI_RMTFS_CLOSE,                // 02 Request a close
   eQMI_RMTFS_IO_VECTOR,            // 03 Request an I/O vector operation
   eQMI_RMTFS_ALLOC_BUFFER,         // 04 Allocate a buffer
   eQMI_RMTFS_GET_DEV_ERROR,        // 05 Return device error for last request
   eQMI_RMTFS_FORCE_SYNC_IND,       // 06 Force sync indication

   eQMI_RMTFS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageRMTFS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageRMTFS msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_RMTFS_OPEN && msgID < eQMI_RMTFS_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageWDA Enumeration
//    QMI Qualcomm Wireless Data Addministrative Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageWDA
{
   eQMI_WDA_ENUM_BEGIN = -1, 

   eQMI_WDA_GET_MESSAGES = 30,             // 30 Get supported messages
   eQMI_WDA_GET_FIELDS,                    // 31 Get supported fields
   eQMI_WDA_SET_DATA_FORMAT,               // 32 
   eQMI_WDA_GET_DATA_FORMAT,               // 33 
   eQMI_WDA_ENABLE_PKT_FILTER,             // 34
   eQMI_WDA_DISABLE_PKT_FILTER,            // 35
   eQMI_WDA_GET_PKT_FILTER_STATE,          // 36
   eQMI_WDA_ADD_PKT_FILTER_RULE,           // 37
   eQMI_WDA_DELETE_PKT_FILTER_RULE,        // 38
   eQMI_WDA_GET_PKT_FILTER_RULE_HANDLES,   // 39
   eQMI_WDA_GET_PKT_FILTER_RULE,           // 40
   eQMI_WDA_SET_LOOPBACK_STATE,            // 41
   eQMI_WDA_GET_LOOPBACK_STATE,            // 42

   eQMI_WDA_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageWDA validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageWDA msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_WDA_GET_MESSAGES && msgID < eQMI_WDA_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageQCMAP Enumeration
//    QMI Qualcomm Mobile Access Point Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageQCMAP
{
   eQMI_QCMAP_ENUM_BEGIN = -1, 

   eQMI_QCMAP_ENABLE = 32,                   // 32 
   eQMI_QCMAP_DISABLE,                       // 33 
   eQMI_QCMAP_BRING_UP_WWAN,                 // 34
   eQMI_QCMAP_BRING_UP_WWAN_IND = 34,        // 34
   eQMI_QCMAP_TEAR_DOWN_WWAN,                // 35
   eQMI_QCMAP_TEAR_DOWN_WWAN_IND = 35,       // 35
   eQMI_QCMAP_GET_WWAN_STATUS,               // 36
   eQMI_QCMAP_GET_IPSEC_VPN_PASSTHROUGH,     // 37
   eQMI_QCMAP_SET_IPSEC_VPN_PASSTHROUGH,     // 38
   eQMI_QCMAP_GET_PPTP_VPN_PASSTHROUGH,      // 39
   eQMI_QCMAP_SET_PPTP_VPN_PASSTHROUGH,      // 40
   eQMI_QCMAP_GET_L2TP_VPN_PASSTHROUGH,      // 41
   eQMI_QCMAP_SET_L2TP_VPN_PASSTHROUGH,      // 42
   eQMI_QCMAP_GET_DYNAMIC_NAT_ENTRY_TO,      // 43
   eQMI_QCMAP_SET_DYNAMIC_NAT_ENTRY_TO,      // 44
   eQMI_QCMAP_ADD_SNAT_ENTRY,                // 45
   eQMI_QCMAP_DELETE_SNAT_ENTRY,             // 46
   eQMI_QCMAP_GET_SNAT_ENTRIES,              // 47
   eQMI_QCMAP_SET_DMZ,                       // 48
   eQMI_QCMAP_DELETE_DMZ,                    // 49
   eQMI_QCMAP_GET_DMZ,                       // 50
   eQMI_QCMAP_GET_WWAN_CONFIG,               // 51
   eQMI_QCMAP_ENABLE_FIREWALL_SETTING,       // 52
   eQMI_QCMAP_GET_FIREWALL_SETTING,          // 53
   eQMI_QCMAP_DISABLE_FIREWALL_SETTING,      // 54
   eQMI_QCMAP_ADD_FIREWALL_CONFIG,           // 55
   eQMI_QCMAP_GET_FIREWALL_CONFIG,           // 56
   eQMI_QCMAP_DELETE_FIREWALL_CONFIG,        // 57
   eQMI_QCMAP_WWAN_STATUS_IND_REG,           // 58
   eQMI_QCMAP_STATION_MODE_ENABLE,           // 59
   eQMI_QCMAP_STATION_MODE_DISABLE,          // 60
   eQMI_QCMAP_GET_STATION_MODE,              // 61
   eQMI_QCMAP_WWAN_STATUS_IND,               // 62
   eQMI_QCMAP_ADD_EXT_FIREWALL_CONFIG,       // 63
   eQMI_QCMAP_GET_EXT_FIREWALL_CONFIG,       // 64
   eQMI_QCMAP_GET_FIREWALL_HANDLES,          // 65
   eQMI_QCMAP_CHANGE_NAT_TYPE,               // 66
   eQMI_QCMAP_GET_NAT_TYPE,                  // 67

   eQMI_QCMAP_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageQCMAP validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageQCMAP msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_QCMAP_ENABLE && msgID < eQMI_QCMAP_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageCOEX Enumeration
//    QMI COEX Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageCOEX
{
   eQMI_COEX_ENUM_BEGIN = -1, 

   eQMI_COEX_RESET,                    // 00 Reset the PDC service

   eQMI_COEX_REG_INDICATIONS = 32,     // 32 Register for indications
   eQMI_COEX_WWAN_STATE_IND,           // 33 WWAN state indication
   eQMI_COEX_GET_WWAN_STATE,           // 34 Get WWAN state
   eQMI_COEX_SET_WLAN_STATE,           // 35 Set WLAN state
   eQMI_COEX_GET_WLAN_SCAN_STATE,      // 36 Get WLAN scan state
   eQMI_COEX_GET_WLAN_CONN_STATE,      // 37 Get WLAN connection state
   eQMI_COEX_SET_POLICY,               // 38 Set policy
   eQMI_COEX_GET_POLICY,               // 39 Get policy

   eQMI_COEX_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageCOEX validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageCOEX msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_COEX_RESET)
   ||   (msgID >= eQMI_COEX_REG_INDICATIONS && msgID < eQMI_COEX_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessagePDC Enumeration
//    QMI PDC Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessagePDC
{
   eQMI_PDC_ENUM_BEGIN = -1, 

   eQMI_PDC_RESET,                     // 00 Reset the PDC service

   eQMI_PDC_REG_INDICATIONS = 32,      // 32 Register for indications
   eQMI_PDC_CFG_CHANGE_IND,            // 33 Config change indication
   eQMI_PDC_GET_CFG,                   // 34 Get selected config 
   eQMI_PDC_GET_CFG_IND = 34,          // 34 Get selected config indication
   eQMI_PDC_SET_CFG,                   // 35 Set selected config 
   eQMI_PDC_SET_CFG_IND = 35,          // 35 Set selected config indication
   eQMI_PDC_LIST_CFGS,                 // 36 List configs
   eQMI_PDC_LIST_CFGS_IND = 36,        // 36 List configs indication
   eQMI_PDC_DEL_CFG,                   // 37 Delete config 
   eQMI_PDC_DEL_CFG_IND = 37,          // 37 Delete config indication
   eQMI_PDC_LOAD_CFG,                  // 38 Load config 
   eQMI_PDC_LOAD_CFG_IND = 38,         // 38 Load config indication
   eQMI_PDC_ACTIVATE_CFG,              // 39 Activate config 
   eQMI_PDC_ACTIVATE_CFG_IND = 39,     // 39 Activate config indication
   eQMI_PDC_GET_CFG_INFO,              // 40 Get config info
   eQMI_PDC_GET_CFG_INFO_IND = 40,     // 40 Get config info indication
   eQMI_PDC_GET_CFG_LIMITS,            // 41 Get config limits
   eQMI_PDC_GET_CFG_LIMITS_IND = 41,   // 41 Get config limits indication
   eQMI_PDC_GET_DEF_CFG_INFO,          // 42 Get default config info
   eQMI_PDC_GET_DEF_CFG_INFO_IND = 42, // 42 Get default config info indication
   eQMI_PDC_DEACTIVATE_CFG,            // 43 Deactivate active config
   eQMI_PDC_DEACTIVATE_CFG_IND = 43,   // 43 Deactivate active config ind

   eQMI_PDC_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessagePDC validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessagePDC msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_PDC_RESET)
   ||   (msgID >= eQMI_PDC_REG_INDICATIONS && msgID < eQMI_PDC_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageSTX Enumeration
//    QMI STX Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageSTX
{
   eQMI_STX_ENUM_BEGIN = -1, 

   eQMI_STX_TECH_TX_STATUS = 32,       // 32 Technology TX status
   eQMI_STX_UPDATE_TX_POWER_LIMIT,     // 33 Update TX power limit
   eQMI_STX_TX_STATE_UPDATE_IND,       // 34 TX state update indication
   eQMI_STX_TX_STATE_CLEAR_IND,        // 34 TX state clear indication
   eQMI_STX_SET_TECH_POWER_LUT,        // 36 Set technology power LUT
   eQMI_STX_TX_POWER_LIMIT_IND,        // 37 TX power limit state

   eQMI_STX_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageSTX validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageSTX msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_STX_TECH_TX_STATUS && msgID < eQMI_STX_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageRFRPE Enumeration
//    QMI RFRPE Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageRFRPE
{
   eQMI_RFRPE_ENUM_BEGIN = -1, 

   eQMI_RFRPE_SET_RFM_SCENARIO = 32,   // 32 Set RFM scenario
   eQMI_RFRPE_GET_RFM_SCENARIO,        // 33 Get RFM scenario
   eQMI_RFRPE_GET_TABLE_REVISION,      // 34 Get provisioned table revision

   eQMI_RFRPE_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageRFRPE validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageRFRPE msgID )
{
   bool retVal = false;
   if (msgID >= eQMI_RFRPE_SET_RFM_SCENARIO && msgID < eQMI_RFRPE_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageCAT Enumeration
//    QMI CAT Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageCAT
{
   eQMI_CAT_ENUM_BEGIN = -1, 

   eQMI_CAT_RESET,                  // 00 Reset CAT service state variables
   eQMI_CAT_SET_EVENT,              // 01 Set new message report conditions
   eQMI_CAT_EVENT_IND = 1,          // 01 New message report indication

   eQMI_CAT_GET_MESSAGES = 30,      // 30 Get supported messages
   eQMI_CAT_GET_FIELDS,             // 31 Get supported fields
   eQMI_CAT_GET_STATE,              // 32 Get service state information
   eQMI_CAT_SEND_TERMINAL,          // 33 Send a terminal response
   eQMI_CAT_SEND_ENVELOPE,          // 34 Send an envelope command
   eQMI_CAT_GET_EVENT,              // 35 Get last message report
   eQMI_CAT_SEND_DECODED_TERMINAL,  // 36 Send a decoded terminal response
   eQMI_CAT_SEND_DECODED_ENVELOPE,  // 37 Send a decoded envelope command
   eQMI_CAT_EVENT_CONFIRMATION,     // 38 Event confirmation
   eQMI_CAT_SCWS_OPEN_CHANNEL,      // 39 Open a channel to a SCWS
   eQMI_CAT_SCWS_OPEN_IND = 39,     // 39 SCWS open channel indication
   eQMI_CAT_SCWS_CLOSE_CHANNEL,     // 40 Close a channel to a SCWS
   eQMI_CAT_SCWS_CLOSE_IND = 40,    // 40 SCWS close channel indication
   eQMI_CAT_SCWS_SEND_DATA,         // 41 Send data to a SCWS
   eQMI_CAT_SCWS_SEND_IND = 41,     // 41 SCWS send data indication
   eQMI_CAT_SCWS_DATA_AVAILABLE,    // 42 Indicate that data is available
   eQMI_CAT_SCWS_CHANNEL_STATUS,    // 43 Provide channel status
   eQMI_CAT_GET_TERMINAL_PROFILE,   // 44 Get current modem terminal profile
   eQMI_CAT_SET_CONFIG,             // 45 Set configuration
   eQMI_CAT_GET_CONFIG,             // 46 Get configuration

   eQMI_CAT_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageCAT validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageCAT msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_CAT_ENUM_BEGIN && msgID <= eQMI_CAT_EVENT_IND)
   ||   (msgID >= eQMI_CAT_GET_MESSAGES && msgID < eQMI_CAT_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageRMS Enumeration
//    QMI RMS Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageRMS
{
   eQMI_RMS_ENUM_BEGIN = -1, 

   eQMI_RMS_RESET,                  // 00 Reset RMS service state variables

   eQMI_RMS_GET_SMS_WAKE = 32,      // 32 Get SMS wake settings
   eQMI_RMS_SET_SMS_WAKE,           // 33 Set SMS wake settings

   eQMI_RMS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageRMS validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageRMS msgID )
{
   bool retVal = false;
   if ( (msgID == eQMI_RMS_RESET)
   ||   (msgID >= eQMI_RMS_GET_SMS_WAKE && msgID < eQMI_RMS_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIMessageOMA Enumeration
//    QMI OMA-DM Service Type Message ID Enumeration
/*=========================================================================*/
enum eQMIMessageOMA
{
   eQMI_OMA_ENUM_BEGIN = -1, 

   eQMI_OMA_RESET,                  // 00 Reset OMA service state variables
   eQMI_OMA_SET_EVENT,              // 01 Set OMA report conditions
   eQMI_OMA_EVENT_IND = 1,          // 01 OMA report indication

   eQMI_OMA_START_SESSION = 32,     // 32 Start client inititated session
   eQMI_OMA_CANCEL_SESSION,         // 33 Cancel session
   eQMI_OMA_GET_SESSION_INFO,       // 34 Get session information
   eQMI_OMA_SEND_SELECTION,         // 35 Send selection for net inititated msg
   eQMI_OMA_GET_FEATURES,           // 36 Get feature settings
   eQMI_OMA_SET_FEATURES,           // 37 Set feature settings

   eQMI_OMA_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIMessageOMA validity check

PARAMETERS:
   msgID         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIMessageOMA msgID )
{
   bool retVal = false;
   if ( (msgID > eQMI_OMA_ENUM_BEGIN && msgID <= eQMI_OMA_EVENT_IND)
   ||   (msgID >= eQMI_OMA_START_SESSION && msgID < eQMI_OMA_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIResultCode Enumeration
//    QMI Result Code Enumeration
/*=========================================================================*/
enum eQMIResultCode
{
   eQMI_RC_ENUM_BEGIN = -1, 

   eQMI_RC_SUCCESS,           // 00 Success
   eQMI_RC_ERROR,             // 01 Error

   eQMI_RC_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIResultCode validity check

PARAMETERS:
   rc          [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIResultCode rc )
{
   bool retVal = false;
   if (rc > eQMI_RC_ENUM_BEGIN && rc < eQMI_RC_ENUM_END)
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMIErrorCode Enumeration
//    QMI Error Code Enumeration
/*=========================================================================*/
enum eQMIErrorCode
{
   eQMI_ERR_ENUM_BEGIN = -1, 

   eQMI_ERR_NONE,                            // 00
   eQMI_ERR_MALFORMED_MSG,                   // 01
   eQMI_ERR_NO_MEMORY,                       // 02
   eQMI_ERR_INTERNAL,                        // 03    
   eQMI_ERR_ABORTED,                         // 04
   eQMI_ERR_CLIENT_IDS_EXHAUSTED,            // 05
   eQMI_ERR_UNABORTABLE_TRANSACTION,         // 06
   eQMI_ERR_INVALID_CLIENT_ID,               // 07
   eQMI_ERR_NO_THRESHOLDS,                   // 08
   eQMI_ERR_INVALID_HANDLE,                  // 09
   eQMI_ERR_INVALID_PROFILE,                 // 10
   eQMI_ERR_INVALID_PIN_ID,                  // 11
   eQMI_ERR_INCORRECT_PIN,                   // 12
   eQMI_ERR_NO_NETWORK_FOUND,                // 13
   eQMI_ERR_CALL_FAILED,                     // 14
   eQMI_ERR_OUT_OF_CALL,                     // 15
   eQMI_ERR_NOT_PROVISIONED,                 // 16
   eQMI_ERR_MISSING_ARG,                     // 17
   eQMI_ERR_18,                              // 18
   eQMI_ERR_ARG_TOO_LONG,                    // 19
   eQMI_ERR_20,                              // 20
   eQMI_ERR_21,                              // 21
   eQMI_ERR_INVALID_TX_ID,                   // 22
   eQMI_ERR_DEVICE_IN_USE,                   // 23
   eQMI_ERR_OP_NETWORK_UNSUPPORTED,          // 24
   eQMI_ERR_OP_DEVICE_UNSUPPORTED,           // 25
   eQMI_ERR_NO_EFFECT,                       // 26
   eQMI_ERR_NO_FREE_PROFILE,                 // 27
   eQMI_ERR_INVALID_PDP_TYPE,                // 28
   eQMI_ERR_INVALID_TECH_PREF,               // 29
   eQMI_ERR_INVALID_PROFILE_TYPE,            // 30
   eQMI_ERR_INVALID_SERVICE_TYPE,            // 31
   eQMI_ERR_INVALID_REGISTER_ACTION,         // 32
   eQMI_ERR_INVALID_PS_ATTACH_ACTION,        // 33
   eQMI_ERR_AUTHENTICATION_FAILED,           // 34
   eQMI_ERR_PIN_BLOCKED,                     // 35
   eQMI_ERR_PIN_ALWAYS_BLOCKED,              // 36
   eQMI_ERR_UIM_UNINITIALIZED,               // 37
   eQMI_ERR_MAX_QOS_REQUESTS_IN_USE,         // 38
   eQMI_ERR_INCORRECT_FLOW_FILTER,           // 39
   eQMI_ERR_NETWORK_QOS_UNAWARE,             // 40
   eQMI_ERR_INVALID_QOS_ID,                  // 41
   eQMI_ERR_REQUESTED_NUM_UNSUPPORTED,       // 42
   eQMI_ERR_INTERFACE_NOT_FOUND,             // 43
   eQMI_ERR_FLOW_SUSPENDED,                  // 44
   eQMI_ERR_INVALID_DATA_FORMAT,             // 45
   eQMI_ERR_GENERAL,                         // 46
   eQMI_ERR_UNKNOWN,                         // 47
   eQMI_ERR_INVALID_ARG,                     // 48
   eQMI_ERR_INVALID_INDEX,                   // 49
   eQMI_ERR_NO_ENTRY,                        // 50
   eQMI_ERR_DEVICE_STORAGE_FULL,             // 51
   eQMI_ERR_DEVICE_NOT_READY,                // 52
   eQMI_ERR_NETWORK_NOT_READY,               // 53
   eQMI_ERR_WMS_CAUSE_CODE,                  // 54
   eQMI_ERR_WMS_MESSAGE_NOT_SENT,            // 55
   eQMI_ERR_WMS_MESSAGE_DELIVERY_FAILURE,    // 56
   eQMI_ERR_WMS_INVALID_MESSAGE_ID,          // 57
   eQMI_ERR_WMS_ENCODING,                    // 58
   eQMI_ERR_AUTHENTICATION_LOCK,             // 59
   eQMI_ERR_INVALID_TRANSITION,              // 60
   eQMI_ERR_61,                              // 61
   eQMI_ERR_62,                              // 62
   eQMI_ERR_63,                              // 63
   eQMI_ERR_64,                              // 64
   eQMI_ERR_SESSION_INACTIVE,                // 65
   eQMI_ERR_SESSION_INVALID,                 // 66
   eQMI_ERR_SESSION_OWNERSHIP,               // 67
   eQMI_ERR_INSUFFICIENT_RESOURCES,          // 68
   eQMI_ERR_DISABLED,                        // 69
   eQMI_ERR_INVALID_OPERATION,               // 70
   eQMI_ERR_INVALID_QMI_CMD,                 // 71
   eQMI_ERR_WMS_TPDU_TYPE,                   // 72
   eQMI_ERR_WMS_SMSC_ADDR,                   // 73
   eQMI_ERR_INFO_UNAVAILABLE,                // 74
   eQMI_ERR_SEGMENT_TOO_LONG,                // 75
   eQMI_ERR_SEGMENT_ORDER,                   // 76
   eQMI_ERR_BUNDLING_NOT_SUPPORTED,          // 77
   eQMI_ERR_78,                              // 78
   eQMI_ERR_POLICY_MISMATCH,                 // 79
   eQMI_ERR_SIM_FILE_NOT_FOUND,              // 80
   eQMI_ERR_EXTENDED_EXTERNAL,               // 81
   eQMI_ERR_ACCESS_DENIED,                   // 82
   eQMI_ERR_HARDWARE_RESTRICTED,             // 83
   eQMI_ERR_ACK_NOT_SENT,                    // 84

   eQMI_ERR_INCOMPATIBLE_STATE = 90,         // 90
   eQMI_ERR_FDN_RESTRICT,                    // 91
   eQMI_ERR_SUPS_FAILURE_CAUSE,              // 92
   eQMI_ERR_NO_RADIO,                        // 93
   eQMI_ERR_NOT_SUPPORTED,                   // 94

   eQMI_ERR_CARD_CALL_CONTROL_FAILED = 96,   // 96
   eQMI_ERR_NETWORK_ABORTED,                 // 97

   eQMI_ERR_CAT_EVT_REG_FAILED,              // 61441
   eQMI_ERR_CAT_INVALID_TR,                  // 61442
   eQMI_ERR_CAT_INVALID_ENV_CMD,             // 61443
   eQMI_ERR_CAT_ENV_CMD_BUSY,                // 61444
   eQMI_ERR_CAT_ENV_CMD_FAIL,                // 61445

   eQMI_ERR_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMIErrorCode validity check

PARAMETERS:
   ec          [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMIErrorCode ec )
{
   bool retVal = false;
   if ( (ec > eQMI_ERR_ENUM_BEGIN && ec <= eQMI_ERR_ACK_NOT_SENT)
   ||   (ec >= eQMI_ERR_INCOMPATIBLE_STATE && ec <= eQMI_ERR_NOT_SUPPORTED)
   ||   (ec == eQMI_ERR_CARD_CALL_CONTROL_FAILED)
   ||   (ec == eQMI_ERR_NETWORK_ABORTED)
   ||   (ec >= eQMI_ERR_CAT_EVT_REG_FAILED && ec < eQMI_ERR_ENUM_END) )
   {
      retVal = true;
   }

   return retVal;
};

/*=========================================================================*/
// eQMICallEndReason Enumeration
//    QMI Call End Reason Enumeration
/*=========================================================================*/
enum eQMICallEndReason
{
    eQMI_CALL_END_REASON_BEGIN = -1,

   // General 
   eQMI_CALL_END_REASON_UNSPECIFIED = 1,           // 1
   eQMI_CALL_END_REASON_CLIENT_END,                // 2
   eQMI_CALL_END_REASON_NO_SRV,                    // 3
   eQMI_CALL_END_REASON_FADE,                      // 4
   eQMI_CALL_END_REASON_REL_NORMAL,                // 5
   eQMI_CALL_END_REASON_ACC_IN_PROG,               // 6
   eQMI_CALL_END_REASON_ACC_FAIL,                  // 7
   eQMI_CALL_END_REASON_REDIR_OR_HANDOFF,          // 8
   eQMI_CALL_END_REASON_CLOSE_IN_PROGRESS,         // 9
   eQMI_CALL_END_REASON_AUTH_FAILED,               // 10
   eQMI_CALL_END_REASON_INTERNAL,                  // 11

   // CDMA
   eQMI_CALL_END_REASON_CDMA_LOCK = 500,           // 500
   eQMI_CALL_END_REASON_INTERCEPT,                 // 501
   eQMI_CALL_END_REASON_REORDER,                   // 502
   eQMI_CALL_END_REASON_REL_SO_REJ,                // 503
   eQMI_CALL_END_REASON_INCOM_CALL,                // 504
   eQMI_CALL_END_REASON_ALERT_STOP,                // 505
   eQMI_CALL_END_REASON_ACTIVATION,                // 506
   eQMI_CALL_END_REASON_MAX_ACCESS_PROBE,          // 507
   eQMI_CALL_END_REASON_CCS_NOT_SUPPORTED_BY_BS,   // 508
   eQMI_CALL_END_REASON_NO_RESPONSE_FROM_BS,       // 509
   eQMI_CALL_END_REASON_REJECTED_BY_BS,            // 510
   eQMI_CALL_END_REASON_INCOMPATIBLE,              // 511
   eQMI_CALL_END_REASON_ALREADY_IN_TC,             // 512
   eQMI_CALL_END_REASON_USER_CALL_ORIG_DURING_GPS, // 513
   eQMI_CALL_END_REASON_USER_CALL_ORIG_DURING_SMS, // 514
   eQMI_CALL_END_REASON_NO_CDMA_SRV,               // 515

   // GSM/WCDMA
   eQMI_CALL_END_REASON_CONF_FAILED = 1000,        // 1000
   eQMI_CALL_END_REASON_INCOM_REJ,                 // 1001
   eQMI_CALL_END_REASON_NO_GW_SRV,                 // 1002
   eQMI_CALL_END_REASON_NETWORK_END,               // 1003
   eQMI_CALL_END_REASON_LLC_SNDCP_FAILURE,         // 1004
   eQMI_CALL_END_REASON_INSUFFICIENT_RESOURCES,    // 1005
   eQMI_CALL_END_REASON_OPTION_TEMP_OOO,           // 1006
   eQMI_CALL_END_REASON_NSAPI_ALREADY_USED,        // 1007
   eQMI_CALL_END_REASON_REGULAR_DEACTIVATION,      // 1008
   eQMI_CALL_END_REASON_NETWORK_FAILURE,           // 1009
   eQMI_CALL_END_REASON_UMTS_REATTACH_REQ,         // 1010
   eQMI_CALL_END_REASON_UMTS_PROTOCOL_ERROR,       // 1011
   eQMI_CALL_END_REASON_OPERATOR_BARRING,          // 1012
   eQMI_CALL_END_REASON_UNKNOWN_APN,               // 1013
   eQMI_CALL_END_REASON_UNKNOWN_PDP,               // 1014
   eQMI_CALL_END_REASON_GGSN_REJECT,               // 1015
   eQMI_CALL_END_REASON_ACTIVATION_REJECT,         // 1016
   eQMI_CALL_END_REASON_OPTION_NOT_SUPPORTED,      // 1017
   eQMI_CALL_END_REASON_OPTION_UNSUBSCRIBED,       // 1018
   eQMI_CALL_END_REASON_QOS_NOT_ACCEPTED,          // 1019
   eQMI_CALL_END_REASON_TFT_SEMANTIC_ERROR,        // 1020
   eQMI_CALL_END_REASON_TFT_SYNTAX_ERROR,          // 1021
   eQMI_CALL_END_REASON_UNKNOWN_PDP_CONTEXT,       // 1022
   eQMI_CALL_END_REASON_FILTER_SEMANTIC_ERROR,     // 1023
   eQMI_CALL_END_REASON_FILTER_SYNTAX_ERROR,       // 1024
   eQMI_CALL_END_REASON_PDP_WITHOUT_ACTIVE_TFT,    // 1025
   eQMI_CALL_END_REASON_INVALID_TRANSACTION_ID,    // 1026
   eQMI_CALL_END_REASON_MESSAGE_SEMANTIC_ERROR,    // 1027
   eQMI_CALL_END_REASON_INVALID_MANDATORY_INFO,    // 1028
   eQMI_CALL_END_REASON_TYPE_UNSUPPORTED,          // 1029
   eQMI_CALL_END_REASON_MSG_TYPE_WRONG_FOR_STATE,  // 1030
   eQMI_CALL_END_REASON_UNKNOWN_INFO_ELEMENT,      // 1031
   eQMI_CALL_END_REASON_CONDITIONAL_IE_ERROR,      // 1032
   eQMI_CALL_END_REASON_MSG_WRONG_FOR_PROTOCOL,    // 1033
   eQMI_CALL_END_REASON_APN_TYPE_CONFLICT,         // 1034
   eQMI_CALL_END_REASON_NO_GPRS_CONTEXT,           // 1035
   eQMI_CALL_END_REASON_FEATURE_NOT_SUPPORTED,     // 1036

   // CDMA 1xEV-DO (HDR)
   eQMI_CALL_END_REASON_CD_GEN_OR_BUSY = 1500,     // 1500
   eQMI_CALL_END_REASON_CD_BILL_OR_AUTH,           // 1501
   eQMI_CALL_END_REASON_CHG_HDR,                   // 1502
   eQMI_CALL_END_REASON_EXIT_HDR,                  // 1503
   eQMI_CALL_END_REASON_HDR_NO_SESSION ,           // 1504
   eQMI_CALL_END_REASON_HDR_ORIG_DURING_GPS_FIX,   // 1505
   eQMI_CALL_END_REASON_HDR_CS_TIMEOUT ,           // 1506
   eQMI_CALL_END_REASON_HDR_RELEASED_BY_CM,        // 1507

   eQMI_CALL_END_REASON_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eQMICallEndReason validity check

PARAMETERS:
   err         [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eQMICallEndReason err )
{
   if ( (err >= eQMI_CALL_END_REASON_UNSPECIFIED) 
   &&   (err <= eQMI_CALL_END_REASON_INTERNAL) )
   {
      return true;
   }

   if ( (err >= eQMI_CALL_END_REASON_CDMA_LOCK)
   &&   (err <= eQMI_CALL_END_REASON_NO_CDMA_SRV) )
   {
      return true;
   }

   if ( (err >= eQMI_CALL_END_REASON_CONF_FAILED)
   &&   (err <= eQMI_CALL_END_REASON_FEATURE_NOT_SUPPORTED) )
   {
      return true;
   }

   if ( (err >= eQMI_CALL_END_REASON_CD_GEN_OR_BUSY)
   &&   (err <= eQMI_CALL_END_REASON_HDR_RELEASED_BY_CM) )
   {
      return true;
   }

   return false;
};

/*=========================================================================*/
// eIPAddressType Enumeration
//    IPv4 or IPv6
/*=========================================================================*/
enum eIPAddressType
{
   eIP_ADDRESS_ENUM_BEGIN = -1,

   eIP_ADDRESS_V4 = 4,        // IPv4
   eIP_ADDRESS_V6 = 6,        // IPv6

   eIP_ADDRESS_ENUM_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eIPAddressType validity check

PARAMETERS:
   type        [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eIPAddressType type )
{
   if (type == eIP_ADDRESS_V4 || type == eIP_ADDRESS_V6)
   {
      return true;
   }

   return false;
}

/*=========================================================================*/
// eSMSMessageMode Enumeration
//    CDMA or GW
/*=========================================================================*/
enum eSMSMessageMode
{
   eSMS_MESSAGE_MODE_BEGIN = -1,

   eSMS_MESSAGE_MODE_CDMA,    // 0 CDMA
   eSMS_MESSAGE_MODE_GW,      // 1 GW

   eSMS_MESSAGE_MODE_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eSMSMessageMode validity check

PARAMETERS:
   mode        [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eSMSMessageMode mode )
{
   if (mode == eSMS_MESSAGE_MODE_CDMA || mode == eSMS_MESSAGE_MODE_GW)
   {
      return true;
   }

   return false;
}

/*=========================================================================*/
// eNetworkMode Enumeration
//    UMTS or CDMA
/*=========================================================================*/
enum eNetworkMode
{
   eNETWORK_MODE_BEGIN = -1,

   eNETWORK_MODE_UMTS,           // 0 UMTS
   eNETWORK_MODE_CDMA,           // 1 CDMA

   eNETWORK_MODE_UNSET = 0xff,   // 0xff unknown/unset

   eNETWORK_MODE_END
};

/*===========================================================================
METHOD:
   IsValid (Inline Method)

DESCRIPTION:
   eNetworkMode validity check

PARAMETERS:
   mode        [ I ] - Enum value being verified

RETURN VALUE:
   bool
===========================================================================*/
inline bool IsValid( eNetworkMode mode )
{
   if (mode == eNETWORK_MODE_UMTS 
   ||  mode == eNETWORK_MODE_CDMA
   ||  mode == eNETWORK_MODE_UNSET)
   {
      return true;
   }

   return false;
}