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

📄 mfw_sat.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            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 + -