wmc: decode more of DEVICE_INFO
CDMA MIN, home SID, PRL & ERI version
This commit is contained in:
@@ -181,7 +181,23 @@ wmc_cmd_device_info_result (const char *buf, size_t buflen)
|
||||
memcpy (tmp, rsp->hwrev, sizeof (rsp->hwrev));
|
||||
wmc_result_add_string (r, WMC_CMD_DEVICE_INFO_ITEM_HW_REVISION, tmp);
|
||||
|
||||
/* MIN */
|
||||
memset (tmp, 0, sizeof (tmp));
|
||||
wmc_assert (sizeof (rsp->min) <= sizeof (tmp));
|
||||
memcpy (tmp, rsp->min, sizeof (rsp->min));
|
||||
wmc_result_add_string (r, WMC_CMD_DEVICE_INFO_ITEM_CDMA_MIN, tmp);
|
||||
|
||||
wmc_result_add_u32 (r, WMC_CMD_DEVICE_INFO_ITEM_HOME_SID, le16toh (rsp->home_sid));
|
||||
wmc_result_add_u32 (r, WMC_CMD_DEVICE_INFO_ITEM_PRL_VERSION, le16toh (rsp->prlver));
|
||||
wmc_result_add_u32 (r, WMC_CMD_DEVICE_INFO_ITEM_ERI_VERSION, le16toh (rsp->eriver));
|
||||
|
||||
if (rsp2) {
|
||||
/* MEID */
|
||||
memset (tmp, 0, sizeof (tmp));
|
||||
wmc_assert (sizeof (rsp2->meid) <= sizeof (tmp));
|
||||
memcpy (tmp, rsp2->meid, sizeof (rsp2->meid));
|
||||
wmc_result_add_string (r, WMC_CMD_DEVICE_INFO_ITEM_MEID, tmp);
|
||||
|
||||
/* IMEI */
|
||||
memset (tmp, 0, sizeof (tmp));
|
||||
wmc_assert (sizeof (rsp2->imei) <= sizeof (tmp));
|
||||
|
@@ -36,6 +36,11 @@ WmcResult * wmc_cmd_init_result (const char *buf, size_t len, int wmc2);
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_MODEL "model"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_FW_REVISION "firmware-revision"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_HW_REVISION "hardware-revision"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_CDMA_MIN "cdma-min"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_HOME_SID "home-sid"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_PRL_VERSION "prl-version"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_ERI_VERSION "eri-version"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_MEID "meid"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_IMEI "imei"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_ICCID "iccid"
|
||||
#define WMC_CMD_DEVICE_INFO_ITEM_MCC "mcc"
|
||||
|
@@ -77,16 +77,21 @@ typedef struct WmcCmdInit2Rsp WmcCmdInit2Rsp;
|
||||
|
||||
struct WmcCmdDeviceInfoRsp {
|
||||
WmcCmdHeader hdr;
|
||||
u_int8_t _unknown1[27];
|
||||
char manf[64];
|
||||
char model[64];
|
||||
char fwrev[64];
|
||||
char hwrev[64];
|
||||
u_int8_t _unknown2[64];
|
||||
u_int8_t _unknown3[64];
|
||||
u_int8_t _unknown4[22];
|
||||
u_int8_t _unknown5[8];
|
||||
u_int8_t _unknown6[6];
|
||||
u_int8_t _unknown1[27];
|
||||
char manf[64];
|
||||
char model[64];
|
||||
char fwrev[64];
|
||||
char hwrev[64];
|
||||
u_int8_t _unknown2[64];
|
||||
u_int8_t _unknown3[64];
|
||||
char min[10]; /* CDMA2000/IS-95 MIN */
|
||||
u_int8_t _unknown4[12];
|
||||
u_int16_t home_sid;
|
||||
u_int8_t _unknown5[2];
|
||||
u_int16_t prlver;
|
||||
u_int8_t _unknown6[2];
|
||||
u_int16_t eriver;
|
||||
u_int8_t _unknown7[4];
|
||||
} __attribute__ ((packed));
|
||||
typedef struct WmcCmdDeviceInfoRsp WmcCmdDeviceInfoRsp;
|
||||
|
||||
@@ -99,21 +104,22 @@ struct WmcCmdDeviceInfo2Rsp {
|
||||
char hwrev[64];
|
||||
u_int8_t _unknown2[64];
|
||||
u_int8_t _unknown3[64];
|
||||
u_int8_t min[10]; /* CDMA2000/IS-95 MIN */
|
||||
u_int8_t min[10]; /* CDMA2000/IS-95 MIN */
|
||||
u_int8_t _unknown4[12];
|
||||
u_int16_t home_sid; /* ? */
|
||||
u_int8_t _unknown5[6];
|
||||
u_int16_t eri_ver; /* ? */
|
||||
u_int8_t _unknown6[3];
|
||||
u_int8_t _unknown7[64];
|
||||
u_int8_t _unknown8;
|
||||
u_int16_t home_sid;
|
||||
u_int8_t _unknown5[2];
|
||||
u_int16_t prlver;
|
||||
u_int8_t _unknown6[2];
|
||||
u_int16_t eriver;
|
||||
u_int8_t _unknown7[4];
|
||||
u_int8_t _unknown8[64];
|
||||
u_int8_t meid[14];
|
||||
u_int8_t _unknown9[6]; /* always zero */
|
||||
u_int8_t imei[16];
|
||||
u_int8_t _unknown10[6]; /* always zero */
|
||||
u_int8_t _unknown11[16];
|
||||
u_int8_t imei[16];
|
||||
u_int8_t _unknown11[6]; /* always zero */
|
||||
u_int8_t _unknown12[16];
|
||||
u_int8_t iccid[20];
|
||||
u_int8_t _unknown12[6];
|
||||
u_int8_t _unknown13[6];
|
||||
} __attribute__ ((packed));
|
||||
typedef struct WmcCmdDeviceInfo2Rsp WmcCmdDeviceInfo2Rsp;
|
||||
|
||||
@@ -126,26 +132,27 @@ struct WmcCmdDeviceInfo3Rsp {
|
||||
char hwrev[64];
|
||||
u_int8_t _unknown2[64];
|
||||
u_int8_t _unknown3[64];
|
||||
u_int8_t min[10]; /* CDMA2000/IS-95 MIN */
|
||||
u_int8_t min[10]; /* CDMA2000/IS-95 MIN */
|
||||
u_int8_t _unknown4[12];
|
||||
u_int16_t home_sid; /* ? */
|
||||
u_int8_t _unknown5[6];
|
||||
u_int16_t eri_ver; /* ? */
|
||||
u_int8_t _unknown6[3];
|
||||
u_int8_t _unknown7[64];
|
||||
u_int8_t _unknown8;
|
||||
u_int16_t home_sid;
|
||||
u_int8_t _unknown5[2];
|
||||
u_int16_t prlver;
|
||||
u_int8_t _unknown6[2];
|
||||
u_int16_t eri_ver;
|
||||
u_int8_t _unknown7[4];
|
||||
u_int8_t _unknown8[64];
|
||||
u_int8_t meid[14];
|
||||
u_int8_t _unknown9[6]; /* always zero */
|
||||
u_int8_t imei[16];
|
||||
u_int8_t _unknown10[6]; /* always zero */
|
||||
u_int8_t _unknown11[16];
|
||||
u_int8_t imei[16];
|
||||
u_int8_t _unknown11[6]; /* always zero */
|
||||
u_int8_t _unknown12[16];
|
||||
u_int8_t iccid[20];
|
||||
u_int8_t _unknown12[6];
|
||||
u_int8_t _unknown13[6];
|
||||
u_int8_t mcc[16];
|
||||
u_int8_t mnc[16];
|
||||
u_int8_t _unknown13[4];
|
||||
u_int8_t _unknown14[4];
|
||||
u_int8_t _unknown15[4];
|
||||
u_int8_t _unknown16[4];
|
||||
} __attribute__ ((packed));
|
||||
typedef struct WmcCmdDeviceInfo3Rsp WmcCmdDeviceInfo3Rsp;
|
||||
|
||||
|
@@ -273,6 +273,7 @@ test_com_device_info (void *f, void *data)
|
||||
gint len;
|
||||
WmcResult *result;
|
||||
size_t reply_len;
|
||||
guint32 u32;
|
||||
|
||||
len = wmc_cmd_device_info_new (buf, sizeof (buf));
|
||||
g_assert (len == 2);
|
||||
@@ -292,33 +293,53 @@ test_com_device_info (void *f, void *data)
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_MANUFACTURER, &str);
|
||||
g_message ("%s: Manufacturer: %s", __func__, str);
|
||||
g_message ("%s: Manuf: %s", __func__, str);
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_MODEL, &str);
|
||||
g_message ("%s: Model: %s", __func__, str);
|
||||
g_message ("%s: Model: %s", __func__, str);
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_FW_REVISION, &str);
|
||||
g_message ("%s: FW Revision: %s", __func__, str);
|
||||
g_message ("%s: FW Rev: %s", __func__, str);
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_HW_REVISION, &str);
|
||||
g_message ("%s: HW Revision: %s", __func__, str);
|
||||
g_message ("%s: HW Rev: %s", __func__, str);
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_CDMA_MIN, &str);
|
||||
g_message ("%s: CDMA MIN: %s", __func__, str);
|
||||
|
||||
u32 = 0;
|
||||
wmc_result_get_u32 (result, WMC_CMD_DEVICE_INFO_ITEM_HOME_SID, &u32);
|
||||
g_message ("%s: Home SID: %d", __func__, u32);
|
||||
|
||||
u32 = 0;
|
||||
wmc_result_get_u32 (result, WMC_CMD_DEVICE_INFO_ITEM_PRL_VERSION, &u32);
|
||||
g_message ("%s: PRL Ver: %d", __func__, u32);
|
||||
|
||||
u32 = 0;
|
||||
wmc_result_get_u32 (result, WMC_CMD_DEVICE_INFO_ITEM_ERI_VERSION, &u32);
|
||||
g_message ("%s: ERI Ver: %d", __func__, u32);
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_MEID, &str);
|
||||
g_message ("%s: MEID: %s", __func__, str ? str : "(none)");
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_IMEI, &str);
|
||||
g_message ("%s: IMEI: %s", __func__, str ? str : "(none)");
|
||||
g_message ("%s: IMEI: %s", __func__, str ? str : "(none)");
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_ICCID, &str);
|
||||
g_message ("%s: ICCID: %s", __func__, str ? str : "(none)");
|
||||
g_message ("%s: ICCID: %s", __func__, str ? str : "(none)");
|
||||
|
||||
str = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_MCC, &str);
|
||||
str2 = NULL;
|
||||
wmc_result_get_string (result, WMC_CMD_DEVICE_INFO_ITEM_MNC, &str2);
|
||||
g_message ("%s: MCC/MNC: %s %s", __func__,
|
||||
g_message ("%s: MCC/MNC: %s %s", __func__,
|
||||
str ? str : "(none)",
|
||||
str2 ? str2 : "(none)");
|
||||
|
||||
|
Reference in New Issue
Block a user