📄 dc550_phonesm_infosettings.c
字号:
/*****************************************************************************/
/* CONFIDENTIAL */
/* Sigpro Copyright 2003, All rights reserved */
/*****************************************************************************/
/* CLIENT: Telematrix */
/* PROJECT: DC550 Digital Centrex Phone */
/* FILE: dc550_phonesm_infosettings.c */
/*****************************************************************************/
/* The Settings Info Holder declares all of the global variables related to */
/* the telephone settings. It also has some utility functions related to */
/* those variables. */
/*****************************************************************************/
#define __DC550_PHONESM_INFOSETTINGS_EXTERN__
#include "dc550_phonesm_infosettings.h"
#include "dc550_phonesm_infolanguage.h"
#include "dc550_i2cdriver.h"
#include "dc550_usartdriver.h"
/******************************************************************************
* GLOBAL VARIABLES
*****************************************************************************/
PHONESM_SPEAKINGDEVICE_E phonesm_infosettings_defaultdevice;
PHONESM_TIMEDATEFORMAT_E phonesm_infosettings_timedateformat;
BOOL phonesm_infosettings_predialenabled;
BOOL phonesm_infosettings_calltimerenabled;
BOOL phonesm_infosettings_automuteenabled;
DC550TimeUnit phonesm_infosettings_year;
DC550TimeUnit phonesm_infosettings_month;
DC550TimeUnit phonesm_infosettings_date;
DC550TimeUnit phonesm_infosettings_hours;
DC550TimeUnit phonesm_infosettings_minutes;
/******************************************************************************
* FUNCTION: void phonesm__infosettings_init(void)
******************************************************************************
* DESCRIPTION:
* This function is called to initialize the settings variables.
*****************************************************************************/
void phonesm_infosettings_init(void) {
// Declare function variables
int i;
char tempSetting;
if(eeprom_GetVersion() == EEPROM_VERSION_CURRENT) {
eeprom_ReadByte(EEPROM_ADDRESS_DEFAULTDEVICE, &tempSetting);
phonesm_infosettings_defaultdevice = tempSetting;
eeprom_ReadByte(EEPROM_ADDRESS_TIMEFORMAT, &tempSetting);
phonesm_infosettings_timedateformat = tempSetting;
eeprom_ReadByte(EEPROM_ADDRESS_PREDIAL,
&phonesm_infosettings_predialenabled);
eeprom_ReadByte(EEPROM_ADDRESS_CALLTIMER,
&phonesm_infosettings_calltimerenabled);
eeprom_ReadByte(EEPROM_ADDRESS_AUTOMUTE,
&phonesm_infosettings_automuteenabled);
}
else {
phonesm_infosettings_defaultdevice = PHONESM_SPEAKINGDEVICE_SPEAKERPHONE;
phonesm_infosettings_timedateformat = TIMEDATEFORMAT_MMM_DD_HH_MM;
phonesm_infosettings_predialenabled = TRUE;
phonesm_infosettings_calltimerenabled = TRUE;
phonesm_infosettings_automuteenabled = FALSE;
for(i = 0; i < 4000; i++); // Wait 4ms (a write takes over 3ms)
eeprom_WriteByte(EEPROM_ADDRESS_DEFAULTDEVICE,
(char)phonesm_infosettings_defaultdevice);
for(i = 0; i < 4000; i++); // Wait 4ms (a write takes over 3ms)
eeprom_WriteByte(EEPROM_ADDRESS_TIMEFORMAT,
(char)phonesm_infosettings_timedateformat);
for(i = 0; i < 4000; i++); // Wait 4ms (a write takes over 3ms)
eeprom_WriteByte(EEPROM_ADDRESS_PREDIAL,
phonesm_infosettings_predialenabled);
for(i = 0; i < 4000; i++); // Wait 4ms (a write takes over 3ms)
eeprom_WriteByte(EEPROM_ADDRESS_CALLTIMER,
phonesm_infosettings_calltimerenabled);
for(i = 0; i < 4000; i++); // Wait 4ms (a write takes over 3ms)
eeprom_WriteByte(EEPROM_ADDRESS_AUTOMUTE,
phonesm_infosettings_automuteenabled);
}
phonesm_infosettings_year = 0x3;
phonesm_infosettings_month = 0x01;
phonesm_infosettings_date = 0x01;
phonesm_infosettings_hours = 0x00;
phonesm_infosettings_minutes = 0x00;
rtc_SetTimeOfDay( (phonesm_infosettings_year & 0x03),
phonesm_infosettings_month,
phonesm_infosettings_date,
phonesm_infosettings_hours,
phonesm_infosettings_minutes, 0, 0);
}
/******************************************************************************
* FUNCTION:
* PHONESM_SPEAKINGDEVICE_E phonesm_infosettings_getdefaultdevice(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
PHONESM_SPEAKINGDEVICE_E phonesm_infosettings_getdefaultdevice(void) {
return phonesm_infosettings_defaultdevice;
}
/******************************************************************************
* FUNCTION:
* void phonesm_infosettings_setdefaultdevice(PHONESM_SPEAKINGDEVICE_E device)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_setdefaultdevice(PHONESM_SPEAKINGDEVICE_E device) {
phonesm_infosettings_defaultdevice = device;
eeprom_SetSetting(EEPROM_ADDRESS_DEFAULTDEVICE, device);
}
/******************************************************************************
* FUNCTION:
* PHONESM_TIMEDATEFORMAT_E phonesm_infosettings_gettimedateformat(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
PHONESM_TIMEDATEFORMAT_E phonesm_infosettings_gettimedateformat(void) {
return phonesm_infosettings_timedateformat;
}
/******************************************************************************
* FUNCTION:
* void
* phonesm_infosettings_settimedateformat(PHONESM_TIMEDATEFORMAT_E format)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_settimedateformat(PHONESM_TIMEDATEFORMAT_E format) {
phonesm_infosettings_timedateformat = format;
eeprom_SetSetting(EEPROM_ADDRESS_TIMEFORMAT, format);
}
/******************************************************************************
* FUNCTION: BOOL phonesm_infosettings_getpredialenabled(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_infosettings_getpredialenabled(void) {
return phonesm_infosettings_predialenabled;
}
/******************************************************************************
* FUNCTION: void phonesm_infosettings_setpredialenabled(BOOL enabled)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_setpredialenabled(BOOL enabled) {
phonesm_infosettings_predialenabled = enabled;
eeprom_SetSetting(EEPROM_ADDRESS_PREDIAL, enabled);
}
/******************************************************************************
* FUNCTION: BOOL phonesm_infosettings_getcalltimerenabled(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_infosettings_getcalltimerenabled(void) {
return phonesm_infosettings_calltimerenabled;
}
/******************************************************************************
* FUNCTION: void phonesm_infosettings_setcalltimerenabled(BOOL enabled)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_setcalltimerenabled(BOOL enabled) {
phonesm_infosettings_calltimerenabled = enabled;
eeprom_SetSetting(EEPROM_ADDRESS_CALLTIMER, enabled);
}
/******************************************************************************
* FUNCTION: BOOL phonesm_infosettings_getautomuteenabled(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_infosettings_getautomuteenabled(void) {
return phonesm_infosettings_automuteenabled;
}
/******************************************************************************
* FUNCTION: void phonesm_infosettings_setautomuteenabled(BOOL enabled)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_setautomuteenabled(BOOL enabled) {
phonesm_infosettings_automuteenabled = enabled;
eeprom_SetSetting(EEPROM_ADDRESS_AUTOMUTE, enabled);
}
/******************************************************************************
* FUNCTION: BOOL phonesm_infosettings_timechanged(void)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
BOOL phonesm_infosettings_timechanged(void) {
DC550TimeUnit current_year;
DC550TimeUnit current_month;
DC550TimeUnit current_date;
DC550TimeUnit current_hours;
DC550TimeUnit current_minutes;
if( rtc_SettingTimeOfDay() )
return FALSE;
else {
rtc_GetTimeOfDay(¤t_year, ¤t_month, ¤t_date,
¤t_hours, ¤t_minutes, 0, 0);
if ( ((((phonesm_infosettings_year >> 4) * 10) +
(phonesm_infosettings_year & 0x0f)) == current_year) &&
(phonesm_infosettings_month == current_month) &&
(phonesm_infosettings_date == current_date) &&
(phonesm_infosettings_hours == current_hours) &&
(phonesm_infosettings_minutes == current_minutes) )
return FALSE;
else
return TRUE;
}
}
/******************************************************************************
* FUNCTION: void phonesm_infosettings_getformattedtime(char* timebuffer)
******************************************************************************
* DESCRIPTION:
*
*****************************************************************************/
void phonesm_infosettings_getformattedtime(char* timebuffer) {
int i;
DC550TimeUnit current_year;
switch(phonesm_infosettings_timedateformat) {
/***** No time and date display ******************************************/
case TIMEDATEFORMAT_NONE:
for(i = 0; i < TIMEDATE_STRING_LENGTH; i++)
timebuffer[i] = ' ';
timebuffer[TIMEDATE_STRING_LENGTH] = 0;
break;
/***** Example: 04/15/03 12:00P, right aligned ***************************/
case TIMEDATEFORMAT_MM_DD_YY_HH_MMP:
if( !rtc_SettingTimeOfDay() )
rtc_GetTimeOfDay(¤t_year, &phonesm_infosettings_month,
&phonesm_infosettings_date, &phonesm_infosettings_hours,
&phonesm_infosettings_minutes, 0, 0);
if(((((phonesm_infosettings_year >> 4) * 10) +
(phonesm_infosettings_year & 0x0f)) & 0x03) != current_year) {
phonesm_infosettings_year += ( ((current_year + 4) -
((((phonesm_infosettings_year >> 4) * 10) +
(phonesm_infosettings_year & 0x0f)) & 0x03)) &
0x03 );
if((phonesm_infosettings_year & 0x0f) >= 0x0a) {
phonesm_infosettings_year -= 0x0a;
phonesm_infosettings_year += 0x10;
if((phonesm_infosettings_year >> 4) >= 0x0a) {
phonesm_infosettings_year -= 0xa0;
}
}
}
timebuffer[0] = ' '; // Thank you, Debby
timebuffer[1] = '0' + (phonesm_infosettings_month >> 4);
timebuffer[2] = '0' + (phonesm_infosettings_month & 0x0f);
timebuffer[3] = '/';
timebuffer[4] = '0' + (phonesm_infosettings_date >> 4);
timebuffer[5] = '0' + (phonesm_infosettings_date & 0x0f);
timebuffer[6] = '/';
timebuffer[7] = '0' + (phonesm_infosettings_year >> 4);
timebuffer[8] = '0' + (phonesm_infosettings_year & 0x0f);
timebuffer[9] = ' ';
phonesm_infosettings_inserttime12((timebuffer+10),
phonesm_infolanguage_getlanguage());
timebuffer[16] = 0;
break;
/***** Example: 15/04/03 12:00P, right aligned ***************************/
case TIMEDATEFORMAT_DD_MM_YY_HH_MMP:
if( !rtc_SettingTimeOfDay() )
rtc_GetTimeOfDay(¤t_year, &phonesm_infosettings_month,
&phonesm_infosettings_date, &phonesm_infosettings_hours,
&phonesm_infosettings_minutes, 0, 0);
if(((((phonesm_infosettings_year >> 4) * 10) +
(phonesm_infosettings_year & 0x0f)) & 0x03) != current_year) {
phonesm_infosettings_year += ( ((current_year + 4) -
((((phonesm_infosettings_year >> 4) * 10) +
(phonesm_infosettings_year & 0x0f)) & 0x03)) &
0x03 );
if((phonesm_infosettings_year & 0x0f) >= 0x0a) {
phonesm_infosettings_year -= 0x0a;
phonesm_infosettings_year += 0x10;
if((phonesm_infosettings_year >> 4) >= 0x0a) {
phonesm_infosettings_year -= 0xa0;
}
}
}
timebuffer[0] = ' ';
timebuffer[1] = '0' + (phonesm_infosettings_date >> 4);
timebuffer[2] = '0' + (phonesm_infosettings_date & 0x0f);
timebuffer[3] = '/';
timebuffer[4] = '0' + (phonesm_infosettings_month >> 4);
timebuffer[5] = '0' + (phonesm_infosettings_month & 0x0f);
timebuffer[6] = '/';
timebuffer[7] = '0' + (phonesm_infosettings_year >> 4);
timebuffer[8] = '0' + (phonesm_infosettings_year & 0x0f);
timebuffer[9] = ' ';
phonesm_infosettings_inserttime12((timebuffer+10),
phonesm_infolanguage_getlanguage());
timebuffer[16] = 0;
break;
/***** Example: Apr 15 10:00P, right aligned *****************************/
case TIMEDATEFORMAT_MMM_DD_HH_MMP:
if( !rtc_SettingTimeOfDay() )
rtc_GetTimeOfDay(¤t_year, &phonesm_infosettings_month,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -