拿“在待机界面拨打一通电话”举例
首先在待机界面中,对SEND键注册函数IdleDialPadCall。当你在待机界面输入数字键并按下SEND键后,执行此函数。
进入后先在SSCStringParsing2中进行SSC字符判断(Check the Supplement Service Control String table 2),如果为非则继续执行MakeCall。
MakeCall:Check if the background sound is turn on
then go to MakeCallEx
MakeCallEx:Wrapper which checks to see if the call to be made is O/G or USSD
then go to CheckShortCutOrCall
CheckShortCutOrCall:check if the key is shortcut or not, if not it makes a call
then go to MakeMyCall
MakeMyCall:判断了号码长度是否超限
then go to MakeOutgoingcall
MakeOutgoingcall:OutgoingProcessCMEvent(CM_KB_OUTGOINGCALL,&MsgStruct);
then go to ProcessKBOutgoingEvent
ProcessKBOutgoingEvent:在待机状态下拨打 switch(GetCurrentState()) case CM_IDLE_STATE:
then go to MakePsInitiateCall
MakePsInitiateCall:MakePsSSVUSSDReq
MakePsSSVUSSDReq:MOD_MMI向MOD_L4C发送消息PRT_USSDVSS_REQ,并且根据预设的响应消息PRT_USSDVSS_RSP设置回调函数PsCBackSetCallFeatures
等待L4C执行完后发回Response,执行回调函数PsCBackSetCallFeatures
正常状况下,回调函数中走到OutgoingProcessCMEvent(CM_PS_SHOW_OUTGOING_CALL_SCREEN,NULL);
即显示呼出界面ProcessShowOutgoingCallScreen
ProcessShowOutgoingCallScreen:EntryScr1001OutgoingCall 进入OutgoingCall窗口
EntryScr1001OutgoingCall:设置各状态值,处理号码,用ShowCategory18Screen画出呼出界面窗口,重注册按键:LSK、RSK、SEND、END、数字键盘