diff options
author | Dan Williams <dcbw@redhat.com> | 2012-01-21 11:23:17 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-01-21 11:23:17 -0600 |
commit | 0737a24f4394490bdf25f629169f70a3cbe085da (patch) | |
tree | efc7ac76cb55abed8b126d4ae111c9f0acef6aea | |
parent | d068cde8193963b4d6767a8ac97ece041841b1fb (diff) | |
download | ModemManager-0737a24f4394490bdf25f629169f70a3cbe085da.tar.gz |
qcdm: clarify IMxI conversions a bit; fix up WCDMA L1 states
-rw-r--r-- | libqcdm/src/commands.c | 20 | ||||
-rw-r--r-- | libqcdm/src/commands.h | 18 | ||||
-rw-r--r-- | libqcdm/src/dm-commands.h | 12 | ||||
-rw-r--r-- | libqcdm/tests/test-qcdm-com.c | 8 |
4 files changed, 31 insertions, 27 deletions
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c index 148b2d10e..f906f1a8d 100644 --- a/libqcdm/src/commands.c +++ b/libqcdm/src/commands.c @@ -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 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; 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) 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 (buflen > bytes[0], FALSE); + qcdm_return_val_if_fail (buflen > len, FALSE); 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 * byte of the IMxI is skipped. Not sure what it does. */ if (i > 0) { - *p = bcd_chars[bytes[i + 1] & 0xf]; + *p = bcd_chars[bytes[i] & 0xf]; if (!*p) return FALSE; p++; } - *p = bcd_chars[(bytes[i + 1] >> 4) & 0xf]; + *p = bcd_chars[(bytes[i] >> 4) & 0xf]; if (!*p) return FALSE; 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); 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); 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); 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 (); 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); 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_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_CALL_STATE, rsp->cm_call_state); diff --git a/libqcdm/src/commands.h b/libqcdm/src/commands.h index ecf2d92eb..6477eb160 100644 --- a/libqcdm/src/commands.h +++ b/libqcdm/src/commands.h @@ -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 */ enum { - QCDM_WCDMA_L1_STATE_IDLE = 0, - QCDM_WCDMA_L1_STATE_FS = 1, - QCDM_WCDMA_L1_STATE_ACQ = 2, - QCDM_WCDMA_L1_STATE_BCH = 3, - QCDM_WCDMA_L1_STATE_PCH = 4, - QCDM_WCDMA_L1_STATE_FACH = 5, - QCDM_WCDMA_L1_STATE_DCH = 6, - QCDM_WCDMA_L1_STATE_DEACTIVATED = 7, - QCDM_WCDMA_L1_STATE_PCH_SLEEP = 8, + QCDM_WCDMA_L1_STATE_INIT = 0, + QCDM_WCDMA_L1_STATE_IDLE = 1, + QCDM_WCDMA_L1_STATE_FS = 2, + QCDM_WCDMA_L1_STATE_ACQ = 3, + QCDM_WCDMA_L1_STATE_BCH = 4, + QCDM_WCDMA_L1_STATE_PCH = 5, + QCDM_WCDMA_L1_STATE_FACH = 6, + QCDM_WCDMA_L1_STATE_DCH = 7, + QCDM_WCDMA_L1_STATE_DEACTIVATE = 8, QCDM_WCDMA_L1_STATE_DEEP_SLEEP = 9, QCDM_WCDMA_L1_STATE_STOPPED = 10, QCDM_WCDMA_L1_STATE_SUSPENDED = 11, diff --git a/libqcdm/src/dm-commands.h b/libqcdm/src/dm-commands.h index 8c1f169e1..cc254bb7b 100644 --- a/libqcdm/src/dm-commands.h +++ b/libqcdm/src/dm-commands.h @@ -532,8 +532,10 @@ typedef struct DMCmdSubsysWcdmaCallStart DMCmdSubsysWcdmaCallStart; /* DIAG_SUBSYS_WCDMA_STATE_INFO response */ struct DMCmdSubsysWcdmaStateInfoRsp { DMCmdSubsysHeader hdr; - u_int8_t imei[9]; - u_int8_t imsi[9]; + u_int8_t imei_len; + u_int8_t imei[8]; + u_int8_t imsi_len; + u_int8_t imsi[8]; u_int8_t l1_state; } __attribute__ ((packed)); typedef struct DMCmdSubsysWcdmaStateInfoRsp DMCmdSubsysWcdmaStateInfoRsp; @@ -541,8 +543,10 @@ typedef struct DMCmdSubsysWcdmaStateInfoRsp DMCmdSubsysWcdmaStateInfoRsp; /* DIAG_SUBSYS_GSM_STATE_INFO response */ struct DMCmdSubsysGsmStateInfoRsp { DMCmdSubsysHeader hdr; - u_int8_t imei[9]; - u_int8_t imsi[9]; + u_int8_t imei_len; + u_int8_t imei[8]; + u_int8_t imsi_len; + u_int8_t imsi[8]; u_int8_t lai[5]; u_int16_t cellid; u_int8_t cm_call_state; diff --git a/libqcdm/tests/test-qcdm-com.c b/libqcdm/tests/test-qcdm-com.c index 21313ed77..65ce374eb 100644 --- a/libqcdm/tests/test-qcdm-com.c +++ b/libqcdm/tests/test-qcdm-com.c @@ -1661,6 +1661,9 @@ test_com_wcdma_subsys_state_info (void *f, void *data) str = "unknown"; qcdm_result_get_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, &num8); switch (num8) { + case QCDM_WCDMA_L1_STATE_INIT: + str = "Init"; + break; case QCDM_WCDMA_L1_STATE_IDLE: str = "Idle"; break; @@ -1682,12 +1685,9 @@ test_com_wcdma_subsys_state_info (void *f, void *data) case QCDM_WCDMA_L1_STATE_DCH: str = "DCH"; break; - case QCDM_WCDMA_L1_STATE_DEACTIVATED: + case QCDM_WCDMA_L1_STATE_DEACTIVATE: str = "Deactivated"; break; - case QCDM_WCDMA_L1_STATE_PCH_SLEEP: - str = "PCH Sleep"; - break; case QCDM_WCDMA_L1_STATE_DEEP_SLEEP: str = "Deep Sleep"; break; |