📄 dc550_phonesm_program.c
字号:
* 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 + -