qcdm: clarify IMxI conversions a bit; fix up WCDMA L1 states
This commit is contained in:
@@ -1619,7 +1619,7 @@ qcmd_cmd_log_config_mask_result_code_set (QcdmResult *result,
|
|||||||
static char bcd_chars[] = "0123456789\0\0\0\0\0\0";
|
static char bcd_chars[] = "0123456789\0\0\0\0\0\0";
|
||||||
|
|
||||||
static qcdmbool
|
static qcdmbool
|
||||||
imxi_to_bcd_string (u_int8_t bytes[9], char *buf, size_t buflen)
|
imxi_bcd_to_string (u_int8_t bytes[8], size_t len, char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
u_int32_t i;
|
u_int32_t i;
|
||||||
@@ -1627,22 +1627,22 @@ imxi_to_bcd_string (u_int8_t bytes[9], char *buf, size_t buflen)
|
|||||||
if (bytes[0] == 0)
|
if (bytes[0] == 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
qcdm_return_val_if_fail (bytes[0] == 0x08, FALSE);
|
qcdm_return_val_if_fail (len == 8, FALSE);
|
||||||
qcdm_return_val_if_fail (buf != NULL, FALSE);
|
qcdm_return_val_if_fail (buf != NULL, FALSE);
|
||||||
qcdm_return_val_if_fail (buflen > bytes[0], FALSE);
|
qcdm_return_val_if_fail (buflen > len, FALSE);
|
||||||
|
|
||||||
p = buf;
|
p = buf;
|
||||||
for (i = 0 ; i < bytes[0]; i++) {
|
for (i = 0 ; i < len; i++) {
|
||||||
/* IMxI are 15 chars long, so the lower 4-bits of the first
|
/* IMxI are 15 chars long, so the lower 4-bits of the first
|
||||||
* byte of the IMxI is skipped. Not sure what it does.
|
* byte of the IMxI is skipped. Not sure what it does.
|
||||||
*/
|
*/
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
*p = bcd_chars[bytes[i + 1] & 0xf];
|
*p = bcd_chars[bytes[i] & 0xf];
|
||||||
if (!*p)
|
if (!*p)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
*p = bcd_chars[(bytes[i + 1] >> 4) & 0xf];
|
*p = bcd_chars[(bytes[i] >> 4) & 0xf];
|
||||||
if (!*p)
|
if (!*p)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
p++;
|
p++;
|
||||||
@@ -1685,11 +1685,11 @@ qcdm_cmd_wcdma_subsys_state_info_result (const char *buf, size_t len, int *out_e
|
|||||||
qcdm_result_add_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, rsp->l1_state);
|
qcdm_result_add_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, rsp->l1_state);
|
||||||
|
|
||||||
memset (imxi, 0, sizeof (imxi));
|
memset (imxi, 0, sizeof (imxi));
|
||||||
if (imxi_to_bcd_string (rsp->imei, imxi, sizeof (imxi)))
|
if (imxi_bcd_to_string (rsp->imei, rsp->imei_len, imxi, sizeof (imxi)))
|
||||||
qcdm_result_add_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMEI, imxi);
|
qcdm_result_add_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMEI, imxi);
|
||||||
|
|
||||||
memset (imxi, 0, sizeof (imxi));
|
memset (imxi, 0, sizeof (imxi));
|
||||||
if (imxi_to_bcd_string (rsp->imsi, imxi, sizeof (imxi)))
|
if (imxi_bcd_to_string (rsp->imsi, rsp->imsi_len, imxi, sizeof (imxi)))
|
||||||
qcdm_result_add_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMSI, imxi);
|
qcdm_result_add_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMSI, imxi);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -1731,11 +1731,11 @@ qcdm_cmd_gsm_subsys_state_info_result (const char *buf, size_t len, int *out_err
|
|||||||
result = qcdm_result_new ();
|
result = qcdm_result_new ();
|
||||||
|
|
||||||
memset (imxi, 0, sizeof (imxi));
|
memset (imxi, 0, sizeof (imxi));
|
||||||
if (imxi_to_bcd_string (rsp->imei, imxi, sizeof (imxi)))
|
if (imxi_bcd_to_string (rsp->imei, rsp->imei_len, imxi, sizeof (imxi)))
|
||||||
qcdm_result_add_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMEI, imxi);
|
qcdm_result_add_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMEI, imxi);
|
||||||
|
|
||||||
memset (imxi, 0, sizeof (imxi));
|
memset (imxi, 0, sizeof (imxi));
|
||||||
if (imxi_to_bcd_string (rsp->imsi, imxi, sizeof (imxi)))
|
if (imxi_bcd_to_string (rsp->imsi, rsp->imsi_len, imxi, sizeof (imxi)))
|
||||||
qcdm_result_add_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMSI, imxi);
|
qcdm_result_add_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMSI, imxi);
|
||||||
|
|
||||||
qcdm_result_add_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_CALL_STATE, rsp->cm_call_state);
|
qcdm_result_add_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_CALL_STATE, rsp->cm_call_state);
|
||||||
|
@@ -582,15 +582,15 @@ QcdmResult *qcdm_cmd_nw_subsys_modem_snapshot_cdma_result (const char *buf,
|
|||||||
/* Values for QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE */
|
/* Values for QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE */
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QCDM_WCDMA_L1_STATE_IDLE = 0,
|
QCDM_WCDMA_L1_STATE_INIT = 0,
|
||||||
QCDM_WCDMA_L1_STATE_FS = 1,
|
QCDM_WCDMA_L1_STATE_IDLE = 1,
|
||||||
QCDM_WCDMA_L1_STATE_ACQ = 2,
|
QCDM_WCDMA_L1_STATE_FS = 2,
|
||||||
QCDM_WCDMA_L1_STATE_BCH = 3,
|
QCDM_WCDMA_L1_STATE_ACQ = 3,
|
||||||
QCDM_WCDMA_L1_STATE_PCH = 4,
|
QCDM_WCDMA_L1_STATE_BCH = 4,
|
||||||
QCDM_WCDMA_L1_STATE_FACH = 5,
|
QCDM_WCDMA_L1_STATE_PCH = 5,
|
||||||
QCDM_WCDMA_L1_STATE_DCH = 6,
|
QCDM_WCDMA_L1_STATE_FACH = 6,
|
||||||
QCDM_WCDMA_L1_STATE_DEACTIVATED = 7,
|
QCDM_WCDMA_L1_STATE_DCH = 7,
|
||||||
QCDM_WCDMA_L1_STATE_PCH_SLEEP = 8,
|
QCDM_WCDMA_L1_STATE_DEACTIVATE = 8,
|
||||||
QCDM_WCDMA_L1_STATE_DEEP_SLEEP = 9,
|
QCDM_WCDMA_L1_STATE_DEEP_SLEEP = 9,
|
||||||
QCDM_WCDMA_L1_STATE_STOPPED = 10,
|
QCDM_WCDMA_L1_STATE_STOPPED = 10,
|
||||||
QCDM_WCDMA_L1_STATE_SUSPENDED = 11,
|
QCDM_WCDMA_L1_STATE_SUSPENDED = 11,
|
||||||
|
@@ -532,8 +532,10 @@ typedef struct DMCmdSubsysWcdmaCallStart DMCmdSubsysWcdmaCallStart;
|
|||||||
/* DIAG_SUBSYS_WCDMA_STATE_INFO response */
|
/* DIAG_SUBSYS_WCDMA_STATE_INFO response */
|
||||||
struct DMCmdSubsysWcdmaStateInfoRsp {
|
struct DMCmdSubsysWcdmaStateInfoRsp {
|
||||||
DMCmdSubsysHeader hdr;
|
DMCmdSubsysHeader hdr;
|
||||||
u_int8_t imei[9];
|
u_int8_t imei_len;
|
||||||
u_int8_t imsi[9];
|
u_int8_t imei[8];
|
||||||
|
u_int8_t imsi_len;
|
||||||
|
u_int8_t imsi[8];
|
||||||
u_int8_t l1_state;
|
u_int8_t l1_state;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
typedef struct DMCmdSubsysWcdmaStateInfoRsp DMCmdSubsysWcdmaStateInfoRsp;
|
typedef struct DMCmdSubsysWcdmaStateInfoRsp DMCmdSubsysWcdmaStateInfoRsp;
|
||||||
@@ -541,8 +543,10 @@ typedef struct DMCmdSubsysWcdmaStateInfoRsp DMCmdSubsysWcdmaStateInfoRsp;
|
|||||||
/* DIAG_SUBSYS_GSM_STATE_INFO response */
|
/* DIAG_SUBSYS_GSM_STATE_INFO response */
|
||||||
struct DMCmdSubsysGsmStateInfoRsp {
|
struct DMCmdSubsysGsmStateInfoRsp {
|
||||||
DMCmdSubsysHeader hdr;
|
DMCmdSubsysHeader hdr;
|
||||||
u_int8_t imei[9];
|
u_int8_t imei_len;
|
||||||
u_int8_t imsi[9];
|
u_int8_t imei[8];
|
||||||
|
u_int8_t imsi_len;
|
||||||
|
u_int8_t imsi[8];
|
||||||
u_int8_t lai[5];
|
u_int8_t lai[5];
|
||||||
u_int16_t cellid;
|
u_int16_t cellid;
|
||||||
u_int8_t cm_call_state;
|
u_int8_t cm_call_state;
|
||||||
|
@@ -1661,6 +1661,9 @@ test_com_wcdma_subsys_state_info (void *f, void *data)
|
|||||||
str = "unknown";
|
str = "unknown";
|
||||||
qcdm_result_get_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, &num8);
|
qcdm_result_get_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, &num8);
|
||||||
switch (num8) {
|
switch (num8) {
|
||||||
|
case QCDM_WCDMA_L1_STATE_INIT:
|
||||||
|
str = "Init";
|
||||||
|
break;
|
||||||
case QCDM_WCDMA_L1_STATE_IDLE:
|
case QCDM_WCDMA_L1_STATE_IDLE:
|
||||||
str = "Idle";
|
str = "Idle";
|
||||||
break;
|
break;
|
||||||
@@ -1682,12 +1685,9 @@ test_com_wcdma_subsys_state_info (void *f, void *data)
|
|||||||
case QCDM_WCDMA_L1_STATE_DCH:
|
case QCDM_WCDMA_L1_STATE_DCH:
|
||||||
str = "DCH";
|
str = "DCH";
|
||||||
break;
|
break;
|
||||||
case QCDM_WCDMA_L1_STATE_DEACTIVATED:
|
case QCDM_WCDMA_L1_STATE_DEACTIVATE:
|
||||||
str = "Deactivated";
|
str = "Deactivated";
|
||||||
break;
|
break;
|
||||||
case QCDM_WCDMA_L1_STATE_PCH_SLEEP:
|
|
||||||
str = "PCH Sleep";
|
|
||||||
break;
|
|
||||||
case QCDM_WCDMA_L1_STATE_DEEP_SLEEP:
|
case QCDM_WCDMA_L1_STATE_DEEP_SLEEP:
|
||||||
str = "Deep Sleep";
|
str = "Deep Sleep";
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user