⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfw_sat.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        {
            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)
            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;
    cm

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -