summaryrefslogtreecommitdiff
path: root/libqcdm
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-03-29 00:08:46 -0700
committerDan Williams <dcbw@redhat.com>2010-03-29 00:08:46 -0700
commita98fa8a4b3419a233b80ff88da40b515afa9cb1c (patch)
treeca6885f4c064078454386735e14ddf1027f75232 /libqcdm
parent98e8108ac2a2fe4d5fab254b07170ae3ffeb0ad4 (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.c3
-rw-r--r--libqcdm/src/commands.h22
-rw-r--r--libqcdm/src/dm-commands.h18
-rw-r--r--libqcdm/tests/test-qcdm-com.c56
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);