diff options
Diffstat (limited to 'libwmc/src')
-rw-r--r-- | libwmc/src/commands.c | 16 | ||||
-rw-r--r-- | libwmc/src/commands.h | 5 | ||||
-rw-r--r-- | libwmc/src/protocol.h | 73 |
3 files changed, 61 insertions, 33 deletions
diff --git a/libwmc/src/commands.c b/libwmc/src/commands.c index e617eabf..56bd11d7 100644 --- a/libwmc/src/commands.c +++ b/libwmc/src/commands.c @@ -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)); diff --git a/libwmc/src/commands.h b/libwmc/src/commands.h index d5f5cfc9..f8b0c44b 100644 --- a/libwmc/src/commands.h +++ b/libwmc/src/commands.h @@ -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" diff --git a/libwmc/src/protocol.h b/libwmc/src/protocol.h index 77ec49c7..e341f56f 100644 --- a/libwmc/src/protocol.h +++ b/libwmc/src/protocol.h @@ -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; |