Skinny: redial
- Allow redial from softKey or stimulus - Add redial, newcall to on_hook softkeys - Add endcall to ringing and connected softkeys git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16791 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
139291f917
commit
0151d20c97
|
@ -99,21 +99,21 @@ struct soft_key_template_definition soft_key_template_default[] = {
|
||||||
{ "\200\001", SOFTKEY_REDIAL },
|
{ "\200\001", SOFTKEY_REDIAL },
|
||||||
{ "\200\002", SOFTKEY_NEWCALL },
|
{ "\200\002", SOFTKEY_NEWCALL },
|
||||||
{ "\200\003", SOFTKEY_HOLD },
|
{ "\200\003", SOFTKEY_HOLD },
|
||||||
{ "\200\004", SOFTKEY_TRNSFER },
|
{ "\200\004", SOFTKEY_TRANSFER },
|
||||||
{ "\200\005", SOFTKEY_CFWDALL },
|
{ "\200\005", SOFTKEY_CFWDALL },
|
||||||
{ "\200\006", SOFTKEY_CFWDBUSY },
|
{ "\200\006", SOFTKEY_CFWDBUSY },
|
||||||
{ "\200\007", SOFTKEY_CFWDNOANSWER },
|
{ "\200\007", SOFTKEY_CFWDNOANSWER },
|
||||||
{ "\200\010", SOFTKEY_BKSPC },
|
{ "\200\010", SOFTKEY_BACKSPACE },
|
||||||
{ "\200\011", SOFTKEY_ENDCALL },
|
{ "\200\011", SOFTKEY_ENDCALL },
|
||||||
{ "\200\012", SOFTKEY_RESUME },
|
{ "\200\012", SOFTKEY_RESUME },
|
||||||
{ "\200\013", SOFTKEY_ANSWER },
|
{ "\200\013", SOFTKEY_ANSWER },
|
||||||
{ "\200\014", SOFTKEY_INFO },
|
{ "\200\014", SOFTKEY_INFO },
|
||||||
{ "\200\015", SOFTKEY_CONFRN },
|
{ "\200\015", SOFTKEY_CONFRM },
|
||||||
{ "\200\016", SOFTKEY_PARK },
|
{ "\200\016", SOFTKEY_PARK },
|
||||||
{ "\200\017", SOFTKEY_JOIN },
|
{ "\200\017", SOFTKEY_JOIN },
|
||||||
{ "\200\020", SOFTKEY_MEETME },
|
{ "\200\020", SOFTKEY_MEETMECONFRM },
|
||||||
{ "\200\021", SOFTKEY_PICKUP },
|
{ "\200\021", SOFTKEY_CALLPICKUP },
|
||||||
{ "\200\022", SOFTKEY_GPICKUP },
|
{ "\200\022", SOFTKEY_GRPCALLPICKUP },
|
||||||
{ "\200\077", SOFTKEY_DND },
|
{ "\200\077", SOFTKEY_DND },
|
||||||
{ "\200\120", SOFTKEY_IDIVERT },
|
{ "\200\120", SOFTKEY_IDIVERT },
|
||||||
};
|
};
|
||||||
|
@ -1421,6 +1421,10 @@ switch_status_t skinny_handle_soft_key_set_request(listener_t *listener, skinny_
|
||||||
message->data.soft_key_set.total_soft_key_set_count = 11;
|
message->data.soft_key_set.total_soft_key_set_count = 11;
|
||||||
|
|
||||||
/* TODO fill the set */
|
/* TODO fill the set */
|
||||||
|
message->data.soft_key_set.soft_key_set[SKINNY_KEY_SET_ON_HOOK].soft_key_template_index[0] = SOFTKEY_REDIAL;
|
||||||
|
message->data.soft_key_set.soft_key_set[SKINNY_KEY_SET_ON_HOOK].soft_key_template_index[1] = SOFTKEY_NEWCALL;
|
||||||
|
message->data.soft_key_set.soft_key_set[SKINNY_KEY_SET_CONNECTED].soft_key_template_index[0] = SOFTKEY_ENDCALL;
|
||||||
|
message->data.soft_key_set.soft_key_set[SKINNY_KEY_SET_RING_IN].soft_key_template_index[0] = SOFTKEY_ENDCALL;
|
||||||
|
|
||||||
skinny_send_reply(listener, message);
|
skinny_send_reply(listener, message);
|
||||||
|
|
||||||
|
@ -1521,6 +1525,8 @@ switch_status_t skinny_handle_soft_key_event_message(listener_t *listener, skinn
|
||||||
skinny_profile_t *profile;
|
skinny_profile_t *profile;
|
||||||
switch_channel_t *channel = NULL;
|
switch_channel_t *channel = NULL;
|
||||||
uint32_t line;
|
uint32_t line;
|
||||||
|
private_t *tech_pvt = NULL;
|
||||||
|
|
||||||
|
|
||||||
switch_assert(listener->profile);
|
switch_assert(listener->profile);
|
||||||
switch_assert(listener->device_name);
|
switch_assert(listener->device_name);
|
||||||
|
@ -1537,11 +1543,20 @@ switch_status_t skinny_handle_soft_key_event_message(listener_t *listener, skinn
|
||||||
|
|
||||||
if(!listener->session[line]) { /*the line is not busy */
|
if(!listener->session[line]) { /*the line is not busy */
|
||||||
switch(request->data.soft_key_event.event) {
|
switch(request->data.soft_key_event.event) {
|
||||||
|
case SOFTKEY_REDIAL:
|
||||||
|
skinny_create_session(listener, line, SKINNY_KEY_SET_DIGITS_AFTER_DIALING_FIRST_DIGIT);
|
||||||
|
|
||||||
|
tech_pvt = switch_core_session_get_private(listener->session[line]);
|
||||||
|
assert(tech_pvt != NULL);
|
||||||
|
|
||||||
|
strcpy(tech_pvt->dest, "redial");
|
||||||
|
skinny_process_dest(listener, line);
|
||||||
|
break;
|
||||||
case SOFTKEY_NEWCALL:
|
case SOFTKEY_NEWCALL:
|
||||||
skinny_create_session(listener, line, SKINNY_KEY_SET_OFF_HOOK);
|
skinny_create_session(listener, line, SKINNY_KEY_SET_OFF_HOOK);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
|
||||||
"Unknown SoftKeyEvent type while not busy: %d.\n", request->data.soft_key_event.event);
|
"Unknown SoftKeyEvent type while not busy: %d.\n", request->data.soft_key_event.event);
|
||||||
}
|
}
|
||||||
} else { /* the line is busy */
|
} else { /* the line is busy */
|
||||||
|
@ -1554,7 +1569,7 @@ switch_status_t skinny_handle_soft_key_event_message(listener_t *listener, skinn
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
|
||||||
"Unknown SoftKeyEvent type while busy: %d.\n", request->data.soft_key_event.event);
|
"Unknown SoftKeyEvent type while busy: %d.\n", request->data.soft_key_event.event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1601,6 +1616,15 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess
|
||||||
skinny_check_data_length(request, sizeof(request->data.stimulus));
|
skinny_check_data_length(request, sizeof(request->data.stimulus));
|
||||||
|
|
||||||
switch(request->data.stimulus.instance_type) {
|
switch(request->data.stimulus.instance_type) {
|
||||||
|
case SKINNY_BUTTON_LAST_NUMBER_REDIAL:
|
||||||
|
skinny_create_session(listener, line, SKINNY_KEY_SET_DIGITS_AFTER_DIALING_FIRST_DIGIT);
|
||||||
|
|
||||||
|
tech_pvt = switch_core_session_get_private(listener->session[line]);
|
||||||
|
assert(tech_pvt != NULL);
|
||||||
|
|
||||||
|
strcpy(tech_pvt->dest, "redial");
|
||||||
|
skinny_process_dest(listener, line);
|
||||||
|
break;
|
||||||
case SKINNY_BUTTON_VOICEMAIL:
|
case SKINNY_BUTTON_VOICEMAIL:
|
||||||
skinny_create_session(listener, line, SKINNY_KEY_SET_DIGITS_AFTER_DIALING_FIRST_DIGIT);
|
skinny_create_session(listener, line, SKINNY_KEY_SET_DIGITS_AFTER_DIALING_FIRST_DIGIT);
|
||||||
|
|
||||||
|
|
|
@ -230,7 +230,7 @@ enum skinny_ring_mode {
|
||||||
/* SetLampMessage */
|
/* SetLampMessage */
|
||||||
#define SET_LAMP_MESSAGE 0x0086
|
#define SET_LAMP_MESSAGE 0x0086
|
||||||
struct set_lamp_message {
|
struct set_lamp_message {
|
||||||
uint32_t stimulus;
|
uint32_t stimulus; /* See enum skinny_button_definition */
|
||||||
uint32_t stimulus_instance;
|
uint32_t stimulus_instance;
|
||||||
uint32_t mode; /* See enum skinny_lamp_mode */
|
uint32_t mode; /* See enum skinny_lamp_mode */
|
||||||
};
|
};
|
||||||
|
@ -361,6 +361,7 @@ struct button_definition {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum skinny_button_definition {
|
enum skinny_button_definition {
|
||||||
|
SKINNY_BUTTON_LAST_NUMBER_REDIAL = 0x01,
|
||||||
SKINNY_BUTTON_SPEED_DIAL = 0x02,
|
SKINNY_BUTTON_SPEED_DIAL = 0x02,
|
||||||
SKINNY_BUTTON_LINE = 0x09,
|
SKINNY_BUTTON_LINE = 0x09,
|
||||||
SKINNY_BUTTON_VOICEMAIL = 0x0F,
|
SKINNY_BUTTON_VOICEMAIL = 0x0F,
|
||||||
|
@ -423,32 +424,33 @@ struct soft_key_template_res_message {
|
||||||
struct soft_key_template_definition soft_key[32];
|
struct soft_key_template_definition soft_key[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SOFTKEY_NONE 0x00
|
enum skinny_soft_key_event {
|
||||||
#define SOFTKEY_REDIAL 0x01
|
SOFTKEY_REDIAL = 0x01,
|
||||||
#define SOFTKEY_NEWCALL 0x02
|
SOFTKEY_NEWCALL = 0x02,
|
||||||
#define SOFTKEY_HOLD 0x03
|
SOFTKEY_HOLD = 0x03,
|
||||||
#define SOFTKEY_TRNSFER 0x04
|
SOFTKEY_TRANSFER = 0x04,
|
||||||
#define SOFTKEY_CFWDALL 0x05
|
SOFTKEY_CFWDALL = 0x05,
|
||||||
#define SOFTKEY_CFWDBUSY 0x06
|
SOFTKEY_CFWDBUSY = 0x06,
|
||||||
#define SOFTKEY_CFWDNOANSWER 0x07
|
SOFTKEY_CFWDNOANSWER = 0x07,
|
||||||
#define SOFTKEY_BKSPC 0x08
|
SOFTKEY_BACKSPACE = 0x08,
|
||||||
#define SOFTKEY_ENDCALL 0x09
|
SOFTKEY_ENDCALL = 0x09,
|
||||||
#define SOFTKEY_RESUME 0x0A
|
SOFTKEY_RESUME = 0x0A,
|
||||||
#define SOFTKEY_ANSWER 0x0B
|
SOFTKEY_ANSWER = 0x0B,
|
||||||
#define SOFTKEY_INFO 0x0C
|
SOFTKEY_INFO = 0x0C,
|
||||||
#define SOFTKEY_CONFRN 0x0D
|
SOFTKEY_CONFRM = 0x0D,
|
||||||
#define SOFTKEY_PARK 0x0E
|
SOFTKEY_PARK = 0x0E,
|
||||||
#define SOFTKEY_JOIN 0x0F
|
SOFTKEY_JOIN = 0x0F,
|
||||||
#define SOFTKEY_MEETME 0x10
|
SOFTKEY_MEETMECONFRM = 0x10,
|
||||||
#define SOFTKEY_PICKUP 0x11
|
SOFTKEY_CALLPICKUP = 0x11,
|
||||||
#define SOFTKEY_GPICKUP 0x12
|
SOFTKEY_GRPCALLPICKUP = 0x12,
|
||||||
#define SOFTKEY_DND 0x13
|
SOFTKEY_DND = 0x13,
|
||||||
#define SOFTKEY_IDIVERT 0x14
|
SOFTKEY_IDIVERT = 0x14,
|
||||||
|
};
|
||||||
|
|
||||||
/* SoftKeySetResMessage */
|
/* SoftKeySetResMessage */
|
||||||
#define SOFT_KEY_SET_RES_MESSAGE 0x0109
|
#define SOFT_KEY_SET_RES_MESSAGE 0x0109
|
||||||
struct soft_key_set_definition {
|
struct soft_key_set_definition {
|
||||||
uint8_t soft_key_template_index[16];
|
uint8_t soft_key_template_index[16]; /* See enum skinny_soft_key_event */
|
||||||
uint16_t soft_key_info_index[16];
|
uint16_t soft_key_info_index[16];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue