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

📄 dc550_phonesm_init.c

📁 一款经典的数字电话设计资料
💻 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 + -