struct station_capabilities caps[SWITCH_MAX_CODECS];
};
+/* AlarmMessage */
+#define ALARM_MESSAGE 0x0020
+struct alarm_message {
+ uint32_t alarm_severity;
+ char display_message[80];
+ uint32_t alarm_param1;
+ uint32_t alarm_param2;
+};
+
/* UnregisterMessage */
#define UNREGISTER_MESSAGE 0x0027
struct register_ack_message reg_ack;
struct line_stat_req_message line_req;
struct capabilities_res_message cap_res;
+ struct alarm_message alarm;
struct line_stat_res_message line_res;
struct register_rej_message reg_rej;
do_sleep = 0;
ptr += mlen;
memcpy(request, mbuf, bytes);
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
"Got request: length=%d,reserved=%x,type=%x\n",
request->length,request->reserved,request->type);
if(request->length < SKINNY_MESSAGE_FIELD_SIZE) {
}
if(bytes >= request->length + 2*SKINNY_MESSAGE_FIELD_SIZE) {
/* Message body */
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
"Got complete request: length=%d,reserved=%x,type=%x,data=%d\n",
request->length,request->reserved,request->type,request->data.as_char);
*req = request;
}
/* Message handling */
+static switch_status_t skinny_handle_alarm(listener_t *listener, skinny_message_t *request)
+{
+ skinny_check_data_length(request, sizeof(request->data.alarm));
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
+ "Received alarm: Severity=%d, DisplayMessage=%s, Param1=%d, Param2=%d.\n",
+ request->data.alarm.alarm_severity, request->data.alarm.display_message,
+ request->data.alarm.alarm_param1, request->data.alarm.alarm_param2);
+ return SWITCH_STATUS_SUCCESS;
+}
+
static switch_status_t skinny_handle_register(listener_t *listener, skinny_message_t *request)
{
switch_status_t status = SWITCH_STATUS_FALSE;
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
"Received message (type=%x,length=%d).\n", request->type, request->length);
- if(zstr(listener->device_name) && request->type != REGISTER_MESSAGE) {
+ if(zstr(listener->device_name) && request->type != REGISTER_MESSAGE && request->type != ALARM_MESSAGE) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
"Device should send a register message first.\n");
return SWITCH_STATUS_FALSE;
}
switch(request->type) {
+ case ALARM_MESSAGE:
+ return skinny_handle_alarm(listener, request);
case REGISTER_MESSAGE:
return skinny_handle_register(listener, request);
case CAPABILITIES_RES_MESSAGE: