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

📄 smi_aca.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
    return;

  /*
   *-----------------------------------------------------------------
   * make a copy of the key sequence
   *-----------------------------------------------------------------
   */
  strncpy (hnd->keySeq, inSeq, MAX_KEYSEQ_SIZE);
  hnd->keySeq[MAX_KEYSEQ_SIZE] = NULL_TERM;

  hnd->nextSeq  = hnd->keySeq;
  hnd->restSeq  = hnd->nextSeq;
  hnd->grp      = SEQGRP_UNKNOWN;
  hnd->atReturn = AT_FAIL;

  do
  {
    if (ksd_decode (hnd->nextSeq,
                    cal_isWithinCall (),
                    &hnd->grp,
                    &hnd->restSeq,
                    &hnd->param)         EQ TRUE)
    {
      switch (hnd->grp)
      {
        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_MS_OFF
         *---------------------------------------------------------
         */
        case (SEQGRP_MS_OFF):
          hnd->atReturn = reg_powerOff ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_MS_ON
         *---------------------------------------------------------
         */
        case (SEQGRP_MS_ON):
          hnd->atReturn = reg_powerOn ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_HOOK_OFF
         *---------------------------------------------------------
         */
        case (SEQGRP_HOOK_OFF):
          hnd->atReturn = cal_acceptCall ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_HOOK_ON
         *---------------------------------------------------------
         */
        case (SEQGRP_HOOK_ON):
          hnd->atReturn = cal_releaseCall ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_DTMF
         *---------------------------------------------------------
         */
        case (SEQGRP_DTMF):
          hnd->atReturn = cal_sendDtmf (hnd->param.dtmf, TRUE);
          hnd->atReturn = cal_sendDtmf (hnd->param.dtmf, FALSE);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_KEYPAD_IND
         *---------------------------------------------------------
         */
        case (SEQGRP_KEYPAD_IND):
          ui_keypadInd (hnd->param.keypad.keyCode, KEY_STAT_PRS);
          ui_keypadInd (hnd->param.keypad.keyCode, KEY_STAT_REL);

          hnd->atReturn = AT_CMPL;
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_LCD_TEST
         *---------------------------------------------------------
         */
        case (SEQGRP_LCD_TEST):
          ui_startLcdTest ();

          hnd->atReturn = AT_CMPL;
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SHOW_CALL_TABLE
         *---------------------------------------------------------
         */
        case (SEQGRP_SHOW_CALL_TABLE):
          hnd->atReturn = cal_showCallTable ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SET_ABBR_DIAL
         *---------------------------------------------------------
         */
        case (SEQGRP_SET_ABBR_DIAL):
          cal_setAbbrDial (hnd->param.abbrDial.index,
                           hnd->param.abbrDial.number);
          hnd->atReturn = AT_CMPL;
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_CHANGE_REGISTER
         *---------------------------------------------------------
         */
        case (SEQGRP_CHANGE_REGISTER):
          hnd->atReturn = reg_setReg (&hnd->param.cops);

          if (hnd->atReturn EQ AT_CMPL)
            hnd->atReturn = reg_changeReg ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SET_REGISTER
         *---------------------------------------------------------
         */
        case (SEQGRP_SET_REGISTER):
          hnd->atReturn = reg_setReg (&hnd->param.cops);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_START_REGISTER
         *---------------------------------------------------------
         */
        case (SEQGRP_START_REGISTER):
          hnd->atReturn = reg_setReg (&hnd->param.cops);

          if (hnd->atReturn EQ AT_CMPL)
            hnd->atReturn = reg_startReg ();
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_SEND
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_SEND):
          hnd->atReturn = sms_startInputProc (SMS_PROC_SEND);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_SEND_FROM_MEM
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_SEND_FROM_MEM):
          hnd->atReturn = sms_startInputProc (SMS_PROC_SEND_FROM_MEM);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_WRITE
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_WRITE):
          hnd->atReturn = sms_startInputProc (SMS_PROC_WRITE);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_DELETE
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_DELETE):
          hnd->atReturn = sms_startInputProc (SMS_PROC_DELETE);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_READ
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_READ):
          hnd->atReturn = sms_startInputProc (SMS_PROC_READ);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_LIST
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_LIST):
          hnd->atReturn = sms_startInputProc (SMS_PROC_LIST);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_SMS_READ_SINGLE
         *---------------------------------------------------------
         */
        case (SEQGRP_SMS_READ_SINGLE):
          hnd->atReturn = sms_startInputProc (SMS_PROC_READ_SINGLE);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_DIAL
         *---------------------------------------------------------
         */
        case (SEQGRP_DIAL):
          hnd->atReturn = cal_setupCall (&hnd->param.dial);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_CB):
          hnd->atReturn = ss_changeCb (inSeq, &hnd->param.cb);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_CF):
          hnd->atReturn = ss_changeCf (inSeq, &hnd->param.cf);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_CL):
          switch (hnd->param.cl.ssCd)
          {
            case (KSD_SS_CLIP):
              hnd->atReturn = ss_intrgtClip ();
              break;

            case (KSD_SS_CLIR):
              hnd->atReturn = ss_intrgtClir ();
              break;

            case (KSD_SS_COLP):
              hnd->atReturn = ss_intrgtColp ();
              break;

            case (KSD_SS_COLR):
              break;
          }
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_CW):
          hnd->atReturn = ss_changeCw (inSeq, &hnd->param.cw);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_PWD):
          hnd->atReturn = sec_regPasswd (inSeq, &hnd->param.pwd);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_UBLK):
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which are handled by the
         * ACI dirctly by using the sAT_Dn function
         *---------------------------------------------------------
         */
        case (SEQGRP_USSD):
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which results in a change
         * of CLIR parameter
         * in temporary mode a call is set up
         *---------------------------------------------------------
         */
        case (SEQGRP_SUP_CLIR):
        case (SEQGRP_INV_CLIR):
          if (strlen (hnd->restSeq) EQ 0)
            hnd->atReturn = ss_changeClir (&hnd->param.Clir);
          else
          {
            /*
             *-----------------------------------------------------
             * in temporary mode a call is set up
             *-----------------------------------------------------
             */
            T_KSD_CLIR   Clir;
            T_KSD_SEQGRP nextGrp  = SEQGRP_UNKNOWN;
            CHAR*        remSeq   = NULL;

            Clir.mode = hnd->param.Clir.mode;

            if (ksd_decode (hnd->restSeq, FALSE,
                            &nextGrp,     &remSeq,
                            &hnd->param)           EQ TRUE
                AND
                nextGrp EQ SEQGRP_DIAL)
            {
              switch (Clir.mode)
              {
                case (CLIR_MOD_Invoc):
                  hnd->param.dial.clirOvrd = D_CLIR_OVRD_Invoc;
                  break;

                case (CLIR_MOD_Supp):
                  hnd->param.dial.clirOvrd = D_CLIR_OVRD_Supp;
                  break;

                default:
                  hnd->param.dial.clirOvrd = D_CLIR_OVRD_Default;
                  break;
              }

              hnd->atReturn = cal_setupCall (&hnd->param.dial);
            }
          }
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which results in a change
         * of CLIP parameter
         *---------------------------------------------------------
         */
        case (SEQGRP_SUP_CLIP):
        case (SEQGRP_INV_CLIP):
          hnd->atReturn = ss_changeClip (&hnd->param.Clip);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which results in a change
         * of COLR parameter
         *---------------------------------------------------------
         */
        case (SEQGRP_SUP_COLR):
        case (SEQGRP_INV_COLR):
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence groups which results in a change
         * of COLP parameter
         *---------------------------------------------------------
         */
        case (SEQGRP_SUP_COLP):
        case (SEQGRP_INV_COLP):
          hnd->atReturn = ss_changeColp (&hnd->param.Colp);
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_PRSNT_IMEI
         *---------------------------------------------------------
         */
        case (SEQGRP_PRSNT_IMEI):
          hnd->atReturn = cmhSS_ksdIMEI  ( CMD_SRC_LCL );

          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_ACT_SIM_LOCK
         *---------------------------------------------------------
         */
        case (SEQGRP_ACT_SIM_LOCK):
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_DEACT_SIM_LOCK
         *---------------------------------------------------------
         */
        case (SEQGRP_DEACT_SIM_LOCK):
          break;

        /*
         *---------------------------------------------------------
         * handling of sequence group SEQGRP_INTRGT_SIM_LOCK

⌨️ 快捷键说明

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