📄 dc550_phonesm_active.c
字号:
}
else if( phonesm_infosettings_getdefaultdevice() ==
PHONESM_SPEAKINGDEVICE_HEADSET ) {
phonesm_infoaudio_set_speakingdevice(PHONESM_SPEAKINGDEVICE_HEADSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_ON);
}
else {
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_SPEAKERPHONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_ON);
}
break;
*/
case PHONESM_SPEAKINGDEVICE_ALERTER:
break;
}
return 0;
/***** Hold Key ********************************************************/
case KEYPAD_FEATURE_HOLD:
modemcontroller_send_modemmessage(MDC_CPE_FEATURE_HOLD);
return 0;
/***** Release Key *****************************************************/
case KEYPAD_FEATURE_RELEASE:
modemcontroller_send_modemmessage(MDC_CPE_FEATURE_RELEASE);
// We may also want to turn the audio off but keep the speakingdevice
// the same so that when we actually hang up the DMS switch gets
// a hangup message
if(phonesm_active_handsetactivated)
phonesm_active_pendingoffhook = PHONESM_ACTIVE_ONHOOK_PENDING;
return 0;
/***** Volume Keys *****************************************************/
// The Volume Keys activate the Volume State
case KEYPAD_VOLUME_UP:
case KEYPAD_VOLUME_DOWN:
phonesm_activate_state(PHONESM_STATE_VOLUME);
return 1;
case KEYPAD_AUDIO_MUTE:
if(phonesm_infoaudio_muteon) {
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
audio_mute(FALSE);
}
else {
phonesm_infoaudio_muteon = TRUE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_ON);
audio_mute(TRUE);
}
break;
/***** Headset Key *****************************************************/
case KEYPAD_AUDIO_HEADSET:
switch (phonesm_infoaudio_speakingdevice) {
case PHONESM_SPEAKINGDEVICE_NONE:
if(phonesm_active_pendingonhook) {
if(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE)
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_HEADSET;
// Activates the headset if the handset or speakerphone
// have already been activated
}
else {
phonesm_active_pendingoffhook = PHONESM_ACTIVE_OFFHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_UP);
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_HEADSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_ON);
}
break;
case PHONESM_SPEAKINGDEVICE_ALERTER:
if(phonesm_active_pendingonhook) {
if(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE)
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_HEADSET;
// Activates the headset if the handset or speakerphone
// have already been activated
}
else {
phonesm_active_pendingoffhook = PHONESM_ACTIVE_OFFHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_UP);
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_HEADSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_ON);
switch(phonesm_infoonetouch_getledstate()) {
case LED_STATE_OFF:
leddriver_setstate(LED_INDICATOR_VOICEMAIL, LED_STATE_OFF);
break;
case LED_STATE_WINK:
case LED_STATE_FLASH:
case LED_STATE_ON:
leddriver_setstate(LED_INDICATOR_VOICEMAIL, LED_STATE_WINK);
break;
}
audio_ringer(FALSE);
}
break;
case PHONESM_SPEAKINGDEVICE_HEADSET:
if( controller_gethookswitchstate() == HOOKSTATE_UP ) {
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_HANDSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_OFF);
if(phonesm_active_handsetactivated) {
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_HANDSET);
}
}
else {
if(phonesm_active_pendingoffhook) {
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_HEADSET;
}
else {
phonesm_active_pendingonhook = PHONESM_ACTIVE_ONHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_DOWN);
phonesm_infoaudio_set_speakingdevice(PHONESM_SPEAKINGDEVICE_NONE);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_OFF);
phonesm_active_handsetactivated = FALSE;
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_OFF);
}
break;
}
break;
case PHONESM_SPEAKINGDEVICE_SPEAKERPHONE:
if( phonesm_active_pendingoffhook &&
(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE) )
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
phonesm_infoaudio_set_speakingdevice(PHONESM_SPEAKINGDEVICE_HEADSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_ON);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_OFF);
if(phonesm_active_handsetactivated) {
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_HEADSET);
}
break;
case PHONESM_SPEAKINGDEVICE_HANDSET:
if( phonesm_active_pendingoffhook &&
(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE) )
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
phonesm_infoaudio_set_speakingdevice(PHONESM_SPEAKINGDEVICE_HEADSET);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_ON);
if(phonesm_active_handsetactivated) {
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_HEADSET);
}
break;
}
break;
/***** Speaker Key *****************************************************/
case KEYPAD_AUDIO_SPEAKER:
switch (phonesm_infoaudio_speakingdevice) {
case PHONESM_SPEAKINGDEVICE_NONE:
if(phonesm_active_pendingonhook) {
if(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE)
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_SPEAKERPHONE;
// Activates the speakerphone if the handset or headset
// have already been activated
}
else {
phonesm_active_pendingoffhook = PHONESM_ACTIVE_OFFHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_UP);
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_SPEAKERPHONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_ON);
}
break;
case PHONESM_SPEAKINGDEVICE_ALERTER:
if(phonesm_active_pendingonhook) {
if(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE)
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_SPEAKERPHONE;
// Activates the speakerphone if the handset or headset
// have already been activated
}
else {
phonesm_active_pendingoffhook = PHONESM_ACTIVE_OFFHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_UP);
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_SPEAKERPHONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_ON);
switch(phonesm_infoonetouch_getledstate()) {
case LED_STATE_OFF:
leddriver_setstate(LED_INDICATOR_VOICEMAIL, LED_STATE_OFF);
break;
case LED_STATE_WINK:
case LED_STATE_FLASH:
case LED_STATE_ON:
leddriver_setstate(LED_INDICATOR_VOICEMAIL, LED_STATE_WINK);
break;
}
audio_ringer(FALSE);
}
break;
case PHONESM_SPEAKINGDEVICE_HEADSET:
if( phonesm_active_pendingoffhook &&
(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE) )
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_SPEAKERPHONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_ON);
leddriver_setstate(LED_INDICATOR_HEADSET, LED_STATE_OFF);
if(phonesm_active_handsetactivated) {
audio_select(AUDIO_SPEAKER);
if(phonesm_infosettings_getautomuteenabled()) {
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_ON);
phonesm_infoaudio_muteon = TRUE;
audio_mute(TRUE);
}
else if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
}
break;
case PHONESM_SPEAKINGDEVICE_SPEAKERPHONE:
if( controller_gethookswitchstate() == HOOKSTATE_UP ) {
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_HANDSET);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_OFF);
if(phonesm_active_handsetactivated) {
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_HANDSET);
}
}
else {
if(phonesm_active_pendingoffhook) {
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_SPEAKERPHONE;
}
else {
phonesm_active_pendingonhook = PHONESM_ACTIVE_ONHOOK_PENDING;
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
modemcontroller_send_modemmessage(MDC_CPE_HOOKSTATE_DOWN);
phonesm_infoaudio_set_speakingdevice(PHONESM_SPEAKINGDEVICE_NONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_OFF);
phonesm_active_handsetactivated = FALSE;
if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
audio_select(AUDIO_OFF);
}
break;
}
break;
case PHONESM_SPEAKINGDEVICE_HANDSET:
if( phonesm_active_pendingoffhook &&
(phonesm_active_pendingdevice != PHONESM_SPEAKINGDEVICE_NONE) )
phonesm_active_pendingdevice = PHONESM_SPEAKINGDEVICE_NONE;
phonesm_infoaudio_set_speakingdevice(
PHONESM_SPEAKINGDEVICE_SPEAKERPHONE);
leddriver_setstate(LED_INDICATOR_SPEAKERPHONE, LED_STATE_ON);
if(phonesm_active_handsetactivated) {
audio_select(AUDIO_SPEAKER);
if(phonesm_infosettings_getautomuteenabled()) {
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_ON);
phonesm_infoaudio_muteon = TRUE;
audio_mute(TRUE);
}
else if(phonesm_infoaudio_muteon) {
audio_mute(FALSE);
phonesm_infoaudio_muteon = FALSE;
leddriver_setstate(LED_INDICATOR_MUTE, LED_STATE_OFF);
}
}
break;
}
break;
// The rest of the keys do nothing
case KEYPAD_LOCAL_EXIT:
case KEYPAD_LOCAL_SELECT:
case KEYPAD_LOCAL_SAVE:
case KEYPAD_LOCAL_PROGRAM:
case KEYPAD_LOCAL_MEMORY:
// Do nothing
// return 0;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -