MTK 手機開發小技巧(3)

聲明:本資料歸本公司同事整理提供

修改默認輸入法

方法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);

發佈了55 篇原創文章 · 獲贊 4 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章