📄 dc550_phonesm_init.c
字号:
/*****************************************************************************/
/* CONFIDENTIAL */
/* Sigpro Copyright 2003, All rights reserved */
/*****************************************************************************/
/* CLIENT: Telematrix */
/* PROJECT: DC550 Digital Centrex Phone */
/* FILE: dc550_phonesm_init.c */
/*****************************************************************************/
/* */
/*****************************************************************************/
#define __DC550_PHONESM_INIT_EXTERN__
#include "dc550_phonesm_init.h"
#include "dc550_phonesm.h"
#include "dc550_phonesm_idle.h"
#include "dc550_phonesm_active.h"
#include "dc550_display.h"
#include "dc550_i2cdriver.h"
#include "dc550_leddriver.h"
#include "dc550_hwinit.h"
/******************************************************************************
* GLOBAL VARIABLES
*****************************************************************************/
PHONESM_STATE_E phonesm_init_exitstate;
DC550InterruptCounter phonesm_init_periodtimeout;
DC550InterruptCounter phonesm_init_startimeout;
BOOL phonesm_init_defaultsrestored;
/******************************************************************************
* FUNCTION: void phonesm_init_init(void) {
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_init_init(void) {
phonesm_init_periodtimeout = INIT_DISPLAY_TIMEOUT;
phonesm_init_startimeout = 0;
phonesm_init_defaultsrestored = FALSE;
}
/******************************************************************************
* FUNCTION: void phonesm_init_state_enter(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_init_state_enter(void) {
if(phonesm_init_defaultsrestored) {
display_writelineone(0,INIT_RESTORE_LINEONE);
display_writelinetwo(0,INIT_RESTORE_LINETWO);
}
else {
display_writelineone(0,INIT_DISPLAY_LINEONE);
display_writelinetwo(0,INIT_DISPLAY_LINETWO);
}
// Turn on LCD Backlight
leddriver_setstate(LED_INDICATOR_BACKLIGHT, LED_STATE_ON);
}
/******************************************************************************
* FUNCTION: BOOL phonesm_init_exec_hookswitch(BOOL updown)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_init_exec_hookswitch(BOOL updown) {
return 0;
}
/******************************************************************************
* FUNCTION: BOOL phonesm_idle_exec_keypress(unsigned int key, BOOL updown)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_init_exec_keypress(unsigned int key, BOOL updown) {
// Currently the Idle State will only respond to key down messages
if(updown == KEYSTATE_DOWN) {
switch(key) {
// The Scroll Keys activate the Contrast State
case KEYPAD_SCROLL_UP:
case KEYPAD_SCROLL_DOWN:
phonesm_activate_state(PHONESM_STATE_CONTRAST);
return 1;
// The Volume Keys activate the Volume State
case KEYPAD_VOLUME_UP:
case KEYPAD_VOLUME_DOWN:
phonesm_activate_state(PHONESM_STATE_VOLUME);
return 0;
// The Star key resets the factory settings
case KEYPAD_DIGIT_STAR:
phonesm_init_startimeout = INIT_RESTORE_TIMEOUT;
return 0;
// The rest of the keys do nothing
case KEYPAD_DIGIT_0:
case KEYPAD_DIGIT_1:
case KEYPAD_DIGIT_2:
case KEYPAD_DIGIT_3:
case KEYPAD_DIGIT_4:
case KEYPAD_DIGIT_5:
case KEYPAD_DIGIT_6:
case KEYPAD_DIGIT_7:
case KEYPAD_DIGIT_8:
case KEYPAD_DIGIT_9:
case KEYPAD_DIGIT_POUND:
case KEYPAD_LOCAL_STORENUM:
case KEYPAD_LOCAL_PAUSE:
case KEYPAD_LOCAL_PROGRAM:
case KEYPAD_LOCAL_MEMORY:
case KEYPAD_FEATURE_01:
case KEYPAD_FEATURE_02:
case KEYPAD_FEATURE_03:
case KEYPAD_FEATURE_04:
case KEYPAD_FEATURE_05:
case KEYPAD_FEATURE_06:
case KEYPAD_FEATURE_07:
case KEYPAD_FEATURE_08:
case KEYPAD_FEATURE_09:
case KEYPAD_FEATURE_10:
case KEYPAD_FEATURE_11:
case KEYPAD_AUDIO_HEADSET:
case KEYPAD_AUDIO_SPEAKER:
case KEYPAD_FEATURE_VOICEMAIL:
case KEYPAD_LOCAL_EXIT:
case KEYPAD_LOCAL_SELECT:
case KEYPAD_LOCAL_SAVE:
case KEYPAD_FEATURE_HOLD:
case KEYPAD_FEATURE_RELEASE:
case KEYPAD_AUDIO_MUTE:
return 0;
}
}
else {
if(key == KEYPAD_DIGIT_STAR) {
phonesm_init_startimeout = 0;
if(phonesm_init_defaultsrestored) {
phonesm_init_periodtimeout = INIT_DISPLAY_TIMEOUT;
display_writelineone(0,INIT_DISPLAY_LINEONE);
display_writelinetwo(0,INIT_DISPLAY_LINETWO);
phonesm_init_defaultsrestored = FALSE;
}
}
}
return 0;
}
/******************************************************************************
* FUNCTION: BOOL phonesm_init_exec_modemcommand(DC550MDCMessage command)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_init_exec_modemcommand(DC550MDCMessage command) {
// Exit this state
phonesm_deactivate_state(PHONESM_STATE_INIT);
// Actually, we may not want to exit the state upon LED commands
return 1;
}
/******************************************************************************
* FUNCTION: BOOL phonesm_idle_exec_periodic(BOOL firstline, BOOL secondline)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_init_exec_periodic(BOOL firstline, BOOL secondline) {
if(phonesm_init_startimeout) {
phonesm_init_startimeout--;
if(phonesm_init_startimeout == 0) {
eeprom_SetVersion(0);
phonesm_init_info();
phonesm_init_hwstates();
display_writelineone(0,INIT_RESTORE_LINEONE);
display_writelinetwo(0,INIT_RESTORE_LINETWO);
phonesm_init_defaultsrestored = TRUE;
}
}
if(phonesm_init_periodtimeout)
phonesm_init_periodtimeout--;
if( (phonesm_init_periodtimeout == 0) &&
(phonesm_init_startimeout == 0) &&
(phonesm_init_defaultsrestored == FALSE) ) {
// Start the watchdog timer
hwinit_activate_watchdog();
// Exit this state
phonesm_deactivate_state(PHONESM_STATE_INIT);
return 1;
}
else {
switch(phonesm_init_exitstate) {
case PHONESM_STATE_IDLE:
phonesm_idle_exec_periodic(0,0);
return 0;
default:
// This should never happen
// Exit this state
phonesm_deactivate_state(PHONESM_STATE_INIT);
return 1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -