at_cmd_ss.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. #ifndef __AT_CMD_SS_H__
  2. #define __AT_CMD_SS_H__
  3. #include "ats_config.h"
  4. /*
  5. for test parse string
  6. */
  7. //#ifdef CFW_VOLTE_SUPPORT //quectel modify
  8. #define MAX_LENGTH_NUMBER_CCFCU 41
  9. #define AT_CMD_CCFCU_OPTYPE_VOICECALL 1
  10. //#endif //quectel modify
  11. #define AT_MAX_DIGITS_USSD 183
  12. #define AT_MAX_CC_NUM 7
  13. #define MAX_PARMS 5
  14. #define MAXPASSWORDLEN 4
  15. #define CHR_STAR ('*')
  16. #define CHR_HASH ('#')
  17. #define CW_DISABLE 0
  18. #define CW_ENABLE 1
  19. typedef enum
  20. {
  21. SSMMI_STAR = 0,
  22. SSMMI_HASH,
  23. SSMMI_STARHASH,
  24. SSMMI_STARSTAR,
  25. SSMMI_HASHHASH,
  26. SSMMI_USS
  27. } SSOpType;
  28. typedef enum // Basic Service group number
  29. {
  30. Adp_ALL_BS_AND_TS = 0, // 1-12
  31. // TELESERVICES
  32. Adp_ALL_TELESERVICES = 10, // 1-6 + 12
  33. Adp_TELEPHONY = 11, // 1
  34. Adp_ALL_DATA_TELESERVICES = 12, // 2-6
  35. Adp_FACSIMILE_SERVICES = 13, // 6
  36. Adp_SHORT_MESSAGE_SERVICES = 16, // 2
  37. Adp_ALL_TELESERVICES_EXCEPT_SMS = 19, // 1 + 3-6 + 12
  38. // VOICE GROUP SERVICES
  39. Adp_VOICE_GROUP_CALL_SERVICE = 17,
  40. Adp_VOICE_BROADCAST_SERVICE = 18,
  41. // BEARER SERVICE
  42. Adp_ALL_BEARER_SERVICES = 20, // 7-11
  43. Adp_ALL_ASYNC_SERVICES = 21, // 7
  44. Adp_ALL_SYNC_SERVICES = 22, // 8
  45. Adp_ALL_DATA_CIRCUIT_SYNC = 24, // 8
  46. Adp_ALL_DATA_CIRCUIT_ASYNC = 25, // 7
  47. Adp_ALL_GPRS_BEARER_SERVICES = 29 // 13
  48. } Adp_bs_code_enum;
  49. typedef enum // RegisterSS EraseSS ActivateSS DeactivateSS InterrogateSS
  50. {
  51. SS_ALLSS = 0x00,
  52. SS_ALLLINEIDENTIFICATIONSS = 0x10,
  53. SS_CLIP = 0x11, // 11.14
  54. SS_CLIR = 0x12, // 12.14
  55. SS_COLP = 0x13, // 13.14
  56. SS_COLR = 0x14, // 14.14
  57. SS_MCI = 0x15,
  58. SS_ALLNAMEIDENTIFICATIONSS = 0x18,
  59. SS_CNAP = 0x19, // 19.14
  60. SS_ALLFORWARDINGSS = 0x20, //20.10 20.11 20.12 20.13 20.14
  61. SS_CFU = 0x21, //21.10 21.11 21.12 21.13 21.14
  62. SS_ALLCONDFORWARDINGSS = 0x28, //28.10 28.11 28.12 28.13 28.14
  63. SS_CFB = 0x29, //29.10 29.11 29.12 29.13 29.14
  64. SS_CFNRY = 0x2A, //2A.10 2A.11 2A.12 2A.13 2A.14
  65. SS_CFNRC = 0x2B, //2B.10 2B.11 2B.12 2B.13 2B.14
  66. SS_CD = 0x24,
  67. SS_ALLCALLOFFERINGSS = 0x30,
  68. SS_ECT = 0x31,
  69. SS_MAH = 0x32,
  70. SS_ALLCALLCOMPLETIONSS = 0x40,
  71. SS_CW = 0x41, // 41.12 41.13 41.14
  72. SS_HOLD = 0x42, // ERASECCENTRY
  73. SS_CCBS_A = 0x43, // 43.77 43.14
  74. SS_CCBS_B = 0x44,
  75. SS_MC = 0x45,
  76. SS_ALLMULTIPARTYSS = 0x50,
  77. SS_MULTIPTY = 0x51,
  78. SS_ALLCOMMUNITYOFINTEREST_SS = 0x60,
  79. SS_CUG = 0x61,
  80. SS_ALLCHARGINGSS = 0x70,
  81. SS_AOCI = 0x71,
  82. SS_AOCC = 0x72,
  83. SS_ALLADDITIONALINFOTRANSFERSS = 0x80,
  84. SS_UUS1 = 0x81,
  85. SS_UUS2 = 0x82,
  86. SS_UUS3 = 0x83, //REGISTERPW GETPW
  87. SS_ALLBARRINGSS = 0x90, //90.17 90.18 90.12 90.13 90.14
  88. SS_BARRINGOFOUTGOINGCALLS = 0x91, //91.17 91.18 91.12 91.13 91.14
  89. SS_BAOC = 0x92, //92.17 92.18 92.12 92.13 92.14
  90. SS_BOIC = 0x93, //93.17 93.18 93.12 93.13 93.14
  91. SS_BOICEXHC = 0x94, //94.17 94.18 94.12 94.13 94.14
  92. SS_BARRINGOFINCOMINGCALLS = 0x99, //99.17 99.18 99.12 99.13 99.14
  93. SS_BAIC = 0x9A, //9A.17 9A.18 9A.12 9A.13 9A.14
  94. SS_BICROAM = 0x9B, //9B.17 9B.18 9B.12 9B.13 9B.14
  95. SS_ALLCALLPRIORITYSS = 0xA0,
  96. SS_EMLPP = 0xA1, //A1.10 A1.14
  97. SS_ALLLCSPRIVACYEXCEPTION = 0xB0,
  98. SS_UNIVERSAL = 0xB1,
  99. SS_CALLRELATED = 0xB2,
  100. SS_CALLUNRELATED = 0xB3,
  101. SS_PLMNOPERATOR = 0xB4,
  102. SS_ALLMOLR_SS = 0xC0,
  103. SS_BASICSELFLOCATION = 0xC1,
  104. SS_AUTONOMOUSSELFLOCATION = 0xC2,
  105. SS_TRANSFERTOTHIRDPARTY = 0xC3,
  106. SS_ALLPLMN_SPECIFICSS = 0xF0,
  107. SS_PLMN_SPECIFICSS_1 = 0xF1,
  108. SS_PLMN_SPECIFICSS_2 = 0xF2,
  109. SS_PLMN_SPECIFICSS_3 = 0xF3,
  110. SS_PLMN_SPECIFICSS_4 = 0xF4,
  111. SS_PLMN_SPECIFICSS_5 = 0xF5,
  112. SS_PLMN_SPECIFICSS_6 = 0xF6,
  113. SS_PLMN_SPECIFICSS_7 = 0xF7,
  114. SS_PLMN_SPECIFICSS_8 = 0xF8,
  115. SS_PLMN_SPECIFICSS_9 = 0xF9,
  116. SS_PLMN_SPECIFICSS_A = 0xFA,
  117. SS_PLMN_SPECIFICSS_B = 0xFB,
  118. SS_PLMN_SPECIFICSS_C = 0xFC,
  119. SS_PLMN_SPECIFICSS_D = 0xFD,
  120. SS_PLMN_SPECIFICSS_E = 0xFE,
  121. SS_PLMN_SPECIFICSS_F = 0xFF
  122. } ss_code_enum;
  123. typedef enum
  124. {
  125. SS_OP_REGISTERSS = 10, // CISS
  126. SS_OP_ERASESS = 11, // CISS
  127. SS_OP_ACTIVATESS = 12, // CISS
  128. SS_OP_DEACTIVATESS = 13, // CISS
  129. SS_OP_INTERROGATESS = 14, // CISS
  130. SS_OP_NOTIFYSS = 16, // CRSS
  131. SS_OP_REGISTERPASSWORD = 17, // CISS
  132. SS_OP_GETPASSWORD = 18, // CISS
  133. SS_OP_PROCESSUNSTRUCTUREDSS_DATA = 19, // CRSS AND CISS
  134. SS_OP_FORWARDCHECKSS_INDICATION = 38, // CISS
  135. SS_OP_PROCESSUNSTRUCTUREDSS_REQUEST = 59, // CISS
  136. SS_OP_UNSTRUCTUREDSS_REQUEST = 60, // CISS
  137. SS_OP_UNSTRUCTUREDSS_NOTIFY = 61, // CISS
  138. SS_OP_ERASECCENTRY = 77, // CISS
  139. SS_OP_LCS_MOLR = 115, // CISS
  140. SS_OP_LCS_LOCATIONNOTIFICATION = 116, // CISS
  141. SS_OP_CALLDEFLECTION = 117, // CRSS
  142. SS_OP_USERUSERSERVICE = 118, // CRSS
  143. SS_OP_ACCESSREGISTERCCENTRY = 119, // CRSS
  144. SS_OP_FORWARDCUG_INFO = 120, // CRSS
  145. SS_OP_SPLITMPTY = 121, // CRSS
  146. SS_OP_RETRIEVEMPTY = 122, // CRSS
  147. SS_OP_HOLDMPTY = 123, // CRSS
  148. SS_OP_BUILDMPTY = 124, // CRSS
  149. SS_OP_FORWARDCHARGEADVICE = 125, // CRSS
  150. SS_OP_EXPLICITCT = 126 // CRSS
  151. } l4_op_code_enum;
  152. typedef struct
  153. {
  154. SSOpType type;
  155. uint8_t parmStart[MAX_PARMS]; /* start position in user string */
  156. uint8_t parmLen[MAX_PARMS];
  157. } SSParsedParameters;
  158. typedef struct
  159. {
  160. uint8_t *pzMmiStr;
  161. ss_code_enum SSCode;
  162. } ATCodeToSsCode;
  163. #define AT_MAX_CC_ADDR_LEN 41
  164. typedef struct
  165. {
  166. uint8_t input[AT_MAX_DIGITS_USSD];
  167. uint8_t dcs;
  168. uint8_t length;
  169. uint8_t ip_string[11];
  170. bool IsEmergencyNo;
  171. } at_ss_parsing_string_req_struct;
  172. bool AT_IsSSString(const char *s, CFW_SIM_ID nSimID);
  173. bool AT_GetCallInfo(CFW_CC_CURRENT_CALL_INFO *pCallInfo, uint8_t CallStatus, CFW_SIM_ID nSimID);
  174. bool AT_SS_Adaption_ParseStringREQ(at_ss_parsing_string_req_struct *pReq, uint8_t nDLCI, CFW_SIM_ID nSimID);
  175. uint32_t AT_SS_QUERYERR(uint8_t nType, uint16_t nErrCode);
  176. // =====================================================
  177. //
  178. // GSMBCD码,如果转化奇数个数字的话,将会在对应高位补F
  179. // 支持'*''#''p'
  180. // 13811189836 --> 0x31 0x18 0x11 0x98 0x38 0xF6
  181. // return: output should >= nNumberLen/2+1
  182. // ======================================================
  183. uint16_t AT_SsAsciiToGsmBcd(const char *pNumber, uint8_t nNumberLen, uint8_t *pBCD);
  184. #if !defined(CONFIG_ATR_NBONLY_API_SUPPORT) && !defined(CONFIG_SOC_8850)
  185. uint8_t SS_ClassToCFWClass(uint8_t nclass);
  186. #endif //CONFIG_ATR_NBONLY_API_SUPPORT
  187. #endif