MTK 手机开发小技巧(3)

来源:互联网 发布:单片机生产厂家 编辑:程序博客网 时间:2024/04/27 18:08

声明:本资料归本公司同事整理提供

修改默认输入法

方法1

common_mmi_cache_config.c

 

NVRAM_SETTING_PREFER_INPUT_METHOD 默认值

 

延伸:

common_mmi_cache_byte

默认语言:NVRAM_SETTING_LANG

默认城市:CURRENT_CITY

默认java的网络参数配置:

    BYTE_ENTRY(NVRAM_JAVA_SETTING_PROF_ID, 0x02),

    BYTE_ENTRY(NVRAM_JAVA_SETTING_PROF2_ID, 0x02),

默认wap 网络参数配置:

    SHORT_ENTRY(NVRAM_WAP_PROF_ACTIVE_WAP_PROFILE_INDEX, 0x02, 0x02),  

    SHORT_ENTRY(NVRAM_WAP_PROF_ACTIVE_MMS_PROFILE_INDEX, 0x02, 0x02),  

 

方法2

Nv项默认值为0xff,然后nv项版本号升级

SetInputMethodFromNVRAM函数中修改

 

NVRAM_SETTING_PREFER_INPUT_METHOD

 

 

修改蓝牙名称

BTMMICM.c

MMI_BT_DEF_HOST_BT_NAME= { 'M', 'T', 'K', 'B', 'T', 'D', 'E', 'V', 'I', 'C', 'E', '/0' };

 

NVRAM_EF_BT_INFO_LID

#define NVRAM_EF_BT_INFO_LID_VERNO                      "011" //modify

 

mmi_bth_init—> mmi_bth_init_freshdev_defaultà mmi_bth_nvram_write_info

 

号码匹配

NVRAM_EF_SYS_CACHE_OCTET_DEFAULT

 

1/2是否插卡

        MTPNP_AD_Get_Card1Status() != MTPNP_AD_SIMCARD_ABSENT

        MTPNP_AD_Get_Card2Status() != MTPNP_AD_SIMCARD_ABSENT)

 

1/2是否可用

E_MTPNP_AD_SIMCARD_USABLE_SIDE MTPNP_AD_Get_UsableSide(void);

 

typedef enum

{

MTPNP_AD_DUALSIM_UNUSABLE = MTPNP_AD_FLIGHT,

MTPNP_AD_SIMCARD1_NOSIM_USABLE = MTPNP_AD_CARD1,

MTPNP_AD_SIMCARD2_NOSIM_USABLE = MTPNP_AD_CARD2,

MTPNP_AD_SIMCARD1_USABLE=MTPNP_AD_CARD1| MTPNP_AD_SIMCARD_VALID,

MTPNP_AD_SIMCARD2_USABLE=MTPNP_AD_CARD2| MTPNP_AD_SIMCARD_VALID,

MTPNP_AD_DUALSIM_USABLE= (MTPNP_AD_CARD1 | MTPNP_AD_SIMCARD_VALID) + (MTPNP_AD_CARD2 | MTPNP_AD_SIMCARD_VALID)

} E_MTPNP_AD_SIMCARD_USABLE_SIDE;

 

IfMTPNP_AD_Get_UsableSide() >= MTPNP_AD_SIMCARD1_USABLE

 

 

判断网络

Public Land Mobile Network -- 公共陆地移动(通信)网络 

 

判断网络ID

1memcmp(gHomePLMNNum, "51011", 5)

2memcmp(gHomePLMNNum_2, "51011", 5)

 

gPLMN   手机卡1当前接入网络的网络ID

gPLMN_2 手机卡2当前接入网络的网络ID

 

中国移动:46000  46002

中国联通:46001

 

IMEI号(International Mobile Station Equipment Identity -- 国际移动台设备识别):手机设备的ID 又称手机串号,国际标准查询指令 *#06#

4位二进制数来表示1位十进制数中的0~910个数码,简称BCD

 

static kal_uint8 const NVRAM_EF_IMEI_IMEISV_DEFAULT[] =

{

/*355093016307403*/

    0x53, 0x05, 0x39, 0x10, 0x36, 0x70, 0x04, 0xF3, /*The IMEI is 15 digit */ 

    0x87,       /* Software version number */

    0x01,        /* Padding */

 

    0x53, 0x05, 0x39, 0x10, 0x36, 0x70, 0x04, 0xF1, /*The IMEI is 15 digit */

    0x87,       /* Software version number */

    0x01        /* Padding */

 

};

 

获得IMEI号:消息MSG_ID_MMI_NW_GET_IMEI_REQ,目的task,消息RSP响应函数

static void APPLE_OS_RequestIMEIRsp(void *msg_buf)

{

    mmi_nw_get_imei_rsp_struct *imeiresponse = (mmi_nw_get_imei_rsp_struct*) msg_buf;

      

    if ((imeiresponse) && (imeiresponse->result == 1))

       {

       memset(gIMEIBuf,0,16+1);

       memcpy((char *)gIMEIBuf, (char *) imeiresponse->imei,16);

       }

}

void APPLE_OS_RequestIMEI()

{

    MYQUEUE Message;

    Message.oslMsgId = MSG_ID_MMI_NW_GET_IMEI_REQ;

    Message.oslDataPtr = NULL;

    Message.oslPeerBuffPtr = NULL;

    Message.oslSrcId = MOD_MMI;

    Message.oslDestId = MOD_L4C;   /* MOD_L4C _2*/

    OslIntMsgSendExtQueue(&Message);

SetProtocolEventHandler(APPLE_OS_RequestIMEIRsp, MSG_ID_MMI_NW_GET_IMEI_RSP);

 

/*SetSlaveProtocolEventHandler(APPLE_OS_RequestIMEIRsp, MSG_ID_MMI_NW_GET_IMEI_RSP);*/

 

}

IMSI号(国际移动用户识别码(IMSI International Mobile Subscriber Identity ):卡的ID,手机卡的唯一识别号是imsi号,而不是手机号,运营商后台数据库维护imsi号和手机号的一一映射,所以可以做到换卡不换号

 

MSI共有15位,其结构如下: 
MCC+MNC+MIN 
MCC
Mobile Country Code,移动国家码,共3位,中国为460; 
MNC:Mobile Network Code
,移动网络码,共2位,联通CDMA系统使用03,一个典型的IMSI号码为460030912121001; 

 

获得IMSI号:消息PRT_GET_IMSI_REQMSG_ID_MMI_SMU_GET_IMSI_REQ):目的task,消息RSP

void mr_sim1_get_imsi_req(void)

{

    /*----------------------------------------------------------------*/

    /* Local Variables                                                */

    /*----------------------------------------------------------------*/

    MYQUEUE Message;

 

    Message.oslSrcId = MOD_MMI;

    Message.oslDestId = MOD_L4C;

    Message.oslMsgId = PRT_GET_IMSI_REQ;

    Message.oslDataPtr = NULL;

    Message.oslPeerBuffPtr = NULL;

    OslMsgSendExtQueue(&Message);

    SetProtocolEventHandler(mr_sim_get_imsi_rsp, PRT_GET_IMSI_RSP);

}

 

static void mr_sim_get_imsi_rsp(void *msg_p)

{

    mmi_smu_get_imsi_rsp_struct *local_data_p = (mmi_smu_get_imsi_rsp_struct*) msg_p;

    kal_prompt_trace(MOD_MMI,"mr_sim_get_imsi_rsp local_data_p->result=%d",local_data_p->result); 

    if (local_data_p->result == ST_SUCCESS)

    {

       memset(gIMSI,0,sizeof(gIMSI));

       memcpy(gIMSI,local_data_p->imsi+1, 16);

    }

   

    kal_prompt_trace(MOD_MMI,"gIMSI=%s",gIMSI);

原创粉丝点击