MTK&BREW手机开发
IOT物联网小镇
公众号:【IOT物联网小镇】。
道哥,十多年的嵌入式开发老兵。擅长用通俗的语言、简洁的代码,一步一步的剖析C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式平台的底层思考过程。
坚持原创,厚积薄发、换位思考,以读者的角度来总结文章。每一篇输出,不仅仅是干货的呈现,更是引导你一步一步的深入思考,从底层逻辑来提升自己。
展开
-
MTK:sofekey的显示
目的:简单说明softkey的显示过程需求:有些双模项目,左软件与send2键共用。在idle界面时要求按send2键(即LSK)直接拨号,此时真正左软件的功能只有通过center键来实现。但是LSK的标签仍然显示在屏幕的左下方,引起误解。因此,在拨号界面可以把LSK的标签往中间位置移动。 1.有些screen id,需要同时SHOW LSK and RSK,于是在dm_redraw_cate原创 2013-10-22 15:21:12 · 1285 阅读 · 0 评论 -
MTK6225通话设置
typedef struct{ U8 CallerID; //手机中保存的Caller ID状态。执行过程是:用户设置之后,MMI向L4发送消息,然后等待RSP消息。 等到RSP后,判断设置是否成功。如果返回结果为1,就把用户输入的CallerIDInput拷贝到CallerID中,然后写入NVRAM。 U8 CallerIDInput;原创 2013-10-22 15:17:21 · 1751 阅读 · 0 评论 -
MTK中的hilite,hint函数处理
在进入一个新的Screen的Entry函数中,为什么还要有: RegisterHighlightHandler()? 我的理解是假设即将进入的SCREEN有3个MENU,每个MENU在该APPLICATION的初始函数中都已经设置了Hilite函数。进入该SCREEN之后,就直接调用设置的Hilite handler就可以了。为什么还要在这里显示的Register??是不是因为有些SC原创 2013-10-22 15:17:19 · 1381 阅读 · 0 评论 -
BREW: UIM record read steps
pbm_gsdi_init() mmgsdi_client_evt_reg(pbm_mmgsdi_client_id, pbm_mmgsdi_card_status_cb, pbm_mmgsdi_status_cb,原创 2013-10-22 15:22:18 · 1205 阅读 · 0 评论 -
关于区号查询与电话精灵的数据库说明
1. __ccProvince[]省的信息。包括:省的首字母;名称;多少个城市。typedef struct tagPROVINCE{ char chPy; char reserved; char szName[MAX_PROVLEN]; //8个字节。省名称 WORD nCountyCount;}PROVINCE;eg:0原创 2013-10-22 15:20:40 · 1851 阅读 · 0 评论 -
MTK:UCM--hold,retrieve,swap,split,conference
1.Hole Single,Hold Conference(操作完全相同)1. mmi_ucm_hold_action() mmi_ucm_hold_action_with_index(g_ucm_p->call_misc.hilite_tab); 2. mmi_ucm_hold_action_with_index() 显示processing g_原创 2013-10-22 15:20:30 · 1334 阅读 · 0 评论 -
MTK_DM_layer
gdi_handle base_layer_handle;gdi_handle preview_layer_handle;gdi_handle status_layer_handle;void ShowCategoryScreem(void){ gdi_layer_multi_layer_enable(); gdi_layer_get_base_handle(&base_layer_handl原创 2013-10-22 15:19:39 · 1286 阅读 · 0 评论 -
MTK-call history operate(1)
product: In CM, Where and How to write call log 1.call history的保存。在各种通话状态中的保存过程1.MO(1)放弃outgoing callProcessPSHangupSucEvent() LogCallInfoForCallHistory(*handle); GetEndTimeAndNotif原创 2013-10-22 15:19:33 · 1176 阅读 · 0 评论 -
MTK-Phonebook bootup(2)
二、增加一个entry//这是菜单的初始化函数void mmi_phb_init(void){ mmi_phb_search_init(); mmi_phb_operate_single_init(); mmi_phb_operate_mass_init(); mmi_phb_caller_group_init(); mmi_phb_extra_num原创 2013-10-22 15:19:26 · 1137 阅读 · 0 评论 -
MTK6225 Speed Dial
1. [话机设置]中的[速拨]设置 资源加载: populateSettingMenu() PopulatePhoneSetupResData() ADD_APPLICATION_MENUITEM((MENU_SETTING_SPEED_DIAL, MENU9102_INITIAL_SETUP, 2,原创 2013-10-22 15:19:03 · 1135 阅读 · 0 评论 -
MTK6225-IDLE SCREEN键盘锁与解锁
开机函数执行过程(倒过来看):EntryIdleScreen() line 3082BeforeEntryIdleScr() line 5254mmi_bootup_entry_network_searching() line 1464mmi_bootup_exit_welcome_screen() line 1390ShowWelcomeScr() line 5076exit_cus原创 2013-10-22 15:18:20 · 1297 阅读 · 0 评论 -
(转载)MS被叫过程分析
一、查询过程当主叫端信令链路建立起来之后,主叫端将把初始化地址消息(IAI)发送给其关口局MSC(GMSC),因为在该IAI消息中含有被叫用户的MSISDN,GMSC就可以根据其MSISDN号码分析出其被叫归属HLR的七号信令识别号,于是GMSC就可向该HLR发出一条送路由消息(SEND_ROUTING_INFORMATION)的报文,HLR收到该消息后,将检查用户的记录,然后根据记录内容采取不原创 2013-10-22 15:18:16 · 1816 阅读 · 0 评论 -
(转载)MS 主叫过程分析
设一个移动台处于开机并且处于空闲状态,若它要建立与另一用户的呼叫(在此以与一个PSTN用户的通信过程为例),在用户看来他只要输入另一个用户的号码,再按发送键,移动台就开始启动程序直到电话拨通。其实移动台和网络需经过许多步骤才能将呼叫建立起来一、呼叫建立过程移动台首先需建立一个与MSC的主信令链路,并要进行鉴权加密及TMSI重分配的过程,详细过程见第二节和第三节的内容。(一) 被叫号码原创 2013-10-22 15:18:14 · 1735 阅读 · 0 评论 -
MTK6225电话管理2
放弃呼出的电话,在OUTGOING界面按下右软件,进入:void DropRequest(void){ gCallAbortRequested---指示是否正在处理放弃的电话 gDropRequestFlag------指示是否是主动放弃电话的。 以上全部设置为TRUE HangupCall(handle);}void Hangu原创 2013-10-22 15:17:25 · 1284 阅读 · 0 评论 -
MTK6225电话管理5
【结束单线】,存在于2种情况中:1.没有发生呼叫等待的情况。包括: (1)1通ACTIVE CALL + 1通HOLD CALL (2)N通ACTIVE CALL(电话会议) (3)1通HOLD CALL + N通ACTIVE CALL 这种情况处理是挂断当前高亮的那通电话,不论是ACTIVE CALL还是HOLD CALL。 2.发生原创 2013-10-22 15:17:32 · 1300 阅读 · 0 评论 -
MTK6225开机过程-系统启动1(simulator2)
//开始初始化 InitCallManagement(); // Initialize the Call Management Application Call manahement needs to be initialized here because of SOS calls concept { InitIn原创 2013-10-22 15:17:38 · 1259 阅读 · 0 评论 -
MTK-IDLE SCREEN-OPN,SPN,PLMN显示问题
EntryIdleScreen() mmi_idle_entry_idle_screen() IdleRefreshServiceIndicationArea() SetLine1Text(gNWProviderName);, == SetIdleScreenNetworkName(), 设置idle_scree原创 2013-10-22 15:21:06 · 1625 阅读 · 0 评论 -
MTK6226-DS-PHB-SIMB-Load
一、电话簿菜单资源结构MAIN_MENU_PHONEBOOK_MENUIDMENU_ID_PHB_QUICK_SEARCH MITEM101_PBOOK_SEARCH_ENTRY,MITEM111_PBOOK_VIEW_ENTRY, MITEM111_PBOOK_VIEW_SIMA_ENTRY, MITEM111_PBOO原创 2013-10-22 15:20:36 · 1269 阅读 · 0 评论 -
MTK: ShowCategory200Screen()
说明:1.所有的ShowScreen都有2个ID:Screen ID(EntryNewScreen()函数中设置的ID),以及模板ID(Category ID)。2.所有的窗口模板的基本设置都保存在一个全局变量:g_categories_controls_map中。它的结构是:typedef struct{ U16 category_id;原创 2013-10-22 15:20:06 · 1299 阅读 · 0 评论 -
MTK-call history initialize
资源加载过程InitializeAll() PopulateResData() PopulateCallHistoryRes() AddCallLogApplicationRes(); 未接电话,已拨电话,已接电话。原创 2013-10-22 15:19:30 · 1224 阅读 · 0 评论 -
MTK-Phonebook PDF study
1.Introductioninclude files: PhoneBookDef.h PhoneBookGprot.h PhoneBookProt.h PhoneBookTypes.h PhoneBookMain.c PhoneBookOperateSingle.c PhoneBookSear原创 2013-10-22 15:19:22 · 1409 阅读 · 0 评论 -
MTK-PoneBook data structure
1. MMI_PHB_ENTRY_STRUCT主要的数据结构,包含了phonebook entry.typedef struct{ U8 storage; /* 0-none, 1-SIM, 2-ME */ //SIM entry or a Phone entry U8 type; U16 index;原创 2013-10-22 15:19:18 · 1114 阅读 · 0 评论 -
MTK手机软件系统工程和配置简介2(转载)
二. MTK手机软件系统的构建过程 如前面一节所述,MTK手机软件系统的构建使用了GNU的make,使得整个工程的构建可以自动进行,且可以灵活控制。整个构建过程由Make.bat、make2.pl、MoDIS.dsw、Gsm2.mak、Option.mak、_.mak等文件控制。构建PC模拟版是通过msdev和VC的工程文件MoDIS.dsw来完成的。Gsm2.mak是构建ARM版的核心M原创 2013-10-22 15:18:50 · 1219 阅读 · 0 评论 -
MTK手机软件系统工程和配置简介(转载)
二. MTK手机软件系统的构建过程 如前面一节所述,MTK手机软件系统的构建使用了GNU的make,使得整个工程的构建可以自动进行,且可以灵活控制。整个构建过程由Make.bat、make2.pl、MoDIS.dsw、Gsm2.mak、Option.mak、_.mak等文件控制。构建PC模拟版是通过msdev和VC的工程文件MoDIS.dsw来完成的。Gsm2.mak是构建ARM版的核心M原创 2013-10-22 15:18:48 · 1403 阅读 · 0 评论 -
(转载)MTK软件系统的工程结构和配置
MTK是现在市场上所有国内手机设计、制造商使用的最多的一个完整的手机产品解决方案,大部分做手机的技术人员都对此有接触和了解。不过,MTK的整套软件系统十分庞大且复杂,很多刚接触这套系统的软件工程师一时不知如何进行配置和客户化定制。本文在此对整个MTK软件系统的工程结构和配置进行了简单介绍,希望通过此文和大家相互交流MTK软件系统的维护和修改、定制方面的心得。 MTK使用了nucleus实原创 2013-10-22 15:18:35 · 1791 阅读 · 0 评论 -
(转载)CPHS规范
CPHS规范PART A -市场需求A.1 介绍和历史在1989年晚些时候,三个社团被选作英国新一代个人通信网络的提供商。他们于1991年1月1日成立了欧洲个人通信运营商联盟,他们是Mercury Personal Communications、Microtel和Unitel。联盟认可并支持ETSI制定的DCS1800的标准作为生产厂商发展手机技术规范的基础。DCS1800标准提供了手机之间作为最原创 2013-10-22 15:18:29 · 1241 阅读 · 0 评论 -
MTK6225-键盘锁状态下拨打紧急电话
在这3函数:ntryIdleScreen() EntryScrnSimErrorScreen() EntryScrnSimBlockRsp()中,都设置:mmi_frm_kbd_reg_pre_key_hdlr(IdleScreenEmergencyCallCheckNKeypadLock);就是设置:frm_p->kbd_pre_func = I原创 2013-10-22 15:18:25 · 1217 阅读 · 0 评论 -
(转载)短信业务与基于智能卡的业务
1. 概述 短消息业务(SMS Short Massage Services简称短信业务)采用存贮转发方式,其承载通道为控制信令通道,故信息容量不大,一条短消息最多包含140个字节(160个字符或70个汉字)。在短信运营初期,运营商只提供移动用户间的收/发短信业务。严格地说,在这种业务模式中,运营商只提供端到端透明数据承载通道,供移动终端传输其应用层信息,故初期所提供的短信业务属移动数据基本业原创 2013-10-22 15:18:18 · 1980 阅读 · 0 评论 -
MTK 开发入门资料
编译工具和辅助工具:ADS1.2ADS12_update_842.exeMSYS-1.0.10.exeMinGW-3.1.0-1.exeImageMagick-6.2.5-5-Q16-windows-dll.exe7z313.exe 开始编译:切换到项目根目录,然后在命令行下面执行命令:make custom=proj gprs new其中,命令可以为 clean, update,原创 2013-10-22 15:18:04 · 1424 阅读 · 0 评论 -
MTK6225电话管理--全局变量
在电话管理中,使用了很多的全局变量。以下为其中部分的解释。1.gCallAbortRequested:指示当前是否正在进行放弃电话的处理。2.gDropRequestFlag:指示当前是放弃电话?还是结束电话?主要用在两个函数中: EntryScrNotifyCallAborted()和EntryScr1004NotifyEndCallDuration()。这个变量在主 动挂断电原创 2013-10-22 15:17:51 · 1300 阅读 · 0 评论 -
MTK6225开机过程-系统启动1(simulator1)
以下开机过程都是在simulator上跑时得出的结论 第一步:启动simulator的时候,直接进入:MMI_task( )1. iacMemInit();2.进入一个while(1)循环。以后的过程都是通过消息机制,即:一直在这个循环中读取消息,然后做相应的处理。第一次进入while(1)之后,OslReceiveMsgExtQ(qid, &Message)就读取到一个消息:PRT_M原创 2013-10-22 15:17:36 · 1396 阅读 · 0 评论 -
MTK6225电话管理6
结束所有的HOLD CALLs,存在2种情况:1.没有发生呼叫等待时,1通ACTIVE CALL + N通HOLD CALLs,【结束所有暂停】菜单2.有呼叫等待时: (1)1通HOLD CALL,【结束】菜单 (2)1通ACTIVE CALL + 1通HOLD CALL,【暂停结束】菜单 (3)1通ACTIVE CALL + N通HOLD CALL,原创 2013-10-22 15:17:34 · 1321 阅读 · 0 评论 -
brew: 字节序问题
周六在做BREW副模电话簿记录时,遇到一字节序问题。如下: 开机初始化,读取副模SIM卡电话簿记录时,卡上有1笔记录(name:a1, number:111)。读上来时,通过TRACE查看姓名字串的数据为0x00 0x61 0x00 0x31(该字串name1定义成char型,每2个字节组成1个unicode,低字节在后。),我要把name string拷贝到我自己的数据结构name2中,原创 2013-10-22 15:22:09 · 1189 阅读 · 0 评论 -
MTK拨号分类
USSD:非结构化补充业务数据,包括2种:(1)补充业务(如:呼叫转移);(2)非结构补充业务(如证券交易,信息查询) MTK平台手机,呼叫过程如下:1. 在待机界面输入号码:(1)*#0086#(SS);(2)**21*12345678*11#(USSD中的SS);(3)13812345678(CC)概念有点模糊(1)中的是本机操作,(2)中与网络相关。2. 按原创 2013-10-22 15:20:45 · 1791 阅读 · 0 评论 -
MTK:UCM--MT
来电:1. PsCBackCallIncoming() ProcessIncomingEvents(CM_PS_CALL_INCOMING, info); 2.ProcessIncomingCallEvent(info) AddNewCallInfo() 在这里,cm_p->state_info.AllCalls[index].group_id = G原创 2013-10-22 15:20:28 · 1257 阅读 · 0 评论 -
MTK-Phonebook bootup(1)
一、开机流程开机之后,初始化时,在InitializeAll()中call mmi_phb_init_protocol(),设置如下几个PS消息CBack函数:SetProtocolEventHandler(mmi_phb_ind_startup_finish, PRT_PHB_STARTUP_FINISH_IND);SetProtocolEventHandler(mmi_phb_ind_s原创 2013-10-22 15:19:24 · 1088 阅读 · 0 评论 -
MTK6225 PhoneBook BootUp
开机之后,初始化时,在InitializeAll()中call mmi_phb_init_protocol(),设置如下几个PS消息CBack函数:SetProtocolEventHandler(mmi_phb_ind_startup_finish, PRT_PHB_STARTUP_FINISH_IND);SetProtocolEventHandler(mmi_phb_ind_startup_原创 2013-10-22 15:19:14 · 1095 阅读 · 0 评论 -
MTK6225 PhoneBook ResPopulate and Initialize
ADN(SIM 电话簿) 缩位拨号。数字 + #,然后按SNED键。FDN(SIM 固定拨号) 固定拨号。当启用后,只能拨打所设置的号码,来电不受影响。需要输入PIN2码MSISDN(SIM 保护号码) EN(SIM 紧急号码) LND(合成 ME 和 S原创 2013-10-22 15:19:11 · 1111 阅读 · 0 评论 -
MTK6225 Idle Screen Digit Handler
EntryIdleScreen() g_idle_context.IsOnIdleScreen = 1; g_idle_context.IsOnDialerScreen = 0; g_pwr_context.PowerOnMMIStatus = MMI_POWER_ON_IDLE 自动键盘锁定时器:IDLE_APP_AUTO_LOCK_TIMER原创 2013-10-22 15:19:05 · 1211 阅读 · 0 评论 -
(转载)比较流行的手机开发平台综述
比较流行的手机开发平台综述[52RD.com]希望这篇文章能够给手机爱好者们一些帮助。[52RD.com]1. Symbian:[52RD.com]Symbian平台为目前智能手机市场的老大,智能手机全球市场占70%以上,在欧洲和亚洲占绝对优势,只是在美国市场份额少得可怜,希望今年nokia在美国发力,赶上其它智能手机。根据UI风格的不同,Symbian分为s60和UIQ两个平台,其中nokia使原创 2013-10-22 15:18:37 · 1446 阅读 · 0 评论