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

📄 dc550_phonesm_display12.c

📁 一款经典的数字电话设计资料
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************/
/*  CONFIDENTIAL                                                             */
/*  Sigpro Copyright 2003, All rights reserved                               */
/*****************************************************************************/
/*  CLIENT:  Telematrix                                                      */
/*  PROJECT: DC550 Digital Centrex Phone                                     */
/*  FILE:    dc550_phonesm_display12.c                                       */
/*****************************************************************************/
/*  The Display 12 State displays a message for an amount of time that can   */
/*  be specified by the user.  In general, this state will display a message */
/*  for 12 seconds.                                                          */
/*****************************************************************************/

#define __DC550_PHONESM_DISPLAY12_EXTERN__
#include "dc550_phonesm_display12.h"
#include "dc550_phonesm_active.h"
#include "dc550_phonesm_idle.h"
#include "dc550_phonesm_memory.h"
#include "dc550_phonesm_predial.h"
#include "dc550_phonesm_program.h"
#include "dc550_phonesm_infodisplay12.h"
#include "dc550_phonesm_infoaudio.h"
#include "dc550_display.h"
#include "dc550_usartdriver.h"
#include "dc550_leddriver.h"


/******************************************************************************
 *  GLOBAL VARIABLES
 *****************************************************************************/
PHONESM_STATE_E phonesm_display12_exitstate;
DC550InterruptCounter phonesm_display12_periodtimeout;


/******************************************************************************
 *  FUNCTION: void phonesm_display12_init(void) {
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called to initialize all of the Display 12 State
 *  variables.
 *****************************************************************************/
void phonesm_display12_init(void) {
  phonesm_display12_exitstate = PHONESM_STATE_IDLE;
  phonesm_display12_periodtimeout = 0;
}


/******************************************************************************
 *  FUNCTION: void phonesm_display12_state_enter(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called whenever the telephone enters the Display 12 State.
 *****************************************************************************/
void phonesm_display12_state_enter(void) {
  
  if(phonesm_display12_periodtimeout == 0)
    phonesm_display12_periodtimeout = phonesm_infodisplay12_getperiods();
  display_writelineone(0, phonesm_infodisplay12_getlineone() );
  display_writelinetwo(0, phonesm_infodisplay12_getlinetwo() );
  
  // Turn on LCD Backlight
  leddriver_setstate(LED_INDICATOR_BACKLIGHT, LED_STATE_ON);
}


/******************************************************************************
 *  FUNCTION: void phonesm_display12_state_exit(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called whenever the telephone enters the Display 12 State.
 *****************************************************************************/
void phonesm_display12_state_exit(void) {
  phonesm_display12_periodtimeout = 0;
}


/******************************************************************************
 *  FUNCTION: BOOL phonesm_display12_exec_hookswitch(BOOL updown)
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called when the hookswitch goes up or down while the
 *  phone is in Display 12 state.
 *****************************************************************************/
BOOL phonesm_display12_exec_hookswitch(BOOL updown) {

  // Hookswitch went up
  if(updown == HOOKSTATE_UP) {
    switch(phonesm_infoaudio_getspeakingdevice()) {
      case PHONESM_SPEAKINGDEVICE_HANDSET:
      case PHONESM_SPEAKINGDEVICE_HEADSET:
      case PHONESM_SPEAKINGDEVICE_SPEAKERPHONE:
        if(phonesm_display12_exitstate == PHONESM_STATE_ACTIVE) {
          phonesm_active_exec_hookswitch(updown);
          return 0;
        }
        else {
          phonesm_display12_state_exit();
          phonesm_deactivate_state(PHONESM_STATE_DISPLAY12);
          return 1;
        }
      case PHONESM_SPEAKINGDEVICE_NONE:
      case PHONESM_SPEAKINGDEVICE_ALERTER:
      default:
        phonesm_display12_state_exit();
        phonesm_deactivate_state(PHONESM_STATE_DISPLAY12);
        return 1;
    }
  }

  // Hookswitch went down
  else {
    switch(phonesm_display12_exitstate) {
      case PHONESM_STATE_IDLE:
        phonesm_idle_exec_hookswitch(updown);
        break;
      case PHONESM_STATE_ACTIVE:
        phonesm_active_exec_hookswitch(updown);
        break;
      case PHONESM_STATE_PROGRAM:
        phonesm_program_exec_hookswitch(updown);
        return 0;
      case PHONESM_STATE_MEMORY:
        phonesm_memory_exec_hookswitch(updown);
        return 0;
      case PHONESM_STATE_PREDIAL:
        phonesm_predial_exec_hookswitch(updown);
        return 0;
      case PHONESM_STATE_INIT:
      case PHONESM_STATE_DISPLAY12:
      case PHONESM_STATE_VOLUME:
      case PHONESM_STATE_CONTRAST:
      default:
        // These should never happen
        phonesm_display12_state_exit();
        phonesm_deactivate_state(PHONESM_STATE_DISPLAY12);
        return 1;
    }
  }
  
  // This is just to eliminate a compiler warning
  return 0;
}


/******************************************************************************
 *  FUNCTION:
 *  BOOL phonesm_display12_exec_keypress(unsigned int key, BOOL updown)
 ******************************************************************************
 *  DESCRIPTION:
 *  This function is called whenever a key goes up or down while the phone
 *  is in the Display 12 State.  Some keys do nothing; other keys exit the
 *  Display 12 State.
 *****************************************************************************/
BOOL phonesm_display12_exec_keypress(unsigned int key, BOOL updown) {

  // Currently the Display 12 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;
        
      // These keys deactivate the Display 12 State
      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_STAR:
      case KEYPAD_DIGIT_POUND:
      case KEYPAD_LOCAL_STORENUM:
      case KEYPAD_LOCAL_PAUSE:
      case KEYPAD_LOCAL_PROGRAM:
      case KEYPAD_LOCAL_MEMORY:
      case KEYPAD_LOCAL_SELECT:
      case KEYPAD_LOCAL_SAVE:
      case KEYPAD_FEATURE_HOLD:
      case KEYPAD_AUDIO_MUTE:
      case KEYPAD_FEATURE_01:
      case KEYPAD_AUDIO_HEADSET:
      case KEYPAD_AUDIO_SPEAKER:
      case KEYPAD_FEATURE_VOICEMAIL:
      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_FEATURE_RELEASE:
        phonesm_display12_state_exit();
        phonesm_deactivate_state(PHONESM_STATE_DISPLAY12);
        return 1;
      
      // The Volume Keys activates the Volume State
      case KEYPAD_VOLUME_UP:
      case KEYPAD_VOLUME_DOWN:
        phonesm_activate_state(PHONESM_STATE_VOLUME);
        return 1;
      
      // The Exit key just exits the Display 12 State
      case KEYPAD_LOCAL_EXIT:

⌨️ 快捷键说明

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