📄 mfw_sat.c
字号:
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.ss.info.code = 0; /* set default values */
cmd.c.ss.info.len = -1; /* optional info if absent */
cmd.c.ss.info.text = 0;
if (!decAlpha(&cmd.c.ss.info,0))
return 0;
if (!decAddrSS(&cmd.c.ss.ss,0x0A,1)) /* USSD string */
return 0;
if (!decIconId(&cmd.c.ss.info.icon,0))
return 0;
return MfwSatSendUSSD;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decCall |
+--------------------------------------------------------------------+
PURPOSE : decode command: setup call
*/
static U32 decCall (void)
{
TRACE_FUNCTION("decCall()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevNet)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.call.info.code = 0; /* set default values */
cmd.c.call.info.len = -1; /* optional info if absent */
cmd.c.call.info.text = 0;
cmd.c.call.info2.code = 0; /* set default values */
cmd.c.call.info2.len = -1; /* optional info if absent */
cmd.c.call.info2.text = 0;
if (!decAlpha(&cmd.c.call.info,0))
return 0;
if (!decAddrSS(&cmd.c.call.addr,0x06,1)) /* address (SS string) */
return 0;
cmd.c.call.bc.len = 0; /* set default values */
cmd.c.call.bc.data = 0;
if (!decData(&cmd.c.call.bc,0x07,0)) /* bearer capabilities */
return 0;
cmd.c.call.sa.len = 0; /* set default values */
cmd.c.call.sa.data = 0;
if (!decData(&cmd.c.call.sa,0x08,0)) /* subaddress */
return 0;
cmd.c.call.durUnit = 0; /* set default values */
cmd.c.call.durValue = 0;
if (!decDuration(&cmd.c.call.durUnit,0)) /* redial timing */
return 0;
if (!decIconId(&cmd.c.call.info.icon,0)) /* icon for info 1 */
return 0;
if (!decAlpha(&cmd.c.call.info2,0)) /* call setup info (2) */
return 0;
if (!decIconId(&cmd.c.call.info2.icon,0)) /* icon for info 2 */
return 0;
return MfwSatCall;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decExecAT |
+--------------------------------------------------------------------+
PURPOSE : decode command: run AT command
*/
static U32 decExecAT (void)
{
TRACE_FUNCTION("decExecAT()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevME)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.cmd.info.code = 0; /* set default values */
cmd.c.cmd.info.len = -1; /* optional info if absent */
cmd.c.cmd.info.text = 0;
if (!decAlpha(&cmd.c.cmd.info,0))
return 0;
cmd.c.cmd.cmd.len = 0; /* set default values */
cmd.c.cmd.cmd.data = 0;
if (!decData(&cmd.c.cmd.cmd,0x28,1)) /* AT command string */
return 0;
if (!decIconId(&cmd.c.cmd.info.icon,0)) /* icon for info */
return 0;
return MfwSatExecAT;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSndDTMF |
+--------------------------------------------------------------------+
PURPOSE : decode command: send DTMF
*/
static U32 decSndDTMF (void)
{
TRACE_FUNCTION("decSndDTMF()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevNet)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.cmd.info.code = 0; /* set default values */
cmd.c.cmd.info.len = -1; /* optional info if absent */
cmd.c.cmd.info.text = 0;
if (!decAlpha(&cmd.c.cmd.info,0))
return 0;
cmd.c.cmd.cmd.len = 0; /* set default values */
cmd.c.cmd.cmd.data = 0;
if (!decData(&cmd.c.cmd.cmd,0x2C,1)) /* DTMF string */
return 0;
if (!decIconId(&cmd.c.cmd.info.icon,0)) /* icon for info */
return 0;
return MfwSatSendDTMF;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decCcRes |
+--------------------------------------------------------------------+
PURPOSE : decode Call Control result
*/
static U32 decCcRes (void)
{
TRACE_FUNCTION("decCcRes()");
cmd.c.ccres.addr.ton = -1; /* set default values */
cmd.c.ccres.addr.len = -1;
cmd.c.ccres.addr.number = -1;
cmd.c.ccres.addr2.ton = -1; /* set on SMS result */
cmd.c.ccres.addr2.len = -1;
cmd.c.ccres.addr2.number = -1;
if (!decAddrSS(&cmd.c.ccres.addr,0x06,0)) /* address */
return 0;
if (curTag == 0x06) /* was an address */
{
if (!decAddrSS(&cmd.c.ccres.addr2,0x06,0)) /* try another */
return 0;
if (curTag == 0x06) /* hit: have SMS result */
{
cmd.c.ccres.info.code = -1; /* get alpha id */
cmd.c.ccres.info.len = -1;
cmd.c.ccres.info.text = -1;
if (!decAlpha(&cmd.c.ccres.info,0))
return 0;
return MfwSatCcRes;
}
}
else
{
if (curTag == 0x09) /* not an address */
if (!decAddrSS(&cmd.c.ccres.addr,0x09,0)) /* try SS */
return 0;
if (curTag == 0x0a) /* not an SS string */
if (!decAddrSS(&cmd.c.ccres.addr,0x0a,0)) /* try USSD */
return 0;
}
cmd.c.ccres.bc.len = -1; /* set default values */
cmd.c.ccres.bc.data = -1;
if (!decData(&cmd.c.ccres.bc,0x07,0)) /* bearer capabilities */
return 0;
cmd.c.ccres.sa.len = -1; /* set default values */
cmd.c.ccres.sa.data = -1;
if (!decData(&cmd.c.ccres.sa,0x08,0)) /* subaddress */
return 0;
cmd.c.ccres.info.code = -1; /* set default values */
cmd.c.ccres.info.len = -1;
cmd.c.ccres.info.text = -1;
if (!decAlpha(&cmd.c.ccres.info,0)) /* alpha information */
return 0;
cmd.c.ccres.bcRepInd = 0; /* set default values */
if (decByte(&cmd.c.ccres.bcRepInd,0x2a,0)<2) /* BC repeat ind. */
return MfwSatCcRes;
cmd.c.ccres.bc2.len = -1; /* set default values */
cmd.c.ccres.bc2.data = -1;
if (!decData(&cmd.c.ccres.bc2,0x07,0)) /* bearer 2 capabilities */
return 0;
return MfwSatCcRes;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decRefresh |
+--------------------------------------------------------------------+
PURPOSE : decode command: refresh
*/
static U32 decRefresh (void)
{
TRACE_FUNCTION("decRefresh()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevME)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.files.len = 0; /* set default values */
cmd.c.files.data = 0;
if (!decData(&cmd.c.files,0x12,0)) /* refresh file list */
return 0;
//ES!! do real refresh here...
return MfwSatRefresh;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSetEvents |
+--------------------------------------------------------------------+
PURPOSE : decode command: setup event list
*/
static U32 decSetEvents (void)
{
U8 *ep;
U8 res;
U8 sat_res[2];
TRACE_FUNCTION("decSetEvents()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevME)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.events.len = 0; /* default: remove list */
cmd.c.events.elem[0] = 0;
eventList =0;
res = decTLV(0x19,1,"Event List");
if (res > 1)
{
ep = &cmd.c.events.elem[0];
while (curLen--)
{
switch (*curVal)
{
case SatEvtUserAction:
eventList|= SatEvtUserActionActivated;
case SatEvtIdleScreen:
eventList|= SatEvtIdleScreenActivated;
#if defined(WAP)
case SatEvtBrowserTermination:
eventList|= SatEvtBrowserTerminateActivated;
#endif
*ep |= *curVal; /* event list element */
cmd.c.events.len++; /* number of events */
break;
default:
return;
}
curVal++;
}
sat_res[0] = SatResSuccess; /*Terminal response always sent if there are elements */
sat_res[1] = SatResAiNoCause; /* even if they are not MMI */
TRACE_EVENT_P1("MFW event list %x",eventList);
satDone(&cmd, (U8*)&sat_res, sizeof(sat_res));
}
else
{
satResponse(SatResUnknownData);
return 0; /* no event list found */
}
return MfwSatSetEvents;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decIdleText |
+--------------------------------------------------------------------+
PURPOSE : decode command: setup idle mode text
*/
static U32 decIdleText (void)
{
TRACE_FUNCTION("decIdleText()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevME)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
if (!decText(&cmd.c.text,0x0D,1))
return 0;
if (!decIconId(&cmd.c.text.icon,0))
return 0;
return MfwSatIdleText;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decOpenChannel |
+--------------------------------------------------------------------+
PURPOSE : decode command: open channel
*/
static U32 decOpenChannel (void)
{
SatAddress addr;
SatData subaddr;
TRACE_FUNCTION("decOpenChannel()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevME)
break; /* success */
TRACE_ERROR("illegal devic
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -