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

📄 smi_ui.c

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

        ui_data->inputSeq = INP_SEQ_NONE;

        /*
         *-----------------------------------------------------------
         * show the welcome window
         *-----------------------------------------------------------
         */
        if (screensize_y EQ 4)
        {
          row    += 1;
/*
          column += 2;
*/
        }

        wm_areaWrite (areaUniversal, row, column, "WELCOME TO THE");
        wm_areaWrite (areaUniversal,
                      (UBYTE)(row + 1), (UBYTE)(column + 1),
                      "WORLD OF GSM");
        ui_topArea   (areaUniversal);
        wm_showArea  (areaUniversal);

#if defined (NEW_FRAME)
        TIMERSTART (TWELCOME_VALUE, SMI_TUNIVERSAL);
        t_universal_running = TRUE;
#else
        TIMERSTART (TWELCOME_VALUE, t_universal_handle);
#endif
        ui_data->timerMod = TIMER_MOD_WELCOME;

        /*
         *-----------------------------------------------------------
         * request RX level indications
         *-----------------------------------------------------------
         */
        rx_Init(rx_callback);
      }
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_POWER_DOWN
     *---------------------------------------------------------------
     */
    case UI_SIG_POWER_DOWN:
#if defined (NEW_FRAME)
      if (t_slider_running NEQ FALSE)
      {
        TIMERSTOP (SMI_TSLIDER);
        t_slider_running = FALSE;
      }

      if (t_universal_running NEQ FALSE)
      {
        TIMERSTOP (SMI_TUNIVERSAL);
        t_universal_running = FALSE;

        wm_hideArea (areaUniversal);
      }
#else
      if (t_slider_handle NEQ (T_VSI_THANDLE) VSI_ERROR)
      {
        TIMERSTOP (t_slider_handle);
      }

      if (t_universal_handle NEQ (T_VSI_THANDLE) VSI_ERROR)
      {
        TIMERSTOP (t_universal_handle);

        wm_hideArea (areaUniversal);
      }
#endif
      /*
       *-------------------------------------------------------------
       * switch off the LCD backlight and clean the LCD display
       *-------------------------------------------------------------
       */
      ui_backlight (FALSE);
      wm_hideArea (areaProvider);
      wm_hideArea (areaService);
      wm_hideArea (areaState);
      wm_hideArea (areaFS);
      wm_hideArea (areaBAT);
      wm_hideArea (areaUser);
      wm_hideArea (areaShift);

      if (screensize_y EQ 4)
        wm_hideArea (areaCaller);

      wm_hideArea (areaSlider);
      wm_hideArea (areaHook);

      ui_data->powerOn = FALSE;
      powerKeyOn       = FALSE;

      /*
      *--------------------------------------------------------------
       * stop any tones
       *-------------------------------------------------------------
       */
      audio_Exit ();

      /*
       *-------------------------------------------------------------
       * stop RX level indications
       *-------------------------------------------------------------
       */
      rx_Exit ();

      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_PLMN
     *---------------------------------------------------------------
     */
    case UI_SIG_PLMN:
    {
      CHAR* oper;

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

      wm_clearArea (areaProvider);
      wm_areaWrite (areaProvider, 0, 0, oper);

      ui_areaServiceWrite (lng_getText (TXT_NORMAL_SERVICE));

      ui_data->normalService = TRUE;

      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_SELECT_PLMN
     *---------------------------------------------------------------
     */
    case UI_SIG_SELECT_PLMN:
    {
      CHAR** oper;
      USHORT i;

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

      if (ui_data->state NEQ UI_SELECT)
      {
        i = 0;

        if (oper[i] EQ NULL)
        {
          /*
           *---------------------------------------------------------
           * the PLMN menu is empty
           *---------------------------------------------------------
           */
          plmnIsEmpty = TRUE;
          plmnmenu[i] = lng_getText (TXT_EMPTY);
          i++;
        }
        else
        {
          /*
           *---------------------------------------------------------
           * the PLMN menu is initialized while not empty
           *---------------------------------------------------------
           */
          plmnIsEmpty = FALSE;

          while (oper[i] NEQ NULL)
          {
            plmnmenu[i] = oper[i];
            i++;
          }
        }

        /*
         *-----------------------------------------------------------
         * the PLMN menu is terminated
         *-----------------------------------------------------------
         */
        plmnmenu[i] = NULL;

        /*
         *-----------------------------------------------------------
         * show the PLMN menu
         *-----------------------------------------------------------
         */
        ui_topArea (areaMenu);
        wm_showArea (areaMenu);
        men_startMenu (areaMenu,
                       lng_getText (TXT_MEN_SELECT_PLMN),
                       plmnmenu);

        oldState          = ui_data->state;
        ui_data->state    = UI_SELECT;
        ui_data->menuMode = MEN_MOD_PLMN;
      }
      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_SHOW_CALL_TABLE
     *---------------------------------------------------------------
     */
    case UI_SIG_SHOW_CALL_TABLE:
    {
      T_CTB_INFO* ctb;
      USHORT i;

      va_start (varpars, sigCode);
      ctb = va_arg (varpars, T_CTB_INFO*);
      va_end (varpars);

      if (ui_data->state NEQ UI_SELECT)
      {
        i = 0;

        if (ctb[i].index EQ -1)
        {
          /*
           *---------------------------------------------------------
           * the call table is empty
           *---------------------------------------------------------
           */
          CHAR* empty = lng_getText (TXT_EMPTY);

          strncpy (ctbstring[i], empty, MENU_ENTRY_WIDTH_L);
          ctbstring[i][MENU_ENTRY_WIDTH_L] = NULL_TERM;
          i++;
        }
        else
        {
          /*
           *---------------------------------------------------------
           * the call table menu entries are build up
           *---------------------------------------------------------
           */
          while (ctb[i].index NEQ -1)
          {
            CHAR* status;

            switch (ctb[i].status)
            {
              case (CAL_STAT_Wait):
                status = lng_getStatText(STAT_TXT_WAIT);
                break;

              case (CAL_STAT_Active):
                status = lng_getStatText(STAT_TXT_ACTIVE);
                break;

              case (CAL_STAT_Held):
                status = lng_getStatText(STAT_TXT_HELD);
                break;

              case (CAL_STAT_Dial):
                status = lng_getStatText(STAT_TXT_DIAL);
                break;
            }

            sprintf (ctbstring[i], "%d %s", ctb[i].index, status);
            i++;
          }
        }

        /*
         *---------------------------------------------------------
         * the list of call table menu entries is terminated
         *---------------------------------------------------------
         */
        ctbstring[i][0] = NULL_TERM;

        /*
         *-----------------------------------------------------------
         * the call table menu is initialized and terminated
         *-----------------------------------------------------------
         */
        i = 0;

        while (ctbstring[i][0] NEQ NULL_TERM)
        {
          ctbmenu[i] = ctbstring[i];
          i++;
        }

        ctbmenu[i] = NULL;

        /*
         *-----------------------------------------------------------
         * show the call table menu
         *-----------------------------------------------------------
         */
        ui_topArea (areaMenu);
        wm_showArea (areaMenu);
        men_startMenu (areaMenu,
                       lng_getText (TXT_MEN_CALL_TABLE),
                       ctbmenu);

        oldState          = ui_data->state;
        ui_data->state    = UI_SELECT;
        ui_data->menuMode = MEN_MOD_CTB;
      }
      break;
    }

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_ILLEGAL_MS
     *---------------------------------------------------------------
     */
    case UI_SIG_ILLEGAL_MS:
      wm_clearArea (areaUser);
      wm_areaWrite (areaUser, 0, 0, "####");

      ui_data->state = UI_BLOCKED;
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_NO_CELL
     *---------------------------------------------------------------
     */
    case UI_SIG_NO_CELL:
      ui_data->normalService = FALSE;

      wm_clearArea (areaProvider);

      ui_areaServiceWrite (lng_getText (TXT_NO_SERVICE));

/*
      cal_sendAudioToneReq (CT_CALL_DROPPED,
                            csf_getVolume (VT_RINGER),
                            TONE_SWT_ON_SINGLE);

*/
      break;

    /*
     *---------------------------------------------------------------
     * process signal UI_SIG_LIMITED_SERVICE
     *---------------------------------------------------------------
     */
    case UI_SIG_LIMITED_SERVICE:
      ui_data->normalService = FALSE;

      wm_clearArea (areaProvider);

      ui_areaServiceWrite (lng_getText (TXT_LIMITD_SERVICE));

/*
      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_INCOMMING_CALL
     *---------------------------------------------------------------
     */
    case UI_SIG_INCOMMING_CALL:
      ui_backlight (TRUE);

      /*
       *-------------------------------------------------------------
       * switch on the ringer
       *-------------------------------------------------------------
       */
      if (!ui_data->ringerOn)
      {
        cal_sendAudioToneReq (CT_RING,
                              csf_getVolume (VT_RINGER),
                              TONE_SWT_ON_PERIODIC);

        ui_data->ringerOn = TRUE;
      }

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

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

      /*
       *-------------------------------------------------------------
       * reset the input while a call comes in
       *-------------------------------------------------------------
       */

⌨️ 快捷键说明

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