diff options
author | Dan Williams <dcbw@redhat.com> | 2012-01-17 18:49:18 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-01-17 18:49:18 -0600 |
commit | 178f30bdd3111ba645b92ae6511911cc6a9ece4c (patch) | |
tree | cc7a192f4fdf23341e91e46bd203560523357f80 /libqcdm/tests/test-qcdm-com.c | |
parent | 80a41ed11b8ba40a54cecf044c2957a70a249b4d (diff) | |
download | ModemManager-178f30bdd3111ba645b92ae6511911cc6a9ece4c.tar.gz |
qcdm: fill in some GSM and WCDMA stuff
Diffstat (limited to 'libqcdm/tests/test-qcdm-com.c')
-rw-r--r-- | libqcdm/tests/test-qcdm-com.c | 239 |
1 files changed, 214 insertions, 25 deletions
diff --git a/libqcdm/tests/test-qcdm-com.c b/libqcdm/tests/test-qcdm-com.c index 3cdec5aa2..1476c8ec5 100644 --- a/libqcdm/tests/test-qcdm-com.c +++ b/libqcdm/tests/test-qcdm-com.c @@ -155,6 +155,55 @@ status_snapshot_state_to_string (guint8 state) return "unknown"; } +static const char * +cm_call_state_to_string (u_int32_t state) +{ + switch (state) { + case QCDM_CMD_CM_SUBSYS_STATE_INFO_CALL_STATE_IDLE: + return "idle"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_CALL_STATE_ORIGINATING: + return "originating"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_CALL_STATE_ALERTING: + return "alerting"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_CALL_STATE_ORIGINATION_ALERTING: + return "originating alerting"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_CALL_STATE_CONVERSATION: + return "conversation"; + default: + break; + } + return "unknown"; +} + +static const char * +cm_system_mode_to_string (u_int32_t mode) +{ + switch (mode) { + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_NO_SERVICE: + return "no service"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_AMPS: + return "AMPS"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_CDMA: + return "CDMA"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_GSM: + return "GSM"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_HDR: + return "HDR/EVDO"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_WCDMA: + return "WCDMA"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_GW: + return "GSM/WCDMA"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_WLAN: + return "WLAN"; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_LTE: + return "LTE"; + default: + break; + } + + return "unknown"; +} + /************************************************************/ typedef struct { @@ -966,7 +1015,7 @@ test_com_cm_subsys_state_info (void *f, void *data) n32 = 0; qcdm_result_get_u32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_CALL_STATE, &n32); - g_message ("%s: Call State: %u", __func__, n32); + g_message ("%s: Call State: %u (%s)", __func__, n32, cm_call_state_to_string (n32)); n32 = 0; detail = NULL; @@ -976,30 +1025,7 @@ test_com_cm_subsys_state_info (void *f, void *data) n32 = 0; detail = NULL; qcdm_result_get_u32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_SYSTEM_MODE, &n32); - switch (n32) { - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_NO_SERVICE: - detail = "no service"; - break; - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_AMPS: - detail = "AMPS"; - break; - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_CDMA: - detail = "CDMA"; - break; - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_HDR: - detail = "HDR/EVDO"; - break; - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_WCDMA: - detail = "WCDMA"; - break; - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_LTE: - detail = "LTE"; - break; - default: - detail = "unknown"; - break; - } - g_message ("%s: System Mode: %u (%s)", __func__, n32, detail); + g_message ("%s: System Mode: %u (%s)", __func__, n32, cm_system_mode_to_string (n32)); n32 = 0; qcdm_result_get_u32 (result, QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_MODE_PREF, &n32); @@ -1567,3 +1593,166 @@ test_com_nw_subsys_modem_snapshot_cdma (void *f, void *data) qcdm_result_unref (result); } +void +test_com_wcdma_subsys_state_info (void *f, void *data) +{ + TestComData *d = data; + gboolean success; + int err = QCDM_SUCCESS; + char buf[200]; + gint len; + QcdmResult *result; + gsize reply_len; + guint8 num8 = 0; + const char *str; + + len = qcdm_cmd_wcdma_subsys_state_info_new (buf, sizeof (buf)); + g_assert (len == 7); + + /* Send the command */ + success = send_command (d, buf, len); + g_assert (success); + + /* Get a response */ + reply_len = wait_reply (d, buf, sizeof (buf)); + + g_print ("\n"); + + /* Parse the response into a result structure */ + result = qcdm_cmd_wcdma_subsys_state_info_result (buf, reply_len, &err); + if (!result) { + /* Obviously not all devices implement this command */ + g_assert_cmpint (err, ==, -QCDM_ERROR_RESPONSE_BAD_COMMAND); + return; + } + g_assert (result); + + str = NULL; + qcdm_result_get_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMEI, &str); + g_message ("%s: IMEI: %s", __func__, str); + + str = NULL; + qcdm_result_get_string (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMSI, &str); + g_message ("%s: IMSI: %s", __func__, str); + + str = "unknown"; + qcdm_result_get_u8 (result, QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_L1_STATE, &num8); + switch (num8) { + case QCDM_WCDMA_L1_STATE_IDLE: + str = "Idle"; + break; + case QCDM_WCDMA_L1_STATE_FS: + str = "FS"; + break; + case QCDM_WCDMA_L1_STATE_ACQ: + str = "ACQ"; + break; + case QCDM_WCDMA_L1_STATE_BCH: + str = "BCH"; + break; + case QCDM_WCDMA_L1_STATE_PCH: + str = "PCH"; + break; + case QCDM_WCDMA_L1_STATE_FACH: + str = "FACH"; + break; + case QCDM_WCDMA_L1_STATE_DCH: + str = "DCH"; + break; + case QCDM_WCDMA_L1_STATE_DEACTIVATED: + 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; + case QCDM_WCDMA_L1_STATE_STOPPED: + str = "Stopped"; + break; + case QCDM_WCDMA_L1_STATE_SUSPENDED: + str = "Suspended"; + break; + default: + break; + } + g_message ("%s: L1 state: %d (%s)", __func__, num8, str); + + qcdm_result_unref (result); +} + +void +test_com_gsm_subsys_state_info (void *f, void *data) +{ + TestComData *d = data; + gboolean success; + int err = QCDM_SUCCESS; + char buf[200]; + gint len; + QcdmResult *result; + gsize reply_len; + const char *str; + u_int32_t num; + u_int8_t u8; + + len = qcdm_cmd_gsm_subsys_state_info_new (buf, sizeof (buf)); + g_assert (len == 7); + + /* Send the command */ + success = send_command (d, buf, len); + g_assert (success); + + /* Get a response */ + reply_len = wait_reply (d, buf, sizeof (buf)); + + g_print ("\n"); + + /* Parse the response into a result structure */ + result = qcdm_cmd_gsm_subsys_state_info_result (buf, reply_len, &err); + if (!result) { + /* Obviously not all devices implement this command */ + g_assert_cmpint (err, ==, -QCDM_ERROR_RESPONSE_BAD_COMMAND); + return; + } + g_assert (result); + + str = NULL; + qcdm_result_get_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMEI, &str); + g_message ("%s: IMEI: %s", __func__, str); + + str = NULL; + qcdm_result_get_string (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_IMSI, &str); + g_message ("%s: IMSI: %s", __func__, str); + + num = 0; + qcdm_result_get_u32 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_LAI_MCC, &num); + g_message ("%s: MCC: %d", __func__, num); + + num = 0; + qcdm_result_get_u32 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_LAI_MNC, &num); + g_message ("%s: MNC: %d", __func__, num); + + num = 0; + qcdm_result_get_u32 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_LAI_LAC, &num); + g_message ("%s: LAC: 0x%04X", __func__, num); + + num = 0; + qcdm_result_get_u32 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CELLID, &num); + g_message ("%s: Cell ID: 0x%04X", __func__, num); + + u8 = 0; + qcdm_result_get_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_CALL_STATE, &u8); + g_message ("%s: CM Call State: %d (%s)", __func__, u8, cm_call_state_to_string (u8)); + + u8 = 0; + qcdm_result_get_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_OP_MODE, &u8); + g_message ("%s: CM Opmode: %d (%s)", __func__, u8, operating_mode_to_string (u8)); + + u8 = 0; + qcdm_result_get_u8 (result, QCDM_CMD_GSM_SUBSYS_STATE_INFO_ITEM_CM_SYS_MODE, &u8); + g_message ("%s: CM Sysmode: %d (%s)", __func__, u8, cm_system_mode_to_string (u8)); + + qcdm_result_unref (result); +} + |