{ "\200\001", SOFTKEY_REDIAL },
{ "\200\002", SOFTKEY_NEWCALL },
{ "\200\003", SOFTKEY_HOLD },
- { "\200\004", SOFTKEY_TRNSFER },
+ { "\200\004", SOFTKEY_TRANSFER },
{ "\200\005", SOFTKEY_CFWDALL },
{ "\200\006", SOFTKEY_CFWDBUSY },
{ "\200\007", SOFTKEY_CFWDNOANSWER },
- { "\200\010", SOFTKEY_BKSPC },
+ { "\200\010", SOFTKEY_BACKSPACE },
{ "\200\011", SOFTKEY_ENDCALL },
{ "\200\012", SOFTKEY_RESUME },
{ "\200\013", SOFTKEY_ANSWER },
{ "\200\014", SOFTKEY_INFO },
- { "\200\015", SOFTKEY_CONFRN },
+ { "\200\015", SOFTKEY_CONFRM },
{ "\200\016", SOFTKEY_PARK },
{ "\200\017", SOFTKEY_JOIN },
- { "\200\020", SOFTKEY_MEETME },
- { "\200\021", SOFTKEY_PICKUP },
- { "\200\022", SOFTKEY_GPICKUP },
+ { "\200\020", SOFTKEY_MEETMECONFRM },
+ { "\200\021", SOFTKEY_CALLPICKUP },
+ { "\200\022", SOFTKEY_GRPCALLPICKUP },
{ "\200\077", SOFTKEY_DND },
{ "\200\120", SOFTKEY_IDIVERT },
};
message->data.soft_key_set.total_soft_key_set_count = 11;
/* 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_profile_t *profile;
switch_channel_t *channel = NULL;
uint32_t line;
+ private_t *tech_pvt = NULL;
+
switch_assert(listener->profile);
switch_assert(listener->device_name);
if(!listener->session[line]) { /*the line is not busy */
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:
skinny_create_session(listener, line, SKINNY_KEY_SET_OFF_HOOK);
break;
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);
}
} else { /* the line is busy */
break;
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);
}
}
skinny_check_data_length(request, sizeof(request->data.stimulus));
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:
skinny_create_session(listener, line, SKINNY_KEY_SET_DIGITS_AFTER_DIALING_FIRST_DIGIT);
/* SetLampMessage */
#define SET_LAMP_MESSAGE 0x0086
struct set_lamp_message {
- uint32_t stimulus;
+ uint32_t stimulus; /* See enum skinny_button_definition */
uint32_t stimulus_instance;
uint32_t mode; /* See enum skinny_lamp_mode */
};
};
enum skinny_button_definition {
+ SKINNY_BUTTON_LAST_NUMBER_REDIAL = 0x01,
SKINNY_BUTTON_SPEED_DIAL = 0x02,
SKINNY_BUTTON_LINE = 0x09,
SKINNY_BUTTON_VOICEMAIL = 0x0F,
struct soft_key_template_definition soft_key[32];
};
-#define SOFTKEY_NONE 0x00
-#define SOFTKEY_REDIAL 0x01
-#define SOFTKEY_NEWCALL 0x02
-#define SOFTKEY_HOLD 0x03
-#define SOFTKEY_TRNSFER 0x04
-#define SOFTKEY_CFWDALL 0x05
-#define SOFTKEY_CFWDBUSY 0x06
-#define SOFTKEY_CFWDNOANSWER 0x07
-#define SOFTKEY_BKSPC 0x08
-#define SOFTKEY_ENDCALL 0x09
-#define SOFTKEY_RESUME 0x0A
-#define SOFTKEY_ANSWER 0x0B
-#define SOFTKEY_INFO 0x0C
-#define SOFTKEY_CONFRN 0x0D
-#define SOFTKEY_PARK 0x0E
-#define SOFTKEY_JOIN 0x0F
-#define SOFTKEY_MEETME 0x10
-#define SOFTKEY_PICKUP 0x11
-#define SOFTKEY_GPICKUP 0x12
-#define SOFTKEY_DND 0x13
-#define SOFTKEY_IDIVERT 0x14
+enum skinny_soft_key_event {
+ SOFTKEY_REDIAL = 0x01,
+ SOFTKEY_NEWCALL = 0x02,
+ SOFTKEY_HOLD = 0x03,
+ SOFTKEY_TRANSFER = 0x04,
+ SOFTKEY_CFWDALL = 0x05,
+ SOFTKEY_CFWDBUSY = 0x06,
+ SOFTKEY_CFWDNOANSWER = 0x07,
+ SOFTKEY_BACKSPACE = 0x08,
+ SOFTKEY_ENDCALL = 0x09,
+ SOFTKEY_RESUME = 0x0A,
+ SOFTKEY_ANSWER = 0x0B,
+ SOFTKEY_INFO = 0x0C,
+ SOFTKEY_CONFRM = 0x0D,
+ SOFTKEY_PARK = 0x0E,
+ SOFTKEY_JOIN = 0x0F,
+ SOFTKEY_MEETMECONFRM = 0x10,
+ SOFTKEY_CALLPICKUP = 0x11,
+ SOFTKEY_GRPCALLPICKUP = 0x12,
+ SOFTKEY_DND = 0x13,
+ SOFTKEY_IDIVERT = 0x14,
+};
/* SoftKeySetResMessage */
#define SOFT_KEY_SET_RES_MESSAGE 0x0109
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];
};