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

📄 dc550_phonesm_infonumbers.c

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

#define __DC550_PHONESM_INFONUMBERS_EXTERN__
#include "dc550_phonesm_infolanguage.h"
#include "dc550_i2cdriver.h"


/******************************************************************************
 *  GLOBAL VARIABLES
 *****************************************************************************/
char phonesm_infonumbers_memorynumbers[10][PHONENUMBER_ARRAY_SIZE];
char phonesm_infonumbers_storenumber[PHONENUMBER_ARRAY_SIZE];
char phonesm_infonumbers_predialnumber[PHONENUMBER_ARRAY_SIZE];
char phonesm_infonumbers_predialnumbersize;


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_init(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_init(void) {
  // Declare function variables
  int i;

  if(eeprom_GetVersion() == EEPROM_VERSION_CURRENT) {
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_00,
                     phonesm_infonumbers_memorynumbers[0],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_01,
                     phonesm_infonumbers_memorynumbers[1],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_02,
                     phonesm_infonumbers_memorynumbers[2],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_03,
                     phonesm_infonumbers_memorynumbers[3],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_04,
                     phonesm_infonumbers_memorynumbers[4],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_05,
                     phonesm_infonumbers_memorynumbers[5],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_06,
                     phonesm_infonumbers_memorynumbers[6],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_07,
                     phonesm_infonumbers_memorynumbers[7],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_08,
                     phonesm_infonumbers_memorynumbers[8],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_MEMORYNUM_09,
                     phonesm_infonumbers_memorynumbers[9],
                     PHONENUMBER_ARRAY_SIZE);
    eeprom_ReadArray(EEPROM_ADDRESS_STORENUM,
                     phonesm_infonumbers_storenumber, PHONENUMBER_ARRAY_SIZE);
  }
  else {
    phonesm_infonumbers_memorynumbers[0][0] = 0;
    phonesm_infonumbers_memorynumbers[1][0] = 0;
    phonesm_infonumbers_memorynumbers[2][0] = 0;
    phonesm_infonumbers_memorynumbers[3][0] = 0;
    phonesm_infonumbers_memorynumbers[4][0] = 0;
    phonesm_infonumbers_memorynumbers[5][0] = 0;
    phonesm_infonumbers_memorynumbers[6][0] = 0;
    phonesm_infonumbers_memorynumbers[7][0] = 0;
    phonesm_infonumbers_memorynumbers[8][0] = 0;
    phonesm_infonumbers_memorynumbers[9][0] = 0;
    phonesm_infonumbers_storenumber[0] = 0;

    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_00,
                      phonesm_infonumbers_memorynumbers[0],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_01,
                      phonesm_infonumbers_memorynumbers[1],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_02,
                      phonesm_infonumbers_memorynumbers[2],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_03,
                      phonesm_infonumbers_memorynumbers[3],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_04,
                      phonesm_infonumbers_memorynumbers[4],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_05,
                      phonesm_infonumbers_memorynumbers[5],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_06,
                      phonesm_infonumbers_memorynumbers[6],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_07,
                      phonesm_infonumbers_memorynumbers[7],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_08,
                      phonesm_infonumbers_memorynumbers[8],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_MEMORYNUM_09,
                      phonesm_infonumbers_memorynumbers[9],
                      PHONENUMBER_ARRAY_SIZE);
    for(i = 0; i < 4000; i++);         // Wait 4ms (a write takes over 3ms)
    eeprom_WriteArray(EEPROM_ADDRESS_STORENUM,
                      phonesm_infonumbers_storenumber, PHONENUMBER_ARRAY_SIZE);
  }
  
  phonesm_infonumbers_predialnumbersize = 0;
}


/******************************************************************************
 *  FUNCTION: 
 *  void phonesm_infonumbers_getmemorynumber(int index, char* numberbuffer)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_getmemorynumber(int index, char* numberbuffer) {
  // Declare function variables
  int i;
  char* currentnumber = phonesm_infonumbers_memorynumbers[index];
  
  // Copy memory dial number into numberbuffer
  for(i = 0; currentnumber[i] != 0; i++)
    numberbuffer[i] = currentnumber[i];
  
  // Null terminate numberbuffer
  numberbuffer[i] = 0;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_setmemorynumber(int index, char* number)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_setmemorynumber(int index, char* number) {
  // Declare function variables
  int i;
  char* currentnumber = phonesm_infonumbers_memorynumbers[index];
  
  // Copy number paramater to memory dial number location
  for(i = 0; (number[i]!=0) && (i<PHONENUMBER_MAX_LENGTH); i++)
    currentnumber[i] = number[i];
    
  // Null terminate the memory dial number location 
  currentnumber[i] = 0;
  
  // Write the memory dial number to EEPROM
  switch(index) {
    case 0:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_00,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 1:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_01,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 2:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_02,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 3:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_03,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 4:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_04,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 5:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_05,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 6:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_06,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 7:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_07,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 8:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_08,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
    case 9:
      eeprom_SetNumber(EEPROM_ADDRESS_MEMORYNUM_09,
                       currentnumber, PHONENUMBER_ARRAY_SIZE);
      break;
  }
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_getstorenumber(char* numberbuffer)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_getstorenumber(char* numberbuffer) {
  // Declare function variables
  int i;

  // Copy stored number into numberbuffer
  for(i = 0; phonesm_infonumbers_storenumber[i] != 0; i++)
    numberbuffer[i] = phonesm_infonumbers_storenumber[i];
  
  // Null terminate numberbuffer
  numberbuffer[i] = 0;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_setstorenumber(char* number)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_setstorenumber(char* number) {
  // Declare function variables
  int i;
  
  // Copy number parameter to stored number location
  for(i = 0; (number[i]!=0) && (i<PHONENUMBER_MAX_LENGTH); i++)
    phonesm_infonumbers_storenumber[i] = number[i];
    
  // Null terminate the stored number location 
  phonesm_infonumbers_storenumber[i] = 0;

  // Write the Store Number to EEPROM
  eeprom_SetNumber(EEPROM_ADDRESS_STORENUM,
                   phonesm_infonumbers_storenumber, PHONENUMBER_ARRAY_SIZE);

}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_getpredialnumber(char* numberbuffer)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_getpredialnumber(char* numberbuffer) {
  // Declare function variables
  int i;
  
  // Copy predial number into numberbuffer
  for(i = 0; i < phonesm_infonumbers_predialnumbersize; i++)
    numberbuffer[i] = phonesm_infonumbers_predialnumber[i];
    
  // Null terminate numberbuffer
  numberbuffer[i] = 0;
}


/******************************************************************************
 *  FUNCTION: int phonesm_infonumbers_getpredialnumberofdigits(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
int phonesm_infonumbers_getpredialnumberofdigits(void) {
  return phonesm_infonumbers_predialnumbersize;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_setpredialnumber(char* number)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_setpredialnumber(char* number) {
  // Declare function variables
  int i;
  
  // Copy number into predial number location
  for(i = 0; (number[i]!=0) && (i<PHONENUMBER_MAX_LENGTH); i++)
    phonesm_infonumbers_predialnumber[i] = number[i];
  
  // Null terminate phone
  phonesm_infonumbers_predialnumbersize = i;
  phonesm_infonumbers_predialnumber[i] = 0;
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_setpredialnextdigit(char digit)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_setpredialnextdigit(char digit) {
  // Check for overflow
  if(phonesm_infonumbers_predialnumbersize < PHONENUMBER_MAX_LENGTH) {
  
    // Copy the digit
    phonesm_infonumbers_predialnumber[phonesm_infonumbers_predialnumbersize] =
      digit;
    
    // Increment the predial number size
    phonesm_infonumbers_predialnumbersize++;
    
    // Null terminate the predial number
    phonesm_infonumbers_predialnumber[phonesm_infonumbers_predialnumbersize] =
      0;
  }
}


/******************************************************************************
 *  FUNCTION: void phonesm_infonumbers_clearpredialnumber(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  
 *****************************************************************************/
void phonesm_infonumbers_clearpredialnumber(void) {
  phonesm_infonumbers_predialnumbersize = 0;
  phonesm_infonumbers_predialnumber[0] = 0;
}

⌨️ 快捷键说明

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