📄 mfw_sat.c
字号:
res = decTLV(0x2B,mandatory,"ResponseFlag");
if (res > 1)
{
*flag = 1; /* immediate response */
return 1;
}
else
{
*flag = 0; /* no immediate response */
}
return res;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decDispText |
+--------------------------------------------------------------------+
PURPOSE : decode command: display text
*/
static U32 decDispText (void)
{
TRACE_FUNCTION("decDispText()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevDisplay)
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; /* fatal error */
if (!decRespFlag(&cmd.c.text.responseFlag,0))
return 0; /* fatal error */
return MfwSatTextOut;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decGetKey |
+--------------------------------------------------------------------+
PURPOSE : decode command: get inkey
*/
static U32 decGetKey (void)
{
TRACE_FUNCTION("decGetKey()");
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; /* fatal error */
return MfwSatGetKey;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decGetString |
+--------------------------------------------------------------------+
PURPOSE : decode command: get input
*/
static U32 decGetString (void)
{
TRACE_FUNCTION("decGetString()");
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.inp.prompt,0x0D,1))
return 0;
if (!decRespLen(1))
return 0;
cmd.c.inp.defRsp.len = 0; /* default settings */
cmd.c.inp.defRsp.code = 0;
cmd.c.inp.defRsp.text = 0;
if (!decText(&cmd.c.inp.defRsp,0x17,0))
return 0; /* fatal error */
if (!decIconId(&cmd.c.inp.prompt.icon,0))
return 0; /* fatal error */
return MfwSatGetString;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decPlayTone |
+--------------------------------------------------------------------+
PURPOSE : decode command: play tone
*/
static U32 decPlayTone (void)
{
TRACE_FUNCTION("decPlayTone()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevSpeaker)
break; /* success */
TRACE_ERROR("illegal device combination");
if (curCR)
{
satResponse(SatResUnknownData);
return 0;
}
partialCompr = 1;
}
cmd.c.tone.alpha.len = 0; /* default settings */
cmd.c.tone.alpha.code = 0;
cmd.c.tone.alpha.text = 0;
cmd.c.tone.tone = 0;
cmd.c.tone.durUnit = 0;
cmd.c.tone.durValue = 0;
if (!decAlpha(&cmd.c.tone.alpha,0))
return 0;
if (!decTone(0))
return 0;
if (!decDuration(&cmd.c.tone.durUnit,0))
return 0;
return MfwSatPlayTone;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSetMenu |
+--------------------------------------------------------------------+
PURPOSE : decode command: setup menu
*/
static U32 decSetMenu (void)
{
SatItem *ip;
S16 oldLen;
U8 nItems;
TRACE_FUNCTION("decSetMenu()");
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.menu.nItems = 0;
if (!decAlpha(&cmd.c.menu.header,1))
return 0;
oldLen = curCmdLen;
ip = cmd.c.menu.items;
if (!decItem(ip,1))
return 0;
nItems = 0; /* number of menu items */
while (oldLen != curCmdLen) /* really decoded something */
{
nItems++;
oldLen = curCmdLen;
ip++;
if (!decItem(ip,0))
return 0;
}
if (!decNextAction(cmd.c.menu.items,nItems,0))
return 0;
if (!decIconId(&cmd.c.menu.header.icon,0))
return 0;
if (!decItemIcons(&cmd.c.menu,cmd.c.menu.items,nItems,0))
return 0;
cmd.c.menu.nItems = nItems;
return MfwSatSetupMenu;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSelItem |
+--------------------------------------------------------------------+
PURPOSE : decode command: select item
*/
static U32 decSelItem (void)
{
SatItem *ip;
S16 oldLen;
U8 nItems;
TRACE_FUNCTION("decSelItem()");
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.menu.nItems = 0;
cmd.c.menu.header.code = 0; /* set default values */
cmd.c.menu.header.len = 0;
cmd.c.menu.header.text = 0;
if (!decAlpha(&cmd.c.menu.header,0))
return 0;
oldLen = curCmdLen;
ip = cmd.c.menu.items;
if (!decItem(ip,1))
return 0;
nItems = 0; /* number of menu items */
while (oldLen != curCmdLen) /* really decoded something */
{
nItems++;
oldLen = curCmdLen;
ip++;
if (!decItem(ip,0))
return 0;
}
if (!decNextAction(cmd.c.menu.items,nItems,0))
return 0;
if (!decDefItem(cmd.c.menu.items,nItems,0))
return 0;
if (!decIconId(&cmd.c.menu.header.icon,0))
return 0;
if (!decItemIcons(&cmd.c.menu,cmd.c.menu.items,nItems,0))
return 0;
cmd.c.menu.nItems = nItems;
return MfwSatSelectItem;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSndSMS |
+--------------------------------------------------------------------+
PURPOSE : decode command: send SMS
*/
static U32 decSndSMS (void)
{
TRACE_FUNCTION("decSndSMS()");
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.sms.info.code = 0; /* set default values */
cmd.c.sms.info.len = -1; /* optional info if absent */
cmd.c.sms.info.text = 0;
if (!decAlpha(&cmd.c.sms.info,0))
return 0;
cmd.c.sms.addr.ton = 0; /* set default values */
cmd.c.sms.addr.len = 0;
cmd.c.sms.addr.number = 0;
if (!decAddrSS(&cmd.c.sms.addr,0x06,0)) /* address (SS string) */
return 0;
if (!decSMS(&cmd.c.sms.sms,1))
return 0;
if (!decIconId(&cmd.c.sms.info.icon,0))
return 0;
return MfwSatSendSMS;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSndSS |
+--------------------------------------------------------------------+
PURPOSE : decode command: send SS
*/
static U32 decSndSS (void)
{
TRACE_FUNCTION("decSndSS()");
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.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,0x09,1)) /* SS string (== address) */
return 0;
if (!decIconId(&cmd.c.ss.info.icon,0))
return 0;
return MfwSatSendSS;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SAT |
| STATE : code ROUTINE : decSndUSSD |
+--------------------------------------------------------------------+
PURPOSE : decode command: send USSD
*/
static U32 decSndUSSD (void)
{
TRACE_FUNCTION("decSndUSSD()");
while (curCmdLen > 0)
{
if (!decDevId(1))
return 0;
if (cmd.source == SatDevSIM && cmd.dest == SatDevNet)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -