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

📄 dc550_phonesm_infoonetouch.c

📁 一款经典的数字电话设计资料
💻 C
字号:
/*****************************************************************************/
/*  CONFIDENTIAL                                                             */
/*  Sigpro Copyright 2003, All rights reserved                               */
/*****************************************************************************/
/*  CLIENT:  Telematrix                                                      */
/*  PROJECT: DC550 Digital Centrex Phone                                     */
/*  FILE:    dc550_phonesm_infoonetouch.c                                    */
/*****************************************************************************/
/*                                                                           */
/*****************************************************************************/

#define __DC550_PHONESM_INFOONETOUCH_EXTERN__
#include "dc550_phonesm_infoonetouch.h"
#include "dc550_i2cdriver.h"


/******************************************************************************
 *  GLOBAL VARIABLES
 *****************************************************************************/
BOOL phonesm_infoonetouch_enabled;
char phonesm_infoonetouch_pin[PHONENUMBER_ARRAY_SIZE];
DC550TimeUnit phonesm_infoonetouch_waitseconds_bcd;
DC550LEDState phonesm_infoonetouch_ledstate;


/******************************************************************************
 *  FUNCTION: void phonesm_infoonetouch_init(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called to initialize the settings variables.
 *****************************************************************************/
void phonesm_infoonetouch_init(void) {
  // Declare function variables
  int i;
  char tempWaitSeconds;

  if(eeprom_GetVersion() == EEPROM_VERSION_CURRENT) {
    eeprom_ReadByte(EEPROM_ADDRESS_ONETOUCH, &phonesm_infoonetouch_enabled);
    eeprom_ReadArray(EEPROM_ADDRESS_PIN, phonesm_infoonetouch_pin,
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadByte(EEPROM_ADDRESS_WAITSECONDS, &tempWaitSeconds);
    phonesm_infoonetouch_waitseconds_bcd = tempWaitSeconds;
  }
  else {
    phonesm_infoonetouch_enabled = FALSE;
    phonesm_infoonetouch_pin[0] = 0;
    phonesm_infoonetouch_waitseconds_bcd = 0;
    
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteByte(EEPROM_ADDRESS_ONETOUCH, phonesm_infoonetouch_enabled);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_PIN, phonesm_infoonetouch_pin,
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteByte(EEPROM_ADDRESS_WAITSECONDS,
                     (char)(phonesm_infoonetouch_waitseconds_bcd & 0xFF));
  }

  phonesm_infoonetouch_ledstate = LED_STATE_OFF;
}


/******************************************************************************
 *  FUNCTION: BOOL phonesm_infoonetouch_getenabled(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
BOOL phonesm_infoonetouch_getenabled(void) {
  return phonesm_infoonetouch_enabled;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infoonetouch_setenabled(BOOL enabled)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infoonetouch_setenabled(BOOL enabled) {
  phonesm_infoonetouch_enabled = enabled;
  eeprom_SetSetting(EEPROM_ADDRESS_ONETOUCH, enabled);
}


/******************************************************************************
 *  FUNCTION: void phonesm_infoonetouch_getpin(char* pinbuffer)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infoonetouch_getpin(char* pinbuffer) {
  // Declare local variables
  int i;

  // Copy phonesm_infoonetouch_pin into pinbuffer
  for(i = 0; phonesm_infoonetouch_pin[i] != 0; i++)
    pinbuffer[i] = phonesm_infoonetouch_pin[i];
  
  // Null terminate pinbuffer
  pinbuffer[i] = 0;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infoonetouch_setpin(char* pin)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infoonetouch_setpin(char* pin) {
  // Declare local variables
  int i;

  // Copy pin parameter to phonesm_infoonetouch_pin location
  for(i = 0; (pin[i]!=0) && (i<PHONENUMBER_MAX_LENGTH); i++)
    phonesm_infoonetouch_pin[i] = pin[i];
  
  // Null Terminate PIN Number String
  phonesm_infoonetouch_pin[i] = 0;

  // Write PIN Number String to EEPROM
  eeprom_SetNumber(EEPROM_ADDRESS_PIN, phonesm_infoonetouch_pin,
                   PHONENUMBER_ARRAY_SIZE);
}


/******************************************************************************
 *  FUNCTION: DC550TimeUnit phonesm_infoonetouch_getwaitseconds_bcd(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
DC550TimeUnit phonesm_infoonetouch_getwaitseconds_bcd(void) {
  return phonesm_infoonetouch_waitseconds_bcd;
}


/******************************************************************************
 *  FUNCTION: DC550TimeUnit phonesm_infoonetouch_getwaitseconds_int(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
DC550TimeUnit phonesm_infoonetouch_getwaitseconds_int(void) {
  return ( (10 * (phonesm_infoonetouch_waitseconds_bcd >> 4)) +
           (phonesm_infoonetouch_waitseconds_bcd & 0x0f) );
}


/******************************************************************************
 *  FUNCTION: void
 *  phonesm_infoonetouch_setwaitseconds_bcd(DC550TimeUnit seconds)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infoonetouch_setwaitseconds_bcd(DC550TimeUnit seconds) {
  phonesm_infoonetouch_waitseconds_bcd = seconds;
  eeprom_SetSetting(EEPROM_ADDRESS_WAITSECONDS, (char)(seconds & 0xFF));
}


/******************************************************************************
 *  FUNCTION: DC550LEDState phonesm_infoonetouch_getledstate(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
DC550LEDState phonesm_infoonetouch_getledstate(void) {
  return phonesm_infoonetouch_ledstate;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infoonetouch_setledstate(DC550LEDState state) 
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infoonetouch_setledstate(DC550LEDState state) {
  phonesm_infoonetouch_ledstate = state;
}

⌨️ 快捷键说明

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