diff --git a/drivers/isimodem/debug.c b/drivers/isimodem/debug.c index abdc8a0d..0feea829 100644 --- a/drivers/isimodem/debug.c +++ b/drivers/isimodem/debug.c @@ -60,6 +60,10 @@ const char *ss_message_id_name(enum ss_message_id value) _(SS_SERVICE_REQ); _(SS_SERVICE_COMPLETED_RESP); _(SS_SERVICE_FAILED_RESP); + _(SS_GSM_USSD_SEND_REQ); + _(SS_GSM_USSD_SEND_RESP); + _(SS_GSM_USSD_RECEIVE_IND); + _(SS_STATUS_IND); _(SS_COMMON_MESSAGE); } return "SS_"; @@ -79,6 +83,7 @@ const char *ss_subblock_name(enum ss_subblock value) _(SS_GSM_INDICATE_PASSWORD_ERROR); _(SS_GSM_INDICATE_ERROR); _(SS_GSM_ADDITIONAL_INFO); + _(SS_GSM_USSD_STRING); } return "SS_"; } diff --git a/drivers/isimodem/ss.h b/drivers/isimodem/ss.h index 5118125b..7c20bcce 100644 --- a/drivers/isimodem/ss.h +++ b/drivers/isimodem/ss.h @@ -24,16 +24,35 @@ #ifndef __ISIMODEM_SS_H #define __ISIMODEM_SS_H -#define PN_SS 0x06 -#define SS_TIMEOUT 15 +#define PN_SS 0x06 +#define SS_TIMEOUT 15 +#define SS_MAX_USSD_LENGTH 160 enum ss_message_id { SS_SERVICE_REQ = 0x00, SS_SERVICE_COMPLETED_RESP = 0x01, SS_SERVICE_FAILED_RESP = 0x02, + SS_GSM_USSD_SEND_REQ = 0x04, + SS_GSM_USSD_SEND_RESP = 0x05, + SS_GSM_USSD_RECEIVE_IND = 0x06, + SS_STATUS_IND = 0x09, SS_COMMON_MESSAGE = 0xF0 }; +enum ss_ussd_type { + SS_GSM_USSD_MT_REPLY = 0x01, + SS_GSM_USSD_COMMAND = 0x02, + SS_GSM_USSD_REQUEST = 0x03, + SS_GSM_USSD_NOTIFY = 0x04, + SS_GSM_USSD_END = 0x05 +}; + +enum ss_ussd_status { + SS_GSM_STATUS_REQUEST_USSD_START = 0x02, + SS_GSM_STATUS_REQUEST_USSD_STOP = 0x03, + SS_GSM_STATUS_REQUEST_USSD_FAILED = 0x04 +}; + enum ss_operations { SS_ACTIVATION = 0x01, SS_DEACTIVATION = 0x02, @@ -92,7 +111,8 @@ enum ss_subblock { SS_GSM_PASSWORD_INFO = 0x0B, SS_GSM_INDICATE_PASSWORD_ERROR = 0x0D, SS_GSM_INDICATE_ERROR = 0x0E, - SS_GSM_ADDITIONAL_INFO = 0x2F + SS_GSM_ADDITIONAL_INFO = 0x2F, + SS_GSM_USSD_STRING = 0x32 }; enum ss_isi_cause {