diff options
author | Dan Williams <dcbw@redhat.com> | 2010-03-29 00:08:46 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-03-29 00:08:46 -0700 |
commit | a98fa8a4b3419a233b80ff88da40b515afa9cb1c (patch) | |
tree | ca6885f4c064078454386735e14ddf1027f75232 /libqcdm | |
parent | 98e8108ac2a2fe4d5fab254b07170ae3ffeb0ad4 (diff) |
qcdm: fix up CDMA Status command fields and values
Found in two sources:
a) Руководство пользования тестером CDMA-450
b) RTManager
Diffstat (limited to 'libqcdm')
-rw-r--r-- | libqcdm/src/commands.c | 3 | ||||
-rw-r--r-- | libqcdm/src/commands.h | 22 | ||||
-rw-r--r-- | libqcdm/src/dm-commands.h | 18 | ||||
-rw-r--r-- | libqcdm/tests/test-qcdm-com.c | 56 |
4 files changed, 87 insertions, 12 deletions
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c index f738d4bf..156cf14c 100644 --- a/libqcdm/src/commands.c +++ b/libqcdm/src/commands.c @@ -288,6 +288,9 @@ qcdm_cmd_cdma_status_result (const char *buf, gsize len, GError **error) qcdm_result_add_string (result, QCDM_CMD_CDMA_STATUS_ITEM_ESN, tmp); g_free (tmp); + tmp_num = (guint32) GUINT16_FROM_LE (rsp->rf_mode); + qcdm_result_add_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RF_MODE, tmp_num); + tmp_num = (guint32) GUINT16_FROM_LE (rsp->cdma_rx_state); qcdm_result_add_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE, tmp_num); diff --git a/libqcdm/src/commands.h b/libqcdm/src/commands.h index 855baaea..0878fe33 100644 --- a/libqcdm/src/commands.h +++ b/libqcdm/src/commands.h @@ -52,16 +52,28 @@ QCDMResult *qcdm_cmd_esn_result (const char *buf, /**********************************************************************/ +/* Values for QCDM_CMD_CDMA_STATUS_ITEM_RF_MODE */ +enum { + QCDM_CMD_CDMA_STATUS_RF_MODE_ANALOG = 0, + QCDM_CMD_CDMA_STATUS_RF_MODE_CDMA_CELLULAR = 1, + QCDM_CMD_CDMA_STATUS_RF_MODE_CDMA_PCS = 2, + QCDM_CMD_CDMA_STATUS_RF_MODE_SLEEP = 3, + QCDM_CMD_CDMA_STATUS_RF_MODE_GPS = 4, + QCDM_CMD_CDMA_STATUS_RF_MODE_HDR = 5, +}; + /* Values for QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE */ enum { - QCDM_CMD_CDMA_STATUS_RX_STATE_NO_SERVICE = 0, - QCDM_CMD_CDMA_STATUS_RX_STATE_IDLE = 1, - QCDM_CMD_CDMA_STATUS_RX_STATE_ACCESS = 2, - QCDM_CMD_CDMA_STATUS_RX_STATE_PAGING = 3, - QCDM_CMD_CDMA_STATUS_RX_STATE_TRAFFIC = 4, + QCDM_CMD_CDMA_STATUS_RX_STATE_ENTERING_CDMA = 0, + QCDM_CMD_CDMA_STATUS_RX_STATE_SYNC_CHANNEL = 1, + QCDM_CMD_CDMA_STATUS_RX_STATE_PAGING_CHANNEL = 2, + QCDM_CMD_CDMA_STATUS_RX_STATE_TRAFFIC_CHANNEL_INIT = 3, + QCDM_CMD_CDMA_STATUS_RX_STATE_TRAFFIC_CHANNEL = 4, + QCDM_CMD_CDMA_STATUS_RX_STATE_EXITING_CDMA = 5, }; #define QCDM_CMD_CDMA_STATUS_ITEM_ESN "esn" +#define QCDM_CMD_CDMA_STATUS_ITEM_RF_MODE "rf-mode" #define QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE "rx-state" #define QCDM_CMD_CDMA_STATUS_ITEM_ENTRY_REASON "entry-reason" #define QCDM_CMD_CDMA_STATUS_ITEM_CURRENT_CHANNEL "current-channel" diff --git a/libqcdm/src/dm-commands.h b/libqcdm/src/dm-commands.h index e7ad4d36..7f14ce51 100644 --- a/libqcdm/src/dm-commands.h +++ b/libqcdm/src/dm-commands.h @@ -200,18 +200,26 @@ struct DMCmdStatusRsp { guint8 code; guint8 _unknown[3]; guint8 esn[4]; - guint8 _unknown2[2]; - guint8 _unknown3[8]; - guint8 _unknown4[4]; + guint16 rf_mode; + guint8 min1_analog[4]; + guint8 min1_cdma[4]; + guint8 min2_analog[2]; + guint8 min2_cdma[2]; + guint8 _unknown1; guint16 cdma_rx_state; + guint8 good_frames; + guint16 analog_corrected_frames; + guint16 analog_bad_frames; + guint16 analog_word_syncs; guint16 entry_reason; - guint8 _unknown5[8]; guint16 curr_chan; guint8 cdma_code_chan; guint16 pilot_base; guint16 sid; guint16 nid; - guint8 _unknown6[5]; + guint16 analog_locaid; + guint16 analog_rssi; + guint8 analog_power; } __attribute__ ((packed)); typedef struct DMCmdStatusRsp DMCmdStatusRsp; diff --git a/libqcdm/tests/test-qcdm-com.c b/libqcdm/tests/test-qcdm-com.c index 8b5fe90b..c9fe7296 100644 --- a/libqcdm/tests/test-qcdm-com.c +++ b/libqcdm/tests/test-qcdm-com.c @@ -443,7 +443,7 @@ test_com_status (void *f, void *data) gboolean success; GError *error = NULL; char buf[100]; - const char *str; + const char *str, *detail; gint len; QCDMResult *result; gsize reply_len; @@ -471,8 +471,60 @@ test_com_status (void *f, void *data) g_message ("%s: ESN: %s", __func__, str); n32 = 0; + detail = NULL; + qcdm_result_get_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RF_MODE, &n32); + switch (n32) { + case QCDM_CMD_CDMA_STATUS_RF_MODE_ANALOG: + detail = "analog"; + break; + case QCDM_CMD_CDMA_STATUS_RF_MODE_CDMA_CELLULAR: + detail = "CDMA cellular"; + break; + case QCDM_CMD_CDMA_STATUS_RF_MODE_CDMA_PCS: + detail = "CDMA PCS"; + break; + case QCDM_CMD_CDMA_STATUS_RF_MODE_SLEEP: + detail = "sleep"; + break; + case QCDM_CMD_CDMA_STATUS_RF_MODE_GPS: + detail = "GPS"; + break; + case QCDM_CMD_CDMA_STATUS_RF_MODE_HDR: + detail = "HDR"; + break; + default: + detail = "unknown"; + break; + } + g_message ("%s: CDMA RF Mode: %u (%s)", __func__, n32, detail); + + n32 = 0; + detail = NULL; qcdm_result_get_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_RX_STATE, &n32); - g_message ("%s: CDMA RX State: %u", __func__, n32); + switch (n32) { + case QCDM_CMD_CDMA_STATUS_RX_STATE_ENTERING_CDMA: + detail = "entering CDMA"; + break; + case QCDM_CMD_CDMA_STATUS_RX_STATE_SYNC_CHANNEL: + detail = "sync channel"; + break; + case QCDM_CMD_CDMA_STATUS_RX_STATE_PAGING_CHANNEL: + detail = "paging channel"; + break; + case QCDM_CMD_CDMA_STATUS_RX_STATE_TRAFFIC_CHANNEL_INIT: + detail = "traffic channel init"; + break; + case QCDM_CMD_CDMA_STATUS_RX_STATE_TRAFFIC_CHANNEL: + detail = "traffic channel"; + break; + case QCDM_CMD_CDMA_STATUS_RX_STATE_EXITING_CDMA: + detail = "exiting CDMA"; + break; + default: + detail = "unknown"; + break; + } + g_message ("%s: CDMA RX State: %u (%s)", __func__, n32, detail); n32 = 0; qcdm_result_get_uint32 (result, QCDM_CMD_CDMA_STATUS_ITEM_ENTRY_REASON, &n32); |