在手机程序编写中,有时需要获取手机SIM卡的短信中心号码来判别SIM卡的所属地区
void mmi_get_sms_sc()
{
char temp;
S16 errorCode;
#if defined(__MMI_DUAL_SIM_MASTER__)
//判断是否双卡手机
E_MTPNP_AD_SIMCARD_STATUS
sim1_status, sim2_status;
sim1_status =
MTPNP_AD_Get_Card1Status();
//获取卡1的工作状态
sim2_status =
MTPNP_AD_Get_Card2Status();
//获取卡2的工作状态
if ((g_simcard_status &
MTPNP_AD_CARD1) && sim1_status == MTPNP_AD_SIMCARD_VALID)
//卡1处于工作状态
{
ReadValue(NVRAM_SMS_ACTIVE_PROFILE_INDEX,
&temp, DS_BYTE, &errorCode); //从NVRAM中读取卡1的
//短信设置状态
mmi_CaivsGetSCReq(&temp);
}
else if ((g_simcard_status &
MTPNP_AD_CARD2) && sim2_status == MTPNP_AD_SIMCARD_VALID)
{
ReadValue(NVRAM_SLAVE_ACTIVE_PROFILE_IDX,
&temp, DS_BYTE, &errorCode);
mmi_CaivsGetSC2Req(&temp);
}
else
{
ReadValue(NVRAM_SMS_ACTIVE_PROFILE_INDEX,
&temp, DS_BYTE, &errorCode);
mmi_CaivsGetSCReq(&temp);
}
#else
ReadValue(NVRAM_SMS_ACTIVE_PROFILE_INDEX,
&temp , DS_BYTE, &errorCode);
mmi_CaivsGetSCReq(&temp);
#endif
}
void mmi_CaivsGetSCReq (void* inMsg)
{
MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT*
msgReq;
U8 index = *(U8*)inMsg;
msgReq =
(MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT*)OslConstructDataPtr(sizeof
(MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT));
//动态分配内存
msgReq->profile_no = index;
SetProtocolEventHandler(mmi_CaivsGetSCRsp,
PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP); //注册回调函数
mmi_frm_sms_send_message(MOD_MMI,
MOD_L4C, 0, PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_REQ, (oslParaType *)msgReq,
NULL); //成功就发出
PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP消息
}
void mmi_CaivsGetSCRsp (void* inMsg)
{
MMI_FRM_SMS_GET_PROFILE_PARAMS_RSP_STRUCT
*msgRsp = (MMI_FRM_SMS_GET_PROFILE_PARAMS_RSP_STRUCT*)inMsg;
ClearProtocolEventHandler(PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP);
//清除消息
memset(g_simcard_sc1, 0,
sizeof(g_simcard_sc1));
strcpy((char *)g_simcard_sc1, (char
*)msgRsp->sc_addr.number);
//g_simcard_sc1就是短信中心号码
kal_prompt_trace(MOD_BT, "sim1 sms
center is [%s]", g_simcard_sc1);
}
#if defined(__MMI_DUAL_SIM_MASTER__)
void mmi_CaivsGetSC2Rsp (void* inMsg)
{
MMI_FRM_SMS_GET_PROFILE_PARAMS_RSP_STRUCT
*msgRsp = (MMI_FRM_SMS_GET_PROFILE_PARAMS_RSP_STRUCT*)inMsg;
//mmi_frm_clear_slave_protocol_event_handler(PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP);
mmi_frm_clear_slave_protocol_event_handler(PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP);
memset(g_simcard_sc2, 0,
sizeof(g_simcard_sc2));
strcpy((char *)g_simcard_sc2, (char
*)msgRsp->sc_addr.number);
kal_prompt_trace(MOD_BT, "sim2 sms
center is [%s]", g_simcard_sc2);
}
void mmi_CaivsGetSC2Req (void* inMsg)
{
MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT*
msgReq;
U8 index = *(U8*)inMsg;
msgReq =
(MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT*)OslConstructDataPtr(sizeof(MMI_FRM_SMS_GET_PROFILE_PARAMS_REQ_STRUCT));
msgReq->profile_no = index;
mmi_frm_set_slave_protocol_event_handler(mmi_CaivsGetSC2Rsp,
PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_RSP);
mmi_frm_sms_send_message(MOD_MMI,
MOD_L4C_2, 0, PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_REQ, (oslParaType *)msgReq,
NULL);
}
#endif