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

📄 dc550_phonesm_infosettings.c

📁 一款经典的数字电话设计资料
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************/
/*  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(&current_year, &current_month, &current_date, 
                     &current_hours, &current_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(&current_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(&current_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(&current_year, &phonesm_infosettings_month,

⌨️ 快捷键说明

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