qcdm: fix up CDMA Status command fields and values

Found in two sources:
a) Руководство пользования тестером CDMA-450
b) RTManager
This commit is contained in:
Dan Williams
2010-03-29 00:08:46 -07:00
parent 98e8108ac2
commit a98fa8a4b3
4 changed files with 87 additions and 12 deletions

View File

@@ -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);

View File

@@ -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"

View File

@@ -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;

View File

@@ -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);