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

📄 dc550_phonesm_program.c

📁 一款经典的数字电话设计资料
💻 C
📖 第 1 页 / 共 5 页
字号:
 *  2. Propagate the command to the exit state if that exit state is the Idle
 *     State, and exit the state otherwise (this allows the Idle State to
 *     update the time and date display.  It's a little sloppy, but it should
 *     work.
 *****************************************************************************/
BOOL phonesm_program_exec_periodic(BOOL firstline, BOOL secondline) {

  if(firstline && secondline) {
    // 1A: Decrement the period counter
    phonesm_program_periodtimeout--;
  
    // 1B: If the period counter has reached 0, exit this state
    if(!phonesm_program_periodtimeout) {
      phonesm_program_state_exit();
      phonesm_deactivate_state(PHONESM_STATE_PROGRAM);
      return 1;
    }
  }

  // 2: If the exit state is the Idle State, propagate the periodic function
  switch(phonesm_program_exitstate) {
    case PHONESM_STATE_IDLE:
      phonesm_idle_exec_periodic(0, 0);
      return 0;
    default:
      // This should never happen
      // Exit this state
      phonesm_program_state_exit();
      phonesm_deactivate_state(PHONESM_STATE_PROGRAM);
      return 1;
  }
  
}


/******************************************************************************
 *  FUNCTION: void phonesm_program_menu_display(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_program_menu_display(void) {
  // Declare function variables
  int i;
  char bufferstring[25];
  char* sourcestring;

  // Clear the display
  display_cleardisplay();
  
  switch(phonesm_program_currentmenu) {
    case MENU_LANGUAGE_SELECT:
    case MENU_MEMORY_SELECT:
    case MENU_ALERTERVOLUME_SELECT:
    case MENU_HANDSETVOLUME_SELECT:
    case MENU_HEADSETVOLUME_SELECT:
    case MENU_SPEAKERVOLUME_SELECT:
    case MENU_DEFAULTDEVICE_SELECT:
    case MENU_ONETOUCH_SELECT:
    case MENU_PINNUMBER_SELECT:
    case MENU_SECONDSWAIT_SELECT:
    case MENU_TIMEDATEFORMAT_SELECT:
    case MENU_TIMEDATESET_SELECT:
    case MENU_PREDIAL_SELECT:
    case MENU_CALLTIMER_SELECT:
    case MENU_AUTOMUTE_SELECT:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0, phonesm_infolanguage_getlinetwo_programselect());
      break;
    case MENU_LANGUAGE_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_language(
          phonesm_program_enteredlanguage) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_MEMORY_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getmarker_memorydial(
          phonesm_program_currentmemoryindex) );
      display_writelinetwo(4, phonesm_program_currentmemorynumber);
      if(phonesm_program_cursoron) {
        display_enablecursor(1, 4 + phonesm_program_cursorfield);
        if(phonesm_program_currentmemorynumbersize < 14)
          display_writelinetwo(18, "(Save)");
      }
      break;
    case MENU_ALERTERVOLUME_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolevels_getlevelbar(phonesm_program_currentvolumelevel) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_HANDSETVOLUME_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolevels_getlevelbar(phonesm_program_currentvolumelevel) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_HEADSETVOLUME_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolevels_getlevelbar(phonesm_program_currentvolumelevel) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_SPEAKERVOLUME_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolevels_getlevelbar(phonesm_program_currentvolumelevel) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_DEFAULTDEVICE_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_device(phonesm_program_entereddevice));
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_ONETOUCH_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_onetouch(
          phonesm_program_enteredonetouch));
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_PINNUMBER_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0, phonesm_program_enteredpinnumber);
      if(phonesm_program_cursoron) {
        display_enablecursor(1, phonesm_program_cursorfield);
        if(phonesm_program_enteredpinnumbersize < 18)
          display_writelinetwo(18, "(Save)");
      }
      break;
    case MENU_SECONDSWAIT_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      bufferstring[0] = '0' + (phonesm_program_enteredwaittime_bcd >> 4);
      bufferstring[1] = '0' + (phonesm_program_enteredwaittime_bcd & 0x0F);
      bufferstring[2] = ' ';
      bufferstring[3] = 0;
      display_writelinetwo(0, bufferstring);
      display_writelinetwo(3, phonesm_infolanguage_getmarker_seconds() );
      if(phonesm_program_cursoron) {
        display_enablecursor(1, phonesm_program_cursorfield);
        display_writelinetwo(18, "(Save)");
      }
      break;
    case MENU_TIMEDATEFORMAT_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_timeformat(
          phonesm_program_enteredformat) );
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_TIMEDATESET_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      
      sourcestring = phonesm_infolanguage_getlinetwo_timeset();
      for(i = 0; (i < 24) && (sourcestring[i] != 0); i++) {
        bufferstring[i] = sourcestring[i];
      }
      bufferstring[i] = 0;
      
      if( (phonesm_program_enteredmonth_bcd >> 4) <= 0x01 )
        bufferstring[0] = '0' + (phonesm_program_enteredmonth_bcd >> 4);
      if( (phonesm_program_enteredmonth_bcd & 0x0f) <= 0x09 )
        bufferstring[1] = '0' + (phonesm_program_enteredmonth_bcd & 0x0f);
      if( (phonesm_program_entereddate_bcd >> 4) <= 0x03 )
        bufferstring[3] = '0' + (phonesm_program_entereddate_bcd >> 4);
      if( (phonesm_program_entereddate_bcd & 0x0f) <= 0x09 )
        bufferstring[4] = '0' + (phonesm_program_entereddate_bcd & 0x0f);
      if( (phonesm_program_enteredyear_bcd >> 4) <= 0x09 )
        bufferstring[6] = '0' + (phonesm_program_enteredyear_bcd >> 4);
      if( (phonesm_program_enteredyear_bcd & 0x0f) <= 0x09 )
        bufferstring[7] = '0' + (phonesm_program_enteredyear_bcd & 0x0f);
      if( (phonesm_program_enteredhour_bcd >> 4) <= 0x02 )
        bufferstring[9] = '0' + (phonesm_program_enteredhour_bcd >> 4);
      if( (phonesm_program_enteredhour_bcd & 0x0f) <= 0x09 )
        bufferstring[10] = '0' + (phonesm_program_enteredhour_bcd & 0x0f);
      if( (phonesm_program_enteredminute_bcd >> 4) <= 0x05 )
        bufferstring[12] = '0' + (phonesm_program_enteredminute_bcd >> 4);
      if( (phonesm_program_enteredminute_bcd & 0x0f) <= 0x09 )
        bufferstring[13] = '0' +(phonesm_program_enteredminute_bcd & 0x0f);
      if(phonesm_program_12hourmode)
        if(phonesm_program_enteredampm)
          bufferstring[14] = 'P';
        else
          bufferstring[14] = 'A';
      else
        bufferstring[14] = ' ';
      
      switch(phonesm_program_cursorfield) {
        case 10:
          display_enablecursor(1, 14);
          break;
        case 9:
          display_enablecursor(1, 13);
          break;
        case 8:
          display_enablecursor(1, 12);
          break;
        case 7:
          display_enablecursor(1, 10);
          break;
        case 6:
          display_enablecursor(1, 9);
          break;
        case 5:
          display_enablecursor(1, 7);
          break;
        case 4:
          display_enablecursor(1, 6);
          break;
        case 3:
          display_enablecursor(1, 4);
          break;
        case 2:
          display_enablecursor(1, 3);
          break;
        case 1:
          display_enablecursor(1, 1);
          break;
        case 0:
          display_enablecursor(1, 0);
          break;
        default:
          break;
      }
      phonesm_program_cursoron = TRUE;
      display_writelinetwo(0, bufferstring);
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_PREDIAL_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_predial(phonesm_program_enteredpredial));
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_CALLTIMER_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_calltimer(
          phonesm_program_enteredcalltimer));
      display_writelinetwo(18, "(Save)");
      break;
    case MENU_AUTOMUTE_ENTRY:
      display_writelineone(0,
        phonesm_infolanguage_getlineone_program(phonesm_program_currentmenu));
      display_writelinetwo(0,
        phonesm_infolanguage_getoption_automute(
          phonesm_program_enteredautomute));
      display_writelinetwo(18, "(Save)");
      break;
  }
}


/******************************************************************************
 *  FUNCTION: void phonesm_program_insert_digit(char digit)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_program_insert_digit(char digit) {
  switch(phonesm_program_currentmenu) {
    case MENU_MEMORY_ENTRY:
      if( !phonesm_program_cursoron ) {
        phonesm_program_cursoron = TRUE;
        phonesm_program_cursorfield = 0;
        phonesm_program_currentmemorynumber[0] = 0;
        phonesm_program_currentmemorynumbersize = 0;
      }
      phonesm_program_currentmemorynumber[phonesm_program_cursorfield] = digit;
      if(phonesm_program_cursorfield < (PHONENUMBER_MAX_LENGTH - 1)) {
        phonesm_program_cursorfield++;
        phonesm_program_currentmemorynumber[phonesm_program_cursorfield] = 0;
      }
      if(phonesm_program_currentmemorynumbersize < phonesm_program_cursorfield)
        phonesm_program_currentmemorynumbersize = phonesm_program_cursorfield;
      phonesm_program_menu_display();
      break;
    case MENU_PINNUMBER_ENTRY:
      if( !phonesm_program_cursoron ) {
        phonesm_program_cursoron = TRUE;
        phonesm_program_cursorfield = 0;
        phonesm_program_enteredpinnumber[0] = 0;
        phonesm_program_enteredpinnumbersize = 0;
      }
      phonesm_program_enteredpinnumber[phonesm_program_cursorfield] = digit;
      if(phonesm_program_cursorfield < (PHONENUMBER_MAX_LENGTH - 1)) {
        phonesm_program_cursorfield++;
        phonesm_program_enteredpinnumber[phonesm_program_cursorfield] = 0;
      }
      if(phonesm_program_enteredpinnumbersize < phonesm_program_cursorfield)
        phonesm_program_enteredpinnumbersize = phonesm_program_cursorfield;
      phonesm_program_menu_display();
      break;
    case MENU_SECONDSWAIT_ENTRY:
      if( !phonesm_program_cursoron ) {
        phonesm_program_cursoron = TRUE;
        phonesm_program_cursorfield = 0

⌨️ 快捷键说明

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