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

📄 smi_ui.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
      ui_startNewInput (areaUser,
                        0,
                        0,
                        ">",
                        MAX_INPUT_SIZE - 10,
                        IT_NUMERIC | IT_ECHO,
                        INP_MOD_DIAL,
                        NULL,
                        TRUE);

      ui_data->inputSeq = INP_SEQ_NONE;
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_WAITING_CALL
     *---------------------------------------------------------------
     */
    case UI_SIG_WAITING_CALL:
    {
      CHAR* caller;

      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * switch on an acoustic indication of the waiting call
       *-------------------------------------------------------------
       */
      if (!ui_data->waitingOn)
      {
        cal_sendAudioToneReq (CT_CALL_WAIT,
                              csf_getVolume (VT_RINGER),
                              TONE_SWT_ON_PERIODIC);

        ui_data->waitingOn = TRUE;
      }

      /*
       *-------------------------------------------------------------
       * make an optic indication of the waiting call
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_WAITING_CALL));
      wm_showArea (areaState);

      /*
       *-------------------------------------------------------------
       * show the caller if screen is large enough
       *-------------------------------------------------------------
       */
      if (screensize_y EQ 4)
      {
        va_start (varpars, sigCode);
        caller = va_arg (varpars, CHAR*);
        va_end (varpars);

        wm_clearArea (areaCaller);
        wm_areaWrite (areaCaller, 0, 0, caller);
        wm_showArea  (areaCaller);
      }

      /*
       *-------------------------------------------------------------
       * close any menu while a call is waiting
       *-------------------------------------------------------------
       */
      if (ui_data->state EQ UI_SELECT)
        ui_stopMenu ();

      /*
       *-------------------------------------------------------------
       * reset the input while a call is waiting
       *-------------------------------------------------------------
       */
      ui_startNewInput (areaUser,
                        0,
                        0,
                        ">",
                        MAX_INPUT_SIZE - 10,
                        IT_NUMERIC | IT_ECHO,
                        INP_MOD_DIAL,
                        NULL,
                        TRUE);

      ui_data->inputSeq = INP_SEQ_NONE;
      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_BUSY
     *---------------------------------------------------------------
     */
    case UI_SIG_BUSY:
    {
      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * switch on an acoustic indication of the busy subscriber
       *-------------------------------------------------------------
       */
      if (!ui_data->nibtOn)
      {
        ui_handleNibt(NIBT_BUSY);
/*
        cal_sendAudioToneReq (CT_BUSY,
                              csf_getVolume (VT_RINGER),
                              TONE_SWT_ON_PERIODIC);
*/
        ui_data->nibtOn = TRUE;
      }

      /*
       *-------------------------------------------------------------
       * make an optic indication of the busy indication
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_USER_BUSY));
      wm_showArea (areaState);

      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_NO_ANSWER
     *---------------------------------------------------------------
     */
    case UI_SIG_NO_ANSWER:
    {
      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * make an optic indication when subscriber does not answer
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_NO_ANSWER));
      wm_showArea (areaState);

      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_CLIP
     *---------------------------------------------------------------
     */
    case UI_SIG_CLIP:
    {
      CHAR*  alpha_calladdr;
      CHAR*  subaddr;
      CHAR   callInfo[60];

      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * make an optic indication of the CLIP
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, "CLIP");
      wm_showArea (areaState);

      /*
       *-------------------------------------------------------------
       * show the calling line identity if screen is large enough
       *-------------------------------------------------------------
       */
      if (screensize_y EQ 4)
      {
        va_start (varpars, sigCode);
        alpha_calladdr = va_arg (varpars, CHAR*);
        subaddr        = va_arg (varpars, CHAR*);
        va_end (varpars);

        if (strlen (subaddr) > 0)
          sprintf (callInfo, "%s-%s", alpha_calladdr, subaddr);
        else
          strcpy (callInfo, alpha_calladdr);

        wm_clearArea (areaCaller);
        wm_areaWrite (areaCaller, 0, 0, callInfo);
        wm_showArea  (areaCaller);
      }

      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_COLP
     *---------------------------------------------------------------
     */
    case UI_SIG_COLP:
    {
      CHAR*  alpha_calladdr;
      CHAR*  subaddr;
      CHAR   callInfo[60];

      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * make an optic indication of the COLP
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, "COLP");
      wm_showArea (areaState);

      /*
       *-------------------------------------------------------------
       * show the connected line identity if the screen is large
       * enough
       *-------------------------------------------------------------
       */
      if (screensize_y EQ 4)
      {
        va_start (varpars, sigCode);
        alpha_calladdr = va_arg (varpars, CHAR*);
        subaddr        = va_arg (varpars, CHAR*);
        va_end (varpars);

        if (strlen (subaddr) > 0)
          sprintf (callInfo, "%s-%s", alpha_calladdr, subaddr);
        else
          strcpy (callInfo, alpha_calladdr);

        wm_clearArea (areaCaller);
        wm_areaWrite (areaCaller, 0, 0, callInfo);
        wm_showArea  (areaCaller);
      }

      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_OUTGOING_CALL
     *---------------------------------------------------------------
     */
    case UI_SIG_OUTGOING_CALL:
    {
      CHAR *calledParty;

      va_start (varpars, sigCode);
      calledParty = va_arg (varpars, CHAR*);
      va_end (varpars);

      /*
       *-------------------------------------------------------------
       * make an optic indication of dialing
       *-------------------------------------------------------------
       */
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_DIALING));
      wm_showArea (areaState);

      /*
       *-------------------------------------------------------------
       * display the called party if screen is large enough
       *-------------------------------------------------------------
       */
      if (screensize_y EQ 4)
      {
        wm_clearArea (areaCaller);

        wm_areaWrite (areaCaller, 0, 0, calledParty);
        wm_showArea (areaCaller);
      }
      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_REGISTERED
     *---------------------------------------------------------------
     */
    case UI_SIG_REGISTERED:
    {
      wm_clearArea (areaState);

/*
      ui_areaServiceWrite (lng_getText (TXT_NORMAL_SERVICE));

      ui_data->normalService = TRUE;
*/

      if (ui_data->inputMode NEQ INP_MOD_PIN        AND
          ui_data->inputMode NEQ INP_MOD_NPIN       AND
          ui_data->inputMode NEQ INP_MOD_NPIN_TWICE AND
          ui_data->inputMode NEQ INP_MOD_PUK           )
      {
        ui_startNewInput (areaUser,
                          0,
                          0,
                          ">",
                          MAX_INPUT_SIZE - 10,
                          IT_NUMERIC | IT_ECHO,
                          INP_MOD_DIAL,
                          NULL,
                          TRUE);

        ui_data->inputSeq = INP_SEQ_NONE;
      }
      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_REGISTERING
     *---------------------------------------------------------------
     */
    case UI_SIG_REGISTERING:
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_REGISTERING));
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_DEREGISTERING
     *---------------------------------------------------------------
     */
    case UI_SIG_DEREGISTERING:
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_DEREGISTERING));
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_CONNECTING
     *---------------------------------------------------------------
     */
    case UI_SIG_CONNECTING:
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_CONNECTING));
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_DISCONNECTING
     *---------------------------------------------------------------
     */
    case UI_SIG_DISCONNECTING:
      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_DISCONNECTING));
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_CONNECTED
     *---------------------------------------------------------------
     */
    case UI_SIG_CONNECTED:
      /*
       *-------------------------------------------------------------
       * switch off the ringer
       *-------------------------------------------------------------
       */
      if (ui_data->ringerOn)
      {
        cal_sendAudioToneReq (CT_RING,
                              csf_getVolume (VT_RINGER),
                              TONE_SWT_OFF);

        ui_data->ringerOn = FALSE;
      }

      /*
       *-------------------------------------------------------------
       * make an optic indication
       *-------------------------------------------------------------
       */
      wm_areaWrite (areaHook, 0, 0, "/");

      wm_clearArea (areaState);
      wm_areaWrite (areaState, 0, 0, lng_getText (TXT_CONNECTED));
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_DATA_CONNECTED
     *---------------------------------------------------------------
     */
    case UI_SIG_DATA_CONNECTED:
    {
      CHAR   buffer[15];
      USHORT speed;

      va_start (varpars, sigCode);
      speed = va_arg (varpars, USHORT);
      va_end (varpars);

      /*
       *-------------------------------------------------------------
       * switch off the ringer
       *-------------------------------------------------------------
       */
      if (ui_data->ringerOn)
      {
        cal_sendAudioToneReq (CT_RING,
                              csf_getVolume (VT_RINGER),
                              TONE_SWT_OFF);

        ui_data->ringerOn = FALSE;
      }

      /*
       *-------------------------------------------------------------
       * make an optic indication
       *-------------------------------------------------------------
       

⌨️ 快捷键说明

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