#define SKINNY_EVENT_UNREGISTER "skinny::unregister"
#define SKINNY_EVENT_EXPIRE "skinny::expire"
#define SKINNY_EVENT_ALARM "skinny::alarm"
+#define SKINNY_EVENT_XML_ALARM "skinny::xml_alarm"
#define SKINNY_EVENT_CALL_STATE "skinny::call_state"
#define SKINNY_EVENT_USER_TO_DEVICE "skinny::user_to_device"
#define SKINNY_EVENT_DEVICE_TO_USER "skinny::device_to_user"
return SWITCH_STATUS_SUCCESS;
}
+switch_status_t skinny_handle_xml_alarm(listener_t *listener, skinny_message_t *request)
+{
+ switch_event_t *event = NULL;
+ char *tmp = NULL;
+
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
+ "Received XML alarm.\n");
+ /* skinny::xml_alarm event */
+ skinny_device_event(listener, &event, SWITCH_EVENT_CUSTOM, SKINNY_EVENT_XML_ALARM);
+ /* Ensure that the body is null-terminated */
+ tmp = malloc(request->length - 4 + 1);
+ memcpy(tmp, request->data.as_char, request->length - 4);
+ tmp[request->length - 4] = '\0';
+ switch_event_add_body(event, "%s", tmp);
+ switch_safe_free(tmp);
+ switch_event_fire(&event);
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
switch_status_t skinny_handle_request(listener_t *listener, skinny_message_t *request)
{
if (listener->profile->debug >= 10 || request->type != KEEP_ALIVE_MESSAGE) {
return skinny_handle_extended_data_message(listener, request);
case DEVICE_TO_USER_DATA_RESPONSE_VERSION1_MESSAGE:
return skinny_handle_extended_data_message(listener, request);
+ case XML_ALARM_MESSAGE:
+ return skinny_handle_xml_alarm(listener, request);
default:
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
"Unhandled request %s (type=%x,length=%d).\n", skinny_message_type2str(request->type), request->type, request->length);