📄 dc550_phonesm_program.c
字号:
/*****************************************************************************/
/* CONFIDENTIAL */
/* Sigpro Copyright 2003, All rights reserved */
/*****************************************************************************/
/* CLIENT: Telematrix */
/* PROJECT: DC550 Digital Centrex Phone */
/* FILE: dc550_phonesm_program.c */
/*****************************************************************************/
/* The Program State becomes activated when someone presses the Program key */
/* while in the Idle State. */
/*****************************************************************************/
#define __DC550_PHONESM_PROGRAM_EXTERN__
#include "dc550_phonesm_program.h"
#include "dc550_phonesm.h"
#include "dc550_phonesm_idle.h"
#include "dc550_phonesm_infosettings.h"
#include "dc550_phonesm_infonumbers.h"
#include "dc550_phonesm_infolanguage.h"
#include "dc550_phonesm_infolevels.h"
#include "dc550_phonesm_infoonetouch.h"
#include "dc550_display.h"
#include "dc550_audio.h"
#include "dc550_leddriver.h"
/******************************************************************************
* GLOBAL VARIABLES
*****************************************************************************/
PHONESM_STATE_E phonesm_program_exitstate;
DC550InterruptCounter phonesm_program_periodtimeout;
BOOL phonesm_program_programenabled;
PHONESM_PROGRAM_MENU_E phonesm_program_currentmenu;
DC550Language phonesm_program_enteredlanguage;
int phonesm_program_currentmemoryindex;
char phonesm_program_currentmemorynumber[PHONENUMBER_ARRAY_SIZE];
char phonesm_program_currentmemorynumbersize;
DC550Level phonesm_program_currentvolumelevel;
PHONESM_SPEAKINGDEVICE_E phonesm_program_entereddevice;
BOOL phonesm_program_enteredonetouch;
char phonesm_program_enteredpinnumber[PHONENUMBER_ARRAY_SIZE];
char phonesm_program_enteredpinnumbersize;
DC550TimeUnit phonesm_program_enteredwaittime_bcd;
PHONESM_TIMEDATEFORMAT_E phonesm_program_enteredformat;
DC550TimeUnit phonesm_program_enteredyear_bcd;
DC550TimeUnit phonesm_program_enteredmonth_bcd;
DC550TimeUnit phonesm_program_entereddate_bcd;
DC550TimeUnit phonesm_program_enteredhour_bcd;
DC550TimeUnit phonesm_program_enteredminute_bcd;
BOOL phonesm_program_enteredampm;
BOOL phonesm_program_12hourmode;
BOOL phonesm_program_enteredpredial;
BOOL phonesm_program_enteredcalltimer;
BOOL phonesm_program_enteredautomute;
DC550LCDCoordinate phonesm_program_cursorfield;
BOOL phonesm_program_cursoron;
/******************************************************************************
* FUNCTION: void phonesm_program_init(void) {
******************************************************************************
* DESCRIPTION:
* This function is called to initialize all of the Program State variables.
*****************************************************************************/
void phonesm_program_init(void) {
phonesm_program_exitstate = PHONESM_STATE_IDLE;
phonesm_program_periodtimeout = 0;
phonesm_program_programenabled = FALSE;
phonesm_program_currentmenu = MENU_LANGUAGE_SELECT;
phonesm_program_cursoron = FALSE;
}
/******************************************************************************
* FUNCTION: void phonesm_program_state_enter(void)
******************************************************************************
* DESCRIPTION:
* This function is called whenever the telephone enters the Program State.
*****************************************************************************/
void phonesm_program_state_enter(void) {
phonesm_program_periodtimeout = PHONESM_PROGRAM_TIMEOUT;
// Write the predialed digits on the first line of the display
phonesm_program_menu_display();
// Turn on LCD Backlight
leddriver_setstate(LED_INDICATOR_BACKLIGHT, LED_STATE_ON);
}
/******************************************************************************
* FUNCTION: void phonesm_program_state_exit(void)
******************************************************************************
* DESCRIPTION:
* This function is called when the telephone exits the Program State but
* wishes to save the number.
*****************************************************************************/
void phonesm_program_state_exit(void) {
if(phonesm_program_cursoron) {
display_disablecursor();
phonesm_program_cursoron = FALSE;
}
phonesm_program_programenabled = FALSE;
phonesm_program_currentmenu = MENU_LANGUAGE_SELECT;
}
/******************************************************************************
* FUNCTION: void phonesm_exec_hookswitch(unsigned int updown)
******************************************************************************
* DESCRIPTION:
* This function is called when the hookswitch goes up or down while the
* phone is in Program State. It does nothing when the hookswitch goes down,
* but it saves the number and exits the state when the hookswitch goes up.
*****************************************************************************/
BOOL phonesm_program_exec_hookswitch(BOOL updown) {
// This checks if the hookswitch went down
if(updown == HOOKSTATE_DOWN) {
// Do nothing
return 0;
}
// This checks if the hookswitch went up
else {
phonesm_program_state_exit();
phonesm_deactivate_state(PHONESM_STATE_PROGRAM);
return 1;
}
}
/******************************************************************************
* FUNCTION: BOOL phonesm_program_exec_keypress(unsigned int key, BOOL updown)
******************************************************************************
* DESCRIPTION:
* This function is called whenever a key goes up or down while the phone
* is in the Program State. Most keys exit the Program State, but some
* activate the Contrast and Volume States, and the digit keys and Pause key
* are obviously retained as program digits.
*****************************************************************************/
BOOL phonesm_program_exec_keypress(unsigned int key, BOOL updown) {
// Declare function variables
int i;
// Currently the Program State will only respond to key down messages
if(updown == KEYSTATE_DOWN) {
switch(key) {
/***** PROGRAM KEY *****************************************************/
case KEYPAD_LOCAL_PROGRAM:
if(phonesm_program_programenabled) {
phonesm_program_state_exit();
phonesm_deactivate_state(PHONESM_STATE_PROGRAM);
}
else
phonesm_program_programenabled = TRUE;
return 0;
/***** EXIT KEY AND RELEASE KEY ****************************************/
case KEYPAD_LOCAL_EXIT:
case KEYPAD_FEATURE_RELEASE:
phonesm_program_state_exit();
phonesm_deactivate_state(PHONESM_STATE_PROGRAM);
return 0;
/***** SELECT KEY ******************************************************/
case KEYPAD_LOCAL_SELECT:
phonesm_program_periodtimeout = PHONESM_PROGRAM_TIMEOUT;
switch(phonesm_program_currentmenu) {
case MENU_LANGUAGE_SELECT:
phonesm_program_currentmenu = MENU_LANGUAGE_ENTRY;
phonesm_program_enteredlanguage =
phonesm_infolanguage_getlanguage();
phonesm_program_menu_display();
break;
case MENU_MEMORY_SELECT:
phonesm_program_currentmenu = MENU_MEMORY_ENTRY;
phonesm_program_currentmemoryindex = 0;
phonesm_infonumbers_getmemorynumber( 0,
phonesm_program_currentmemorynumber);
phonesm_program_cursoron = FALSE;
phonesm_program_menu_display();
break;
case MENU_ALERTERVOLUME_SELECT:
phonesm_program_currentmenu = MENU_ALERTERVOLUME_ENTRY;
phonesm_program_currentvolumelevel =
phonesm_infolevels_getalertervolume();
phonesm_program_menu_display();
break;
case MENU_HANDSETVOLUME_SELECT:
phonesm_program_currentmenu = MENU_HANDSETVOLUME_ENTRY;
phonesm_program_currentvolumelevel =
phonesm_infolevels_gethandsetvolume();
phonesm_program_menu_display();
break;
case MENU_HEADSETVOLUME_SELECT:
phonesm_program_currentmenu = MENU_HEADSETVOLUME_ENTRY;
phonesm_program_currentvolumelevel =
phonesm_infolevels_getheadsetvolume();
phonesm_program_menu_display();
break;
case MENU_SPEAKERVOLUME_SELECT:
phonesm_program_currentmenu = MENU_SPEAKERVOLUME_ENTRY;
phonesm_program_currentvolumelevel =
phonesm_infolevels_getspeakervolume();
phonesm_program_menu_display();
break;
case MENU_DEFAULTDEVICE_SELECT:
phonesm_program_currentmenu = MENU_DEFAULTDEVICE_ENTRY;
phonesm_program_entereddevice =
phonesm_infosettings_getdefaultdevice();
phonesm_program_menu_display();
break;
case MENU_ONETOUCH_SELECT:
phonesm_program_currentmenu = MENU_ONETOUCH_ENTRY;
phonesm_program_enteredonetouch = phonesm_infoonetouch_getenabled();
phonesm_program_menu_display();
break;
case MENU_PINNUMBER_SELECT:
phonesm_program_currentmenu = MENU_PINNUMBER_ENTRY;
phonesm_infoonetouch_getpin(phonesm_program_enteredpinnumber);
for(i = 0; (i < PHONENUMBER_MAX_LENGTH) &&
(phonesm_program_enteredpinnumber[i] != 0); i++ )
phonesm_program_enteredpinnumber[i] = '*';
phonesm_program_cursoron = FALSE;
phonesm_program_menu_display();
break;
case MENU_SECONDSWAIT_SELECT:
phonesm_program_currentmenu = MENU_SECONDSWAIT_ENTRY;
phonesm_program_enteredwaittime_bcd =
phonesm_infoonetouch_getwaitseconds_bcd();
phonesm_program_cursoron = FALSE;
phonesm_program_menu_display();
break;
case MENU_TIMEDATEFORMAT_SELECT:
phonesm_program_currentmenu = MENU_TIMEDATEFORMAT_ENTRY;
phonesm_program_enteredformat =
phonesm_infosettings_gettimedateformat();
phonesm_program_menu_display();
break;
case MENU_TIMEDATESET_SELECT:
phonesm_program_currentmenu = MENU_TIMEDATESET_ENTRY;
phonesm_program_enteredmonth_bcd = 0xFF;
phonesm_program_entereddate_bcd = 0xFF;
phonesm_program_enteredyear_bcd = 0xFF;
phonesm_program_enteredhour_bcd = 0xFF;
phonesm_program_enteredminute_bcd = 0xFF;
phonesm_program_12hourmode = 1;
phonesm_program_enteredampm = 0;
phonesm_program_cursorfield = 0;
phonesm_program_menu_display();
break;
case MENU_PREDIAL_SELECT:
phonesm_program_currentmenu = MENU_PREDIAL_ENTRY;
phonesm_program_enteredpredial =
phonesm_infosettings_getpredialenabled();
phonesm_program_menu_display();
break;
case MENU_CALLTIMER_SELECT:
phonesm_program_currentmenu = MENU_CALLTIMER_ENTRY;
phonesm_program_enteredcalltimer =
phonesm_infosettings_getcalltimerenabled();
phonesm_program_menu_display();
break;
case MENU_AUTOMUTE_SELECT:
phonesm_program_currentmenu = MENU_AUTOMUTE_ENTRY;
phonesm_program_enteredautomute =
phonesm_infosettings_getautomuteenabled();
phonesm_program_menu_display();
break;
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_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_menu_display();
}
break;
case MENU_LANGUAGE_ENTRY:
case MENU_ALERTERVOLUME_ENTRY:
case MENU_HANDSETVOLUME_ENTRY:
case MENU_HEADSETVOLUME_ENTRY:
case MENU_SPEAKERVOLUME_ENTRY:
case MENU_DEFAULTDEVICE_ENTRY:
case MENU_ONETOUCH_ENTRY:
case MENU_SECONDSWAIT_ENTRY:
case MENU_TIMEDATEFORMAT_ENTRY:
case MENU_TIMEDATESET_ENTRY:
case MENU_PREDIAL_ENTRY:
case MENU_CALLTIMER_ENTRY:
break;
}
return 0;
/***** SAVE KEY ********************************************************/
case KEYPAD_LOCAL_SAVE:
phonesm_program_periodtimeout = PHONESM_PROGRAM_TIMEOUT;
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:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -