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

📄 smi_sms.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
       * function call is expected
       *-------------------------------------------------------------
       */
      if (currSmsCmd EQ AT_CMD_NONE)
      {
        T_ACI_RETURN   ret;
        T_ACI_SMS_STOR mem;
        UBYTE          index;
      
        va_start (varpars, sigCode);
        mem   = va_arg (varpars, T_ACI_SMS_STOR);
        index = va_arg (varpars, UBYTE);
        va_end (varpars);

        if (sAT_PlusCPMS (CMD_SRC_LCL,
                          mem,
                          SMS_STOR_NotPresent, 
                          SMS_STOR_NotPresent ) NEQ AT_CMPL)
          sms_CmgrRej (CMS_ERR_UnknownErr);

        ret = sAT_PlusCMGR (CMD_SRC_LCL, index, SMS_READ_Normal);
  
        currSmsCmd = AT_CMD_CMGR;

        /*
         *-----------------------------------------------------------
         * process result code of ACI function call
         *-----------------------------------------------------------
         */   
        switch (ret)
        {
          case (AT_EXCT):
            break;

          default:
            rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
            break;
        }
      }
      else
        /*
         *-----------------------------------------------------------
         * error handling while waiting for answer on further ACI
         * function call
         *-----------------------------------------------------------
         */
        sms_CmgrRej (CMS_ERR_UnknownErr);
    }
    break;

    /*
     *---------------------------------------------------------------
     * process the signal SMS_SIG_WRITE
     *---------------------------------------------------------------
     */
    case (SMS_SIG_WRITE):
    {
      /*
       *-------------------------------------------------------------
       * call to ACI function when no answer on a further ACI
       * function call is expected
       *-------------------------------------------------------------
       */
      if (currSmsCmd EQ AT_CMD_NONE)
      {
        T_ACI_RETURN ret;
      
        ret = sAT_PlusCMGW_Old (CMD_SRC_LCL,
                            ACI_NumParmNotPresent,
                            &da.number[0],
                            &da.type,
                            SMS_STAT_NotPresent,
                            NOT_PRESENT_8BIT,
                            &msg, NULL, NULL, FALSE);
  
        currSmsCmd = AT_CMD_CMGW;

        /*
         *-----------------------------------------------------------
         * process result code of ACI function call
         *-----------------------------------------------------------
         */   
        switch (ret)
        {
          case (AT_EXCT):
            break;

          default:
            rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
            break;
        }
      }
      else
        /*
         *-----------------------------------------------------------
         * error handling while waiting for answer on further ACI
         * function call
         *-----------------------------------------------------------
         */
        sms_CmgwRej (CMS_ERR_UnknownErr);
    }
    break;

    /*
     *---------------------------------------------------------------
     * process the signals SMS_SIG_SUBMIT and SMS_SIG_SUBMIT_FROM_MEM
     *---------------------------------------------------------------
     */
    case (SMS_SIG_SUBMIT):
    case (SMS_SIG_SUBMIT_FROM_MEM):
    {
      SHORT pid = 0;
      SHORT dcs = 0;
      SHORT fo  = TP_MTI_SMS_SUBMIT | TP_SRR_REQUEST;

      fo |= (vp < 0 ? TP_VPF_NOT_PRESENT : TP_VPF_RELATIVE);

      if (!(sigCode EQ SMS_SIG_SUBMIT_FROM_MEM AND
            curIdx <= -1))
      {
        /*
         *-----------------------------------------------------------
         * setting of text mode parameter and service center address 
         *-----------------------------------------------------------
         * call to ACI function when no answer on a further ACI
         * function call is expected
         *-----------------------------------------------------------
        */
        if (sAT_PlusCSMP (CMD_SRC_LCL, fo, vp, NULL, NULL, pid, dcs)
                                                           EQ AT_CMPL
            AND

            sAT_PlusCSCA (CMD_SRC_LCL,
                          &sca.number[0],
                          &sca.type       ) EQ AT_CMPL

            AND

            currSmsCmd EQ AT_CMD_NONE)
        {
          T_ACI_RETURN ret;

          if (sigCode EQ SMS_SIG_SUBMIT)
          {
            /*
             *-------------------------------------------------------
             * submit the short message
             *-------------------------------------------------------
             */
            ret = sAT_PlusCMGS_Old (CMD_SRC_LCL,
                                &da.number[0],
                                &da.type,
                                &msg, NULL, NULL, FALSE);
  
            currSmsCmd = AT_CMD_CMGS;
          }
          else
          {
            /*
             *-------------------------------------------------------
             * submit the short message from memory
             *-------------------------------------------------------
             */
            ret = sAT_PlusCMSS (CMD_SRC_LCL,
                                curIdx,
                                &da.number[0],
                                &da.type);

            currSmsCmd = AT_CMD_CMSS;
          }

          /*
           *---------------------------------------------------------
           * process result code of ACI function call
           *---------------------------------------------------------
           */   
          switch (ret)
          {
            case (AT_EXCT):
              break;

            default:
              rAT_PlusCMS (currSmsCmd, CMS_ERR_UnknownErr, NULL);
              break;
          }
        }
        else
        {
          /*
           *-------------------------------------------------------
           * error handling while waiting for answer on further ACI
           * function call
           *-------------------------------------------------------
           */
           if (sigCode EQ SMS_SIG_SUBMIT)
             sms_CmgsRej (CMS_ERR_UnknownErr);
           else
             sms_CmssRej (CMS_ERR_UnknownErr);
        }
      }
    }
    break;
  }
  sms_siglevel--;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_sigCmss              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to signal that a message is
            send successfully to the service center.

            <mr>: message reference
*/
LOCAL void sms_sigCmss (UBYTE mr)
{
  TRACE_FUNCTION ("sms_sigCmss ()");

  ui_signal (UI_SIG_SMS_SUBMIT, mr);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : rAT_PlusCMSS             |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that a message is
            send successfully to the service center.

            <mr>: message reference
*/
GLOBAL void rAT_PlusCMSS (UBYTE mr, UBYTE numSeg)
{
  TRACE_FUNCTION ("rAT_PlusCMSS ()");

  if (currSmsCmd EQ AT_CMD_CMSS)
  {
    currSmsCmd = AT_CMD_NONE;
    sms_sigCmss (mr);  
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_CmssRej              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that a previous 
            submitted short message could not be sent to the
            service center.

            <err>: error code
*/
LOCAL void sms_CmssRej (T_ACI_CMS_ERR err)
{
  TRACE_FUNCTION ("sms_CmssRej ()");

  ui_signal (UI_SIG_UNHND_CMS_ERR, err);
}
                
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_sigCmgs              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to signal that a message is
            send successfully to the service center.

            <mr>: message reference
*/
LOCAL void sms_sigCmgs (UBYTE mr)
{
  TRACE_FUNCTION ("sms_sigCmgs ()");

  ui_signal (UI_SIG_SMS_SUBMIT, mr);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : rAT_PlusCMGS             |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that a message is
            send successfully to the service center.

            <mr>: message reference
*/
GLOBAL void rAT_PlusCMGS (UBYTE mr, UBYTE numSeg)
{
  TRACE_FUNCTION ("rAT_PlusCMGS ()");

  if (currSmsCmd EQ AT_CMD_CMGS)
  {
    currSmsCmd = AT_CMD_NONE;
    sms_sigCmgs (mr);  
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_CmgsRej              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that a previous 
            submitted short message could not be sent to the
            service center.

            <err>: error code
*/
LOCAL void sms_CmgsRej (T_ACI_CMS_ERR err)
{
  TRACE_FUNCTION ("sms_CmgsRej ()");

  ui_signal (UI_SIG_UNHND_CMS_ERR, err);
}
                
/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_sigCmgd              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to signal the result of a former
            requested deletion of a message from preferred message
            storage.

            <rslt>: result code
*/
LOCAL void sms_sigCmgd (T_SMS_ACA_RSLT rslt)
{
  TRACE_FUNCTION ("sms_sigCmgd ()");

  ui_signal (UI_SIG_SMS_DELETE, rslt);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_SMS                  |
| STATE   : code                  ROUTINE : sms_CmgdRej              |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that a message was not
            deleted successfully from preferred message storage.

            <err>: error code
*/
LOCAL void sms_CmgdRej (T_ACI_CMS_ERR err)
{

⌨️ 快捷键说明

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