USSD:非结构化补充业务数据,包括2种:(1)补充业务(如:呼叫转移);(2)非结构补充业务(如证券交易,信息查询)
MTK平台手机,呼叫过程如下:
1. 在待机界面输入号码:(1)*#0086#(SS);(2)**21*12345678*11#(USSD中的SS);(3)13812345678(CC)
概念有点模糊(1)中的是本机操作,(2)中与网络相关。
2. 按下SEND键,进入:IdleDialPadCall(),调用函数SSCStringParsing2()去判断是否是本机操作的SS号码。
如果是本机的SS号码(如上面的*#0086#),则直接执行表ssc_table2[]中定义的函数,执行对应的功能(*#0086#设置简体中文),然后退出。
如果不是SS号码,进入步骤3。
3. MakeCall()--MakeCallEx()(判断是否紧急拨号,是否有非法号码)--CheckShortCutOrCall()--MakeMyCall()。。。发送号码到L4C层分析。
4. L4C返回消息PRT_USSDVSS_RSP,进入PsCBackSetCallFeatures()。返回消息rsp->info.opcode中指示了号码的类型:
(1)对于**21*12345678*11#,返回消息判断出rsp->info.opcode == SS_OPERATION,SHOW出:USSD请求中。(注意:在MakeCall()之前,就设置了PS消息PRT_MMI_SS_CALL_FORWARD_RSP的回调函数为CALLSETForwardRsp)。设置成功的消息返回后显示提示信息,然后退出。
(2)对于13812345678,返回消息判断出rsp->info.opcode == CC_OPERATION,下面执行普通的语音呼叫流程。
补充:
1.注意这几个函数:
SSCStringParsing1()--进入工程模式,工厂模式,硬件版本等操作码,
SSCStringParsing3()--SIM 卡相关的PIN, PUK码。
2.上面的(2)**21*12345678*11#(USSD中的SS)一般已经做成菜单操作了。
3.紧急拨号与一般的语音拨号相同,在函数PsCBackSetCallFeatures()中到PHB匹配的时候,如果检查到是紧急号码,把姓名设置为“紧急拨号”。