]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Skinny: noop ForwardStatReq and ForwardStat implementation
authorMathieu Parent <math.parent@gmail.com>
Sat, 26 Feb 2011 10:37:32 +0000 (11:37 +0100)
committerMathieu Parent <math.parent@gmail.com>
Sat, 26 Feb 2011 10:37:32 +0000 (11:37 +0100)
src/mod/endpoints/mod_skinny/skinny_protocol.h
src/mod/endpoints/mod_skinny/skinny_server.c
src/mod/endpoints/mod_skinny/skinny_tables.c
src/mod/endpoints/mod_skinny/skinny_tables.h

index 1a26558ffc02d2f2dc3d3e7a6215f49d4e9321b8..5741be0cb840c8e3e016af0a6f535547585ff5b5 100644 (file)
@@ -97,6 +97,12 @@ struct PACKED on_hook_message {
     uint32_t call_id;
 };
 
+/* ForwardStatReqMessage */
+#define FORWARD_STAT_REQ_MESSAGE 0x0009
+struct PACKED forward_stat_req_message {
+    uint32_t line_instance;
+};
+
 /* SpeedDialStatReqMessage */
 #define SPEED_DIAL_STAT_REQ_MESSAGE 0x000A
 struct PACKED speed_dial_stat_req_message {
@@ -328,6 +334,19 @@ struct PACKED call_info_message {
     uint32_t party_pi_restriction_bits;
 };
 
+/* ForwardStatMessage */
+#define FORWARD_STAT_MESSAGE 0x0090
+struct PACKED forward_stat_message {
+    uint32_t active_forward;
+    uint32_t line_instance;
+    uint32_t forward_all_active;
+    char forward_all_number[24];
+    uint32_t forward_busy_active;
+    char forward_busy_number[24];
+    uint32_t forward_noanswer_active;
+    char forward_noanswer_number[24];
+};
+
 /* SpeedDialStatMessage */
 #define SPEED_DIAL_STAT_RES_MESSAGE 0x0091
 struct PACKED speed_dial_stat_res_message {
@@ -566,76 +585,78 @@ struct PACKED service_url_stat_res_message {
 
 union skinny_data {
        /* no data for KEEP_ALIVE_MESSAGE */
-    struct register_message reg;
-    struct port_message port;
-    struct keypad_button_message keypad_button;
-    struct enbloc_call_message enbloc_call;
-    struct stimulus_message stimulus;
-    struct off_hook_message off_hook;
-    struct on_hook_message on_hook;
-    struct speed_dial_stat_req_message speed_dial_req;
-    struct line_stat_req_message line_req;
-    /* no data for CONFIG_STAT_REQ_MESSAGE */
-    /* no data for TIME_DATE_REQ_MESSAGE */
-    /* no data for BUTTON_TEMPLATE_REQ_MESSAGE */
-    /* no data for VERSION_REQ_MESSAGE */
-    struct capabilities_res_message cap_res;
-    struct alarm_message alarm;
-    struct open_receive_channel_ack_message open_receive_channel_ack;
-    /* no data for SOFT_KEY_SET_REQ_MESSAGE */
-    struct soft_key_event_message soft_key_event;
-    /* no data for UNREGISTER_MESSAGE */
-    /* no data for SOFT_KEY_TEMPLATE_REQ_MESSAGE */
-    struct headset_status_message headset_status;
-    struct register_available_lines_message reg_lines;
-    /* see field "data" for DEVICE_TO_USER_DATA_MESSAGE */
-    /* see field "data" for DEVICE_TO_USER_DATA_RESPONSE_MESSAGE */
-    struct service_url_stat_req_message service_url_req;
-    struct feature_stat_req_message feature_req;
-    /* see field "extended_data" for DEVICE_TO_USER_DATA_VERSION1_MESSAGE */
-    /* see field "extended_data" for DEVICE_TO_USER_DATA_RESPONSE_VERSION1_MESSAGE */
-    struct register_ack_message reg_ack;
-    struct start_tone_message start_tone;
-    struct stop_tone_message stop_tone;
-    struct set_ringer_message ringer;
-    struct set_lamp_message lamp;
-    struct set_speaker_mode_message speaker_mode;
-    struct start_media_transmission_message start_media;
-    struct stop_media_transmission_message stop_media;
-    struct call_info_message call_info;
-    struct speed_dial_stat_res_message speed_dial_res;
-    struct line_stat_res_message line_res;
-    struct config_stat_res_message config_res;
-    struct define_time_date_message define_time_date;
-    struct button_template_message button_template;
-    struct version_message version;
-    /* no data for CAPABILITIES_REQ_MESSAGE */
-    struct register_reject_message reg_rej;
-    struct reset_message reset;
-    /* no data for KEEP_ALIVE_ACK_MESSAGE */
-    struct open_receive_channel_message open_receive_channel;
-    struct close_receive_channel_message close_receive_channel;
-    struct soft_key_template_res_message soft_key_template;
-    struct soft_key_set_res_message soft_key_set;
-    struct select_soft_keys_message select_soft_keys;
-    struct call_state_message call_state;
-    struct display_prompt_status_message display_prompt_status;
-    struct clear_prompt_status_message clear_prompt_status;
-    struct activate_call_plane_message activate_call_plane;
-    struct unregister_ack_message unregister_ack;
-    struct back_space_req_message back_space_req;
-    struct dialed_number_message dialed_number;
-    /* see field "data" for USER_TO_DEVICE_DATA_MESSAGE */
-    struct feature_stat_res_message feature_res;
-    struct display_pri_notify_message display_pri_notify;
-    struct service_url_stat_res_message service_url_res;
-    /* see field "extended_data" for USER_TO_DEVICE_DATA_VERSION1_MESSAGE */
+       struct register_message reg;
+       struct port_message port;
+       struct keypad_button_message keypad_button;
+       struct enbloc_call_message enbloc_call;
+       struct stimulus_message stimulus;
+       struct off_hook_message off_hook;
+       struct on_hook_message on_hook;
+       struct forward_stat_req_message forward_stat_req;
+       struct speed_dial_stat_req_message speed_dial_req;
+       struct line_stat_req_message line_req;
+       /* no data for CONFIG_STAT_REQ_MESSAGE */
+       /* no data for TIME_DATE_REQ_MESSAGE */
+       /* no data for BUTTON_TEMPLATE_REQ_MESSAGE */
+       /* no data for VERSION_REQ_MESSAGE */
+       struct capabilities_res_message cap_res;
+       struct alarm_message alarm;
+       struct open_receive_channel_ack_message open_receive_channel_ack;
+       /* no data for SOFT_KEY_SET_REQ_MESSAGE */
+       struct soft_key_event_message soft_key_event;
+       /* no data for UNREGISTER_MESSAGE */
+       /* no data for SOFT_KEY_TEMPLATE_REQ_MESSAGE */
+       struct headset_status_message headset_status;
+       struct register_available_lines_message reg_lines;
+       /* see field "data" for DEVICE_TO_USER_DATA_MESSAGE */
+       /* see field "data" for DEVICE_TO_USER_DATA_RESPONSE_MESSAGE */
+       struct service_url_stat_req_message service_url_req;
+       struct feature_stat_req_message feature_req;
+       /* see field "extended_data" for DEVICE_TO_USER_DATA_VERSION1_MESSAGE */
+       /* see field "extended_data" for DEVICE_TO_USER_DATA_RESPONSE_VERSION1_MESSAGE */
+       struct register_ack_message reg_ack;
+       struct start_tone_message start_tone;
+       struct stop_tone_message stop_tone;
+       struct set_ringer_message ringer;
+       struct set_lamp_message lamp;
+       struct set_speaker_mode_message speaker_mode;
+       struct start_media_transmission_message start_media;
+       struct stop_media_transmission_message stop_media;
+       struct call_info_message call_info;
+       struct forward_stat_message forward_stat;
+       struct speed_dial_stat_res_message speed_dial_res;
+       struct line_stat_res_message line_res;
+       struct config_stat_res_message config_res;
+       struct define_time_date_message define_time_date;
+       struct button_template_message button_template;
+       struct version_message version;
+       /* no data for CAPABILITIES_REQ_MESSAGE */
+       struct register_reject_message reg_rej;
+       struct reset_message reset;
+       /* no data for KEEP_ALIVE_ACK_MESSAGE */
+       struct open_receive_channel_message open_receive_channel;
+       struct close_receive_channel_message close_receive_channel;
+       struct soft_key_template_res_message soft_key_template;
+       struct soft_key_set_res_message soft_key_set;
+       struct select_soft_keys_message select_soft_keys;
+       struct call_state_message call_state;
+       struct display_prompt_status_message display_prompt_status;
+       struct clear_prompt_status_message clear_prompt_status;
+       struct activate_call_plane_message activate_call_plane;
+       struct unregister_ack_message unregister_ack;
+       struct back_space_req_message back_space_req;
+       struct dialed_number_message dialed_number;
+       /* see field "data" for USER_TO_DEVICE_DATA_MESSAGE */
+       struct feature_stat_res_message feature_res;
+       struct display_pri_notify_message display_pri_notify;
+       struct service_url_stat_res_message service_url_res;
+       /* see field "extended_data" for USER_TO_DEVICE_DATA_VERSION1_MESSAGE */
 
        struct data_message data;
        struct extended_data_message extended_data;
 
-    uint16_t as_uint16;
-    char as_char[1];
+       uint16_t as_uint16;
+       char as_char[1];
 };
 
 /*
index 0aafb9859de7b8b5a6bfd99e8934b73089c6d393..dac75facd75184a2630f2f4a64b2096c803bde78 100644 (file)
@@ -1329,6 +1329,22 @@ switch_status_t skinny_handle_on_hook_message(listener_t *listener, skinny_messa
 
        return status;
 }
+switch_status_t skinny_handle_forward_stat_req_message(listener_t *listener, skinny_message_t *request)
+{
+       skinny_message_t *message;
+
+       skinny_check_data_length(request, sizeof(request->data.forward_stat_req));
+
+       message = switch_core_alloc(listener->pool, 12+sizeof(message->data.forward_stat));
+       message->type = FORWARD_STAT_MESSAGE;
+       message->length = 4 + sizeof(message->data.forward_stat);
+
+       message->data.forward_stat.line_instance = request->data.forward_stat_req.line_instance;
+
+       skinny_send_reply(listener, message);
+
+       return SWITCH_STATUS_SUCCESS;
+}
 
 switch_status_t skinny_handle_speed_dial_stat_request(listener_t *listener, skinny_message_t *request)
 {
@@ -2046,6 +2062,8 @@ switch_status_t skinny_handle_request(listener_t *listener, skinny_message_t *re
                        return skinny_handle_off_hook_message(listener, request);
                case ON_HOOK_MESSAGE:
                        return skinny_handle_on_hook_message(listener, request);
+               case FORWARD_STAT_REQ_MESSAGE:
+                       return skinny_handle_forward_stat_req_message(listener, request);
                case SPEED_DIAL_STAT_REQ_MESSAGE:
                        return skinny_handle_speed_dial_stat_request(listener, request);
                case LINE_STAT_REQ_MESSAGE:
index 4488b7571cb92e3fb60774a7574cac5443a4a11a..e8e56568b329025eaff2e97b207931f0fcf54f62 100644 (file)
 
 /* Translation tables */
 struct skinny_table SKINNY_MESSAGE_TYPES[] = {
-    {"KeepAliveMessage", KEEP_ALIVE_MESSAGE},
-    {"RegisterMessage", REGISTER_MESSAGE},
-    {"PortMessage", PORT_MESSAGE},
-    {"KeypadButtonMessage", KEYPAD_BUTTON_MESSAGE},
-    {"EnblocCallMessage", ENBLOC_CALL_MESSAGE},
-    {"StimulusMessage", STIMULUS_MESSAGE},
-    {"OffHookMessage", OFF_HOOK_MESSAGE},
-    {"OnHookMessage", ON_HOOK_MESSAGE},
-    {"SpeedDialStatReqMessage", SPEED_DIAL_STAT_REQ_MESSAGE},
-    {"LineStatReqMessage", LINE_STAT_REQ_MESSAGE},
-    {"ConfigStatReqMessage", CONFIG_STAT_REQ_MESSAGE},
-    {"TimeDateReqMessage", TIME_DATE_REQ_MESSAGE},
-    {"ButtonTemplateReqMessage", BUTTON_TEMPLATE_REQ_MESSAGE},
-    {"VersionReqMessage", VERSION_REQ_MESSAGE},
-    {"CapabilitiesReqMessage", CAPABILITIES_RES_MESSAGE},
-    {"AlarmMessage", ALARM_MESSAGE},
-    {"OpenReceiveChannelAckMessage", OPEN_RECEIVE_CHANNEL_ACK_MESSAGE},
-    {"SoftKeySetReqMessage", SOFT_KEY_SET_REQ_MESSAGE},
-    {"SoftKeyEventMessage", SOFT_KEY_EVENT_MESSAGE},
-    {"UnregisterMessage", UNREGISTER_MESSAGE},
-    {"SoftKeyTemplateReqMessage", SOFT_KEY_TEMPLATE_REQ_MESSAGE},
-    {"HeadsetStatusMessage", HEADSET_STATUS_MESSAGE},
-    {"RegisterAvailableLinesMessage", REGISTER_AVAILABLE_LINES_MESSAGE},
-    {"DeviceToUserDataMessage", DEVICE_TO_USER_DATA_MESSAGE},
-    {"DeviceToUserDataResponseMessage", DEVICE_TO_USER_DATA_RESPONSE_MESSAGE},
-    {"ServiceUrlStatReqMessage", SERVICE_URL_STAT_REQ_MESSAGE},
-    {"FeatureStatReqMessage", FEATURE_STAT_REQ_MESSAGE},
-    {"DeviceToUserDataVersion1Message", DEVICE_TO_USER_DATA_VERSION1_MESSAGE},
-    {"DeviceToUserDataResponseVersion1Message", DEVICE_TO_USER_DATA_RESPONSE_VERSION1_MESSAGE},
-    {"RegisterAckMessage", REGISTER_ACK_MESSAGE},
-    {"StartToneMessage", START_TONE_MESSAGE},
-    {"StopToneMessage", STOP_TONE_MESSAGE},
-    {"SetRingerMessage", SET_RINGER_MESSAGE},
-    {"SetLampMessage", SET_LAMP_MESSAGE},
-    {"SetSpeakerModeMessage", SET_SPEAKER_MODE_MESSAGE},
-    {"StartMediaTransmissionMessage", START_MEDIA_TRANSMISSION_MESSAGE},
-    {"StopMediaTransmissionMessage", STOP_MEDIA_TRANSMISSION_MESSAGE},
-    {"CallInfoMessage", CALL_INFO_MESSAGE},
-    {"SpeedDialStatResMessage", SPEED_DIAL_STAT_RES_MESSAGE},
-    {"LineStatResMessage", LINE_STAT_RES_MESSAGE},
-    {"ConfigStatResMessage", CONFIG_STAT_RES_MESSAGE},
-    {"DefineTimeDateMessage", DEFINE_TIME_DATE_MESSAGE},
-    {"ButtonTemplateResMessage", BUTTON_TEMPLATE_RES_MESSAGE},
-    {"VersionMessage", VERSION_MESSAGE},
-    {"CapabilitiesReqMessage", CAPABILITIES_REQ_MESSAGE},
-    {"RegisterRejectMessage", REGISTER_REJECT_MESSAGE},
-    {"ResetMessage", RESET_MESSAGE},
-    {"KeepAliveAckMessage", KEEP_ALIVE_ACK_MESSAGE},
-    {"OpenReceiveChannelMessage", OPEN_RECEIVE_CHANNEL_MESSAGE},
-    {"CloseReceiveChannelMessage", CLOSE_RECEIVE_CHANNEL_MESSAGE},
-    {"SoftKeyTemplateResMessage", SOFT_KEY_TEMPLATE_RES_MESSAGE},
-    {"SoftKeySetResMessage", SOFT_KEY_SET_RES_MESSAGE},
-    {"SelectSoftKeysMessage", SELECT_SOFT_KEYS_MESSAGE},
-    {"CallStateMessage", CALL_STATE_MESSAGE},
-    {"DisplayPromptStatusMessage", DISPLAY_PROMPT_STATUS_MESSAGE},
-    {"ClearPromptStatusMessage", CLEAR_PROMPT_STATUS_MESSAGE},
-    {"ActivateCallPlaneMessage", ACTIVATE_CALL_PLANE_MESSAGE},
-    {"UnregisterAckMessage", UNREGISTER_ACK_MESSAGE},
-    {"BackSpaceReqMessage", BACK_SPACE_REQ_MESSAGE},
-    {"DialedNumberMessage", DIALED_NUMBER_MESSAGE},
-    {"UserToDeviceDataMessage", USER_TO_DEVICE_DATA_MESSAGE},
-    {"FeatureResMessage", FEATURE_STAT_RES_MESSAGE},
-    {"DisplayPriNotifyMessage", DISPLAY_PRI_NOTIFY_MESSAGE},
-    {"ServiceUrlStatMessage", SERVICE_URL_STAT_RES_MESSAGE},
-    {"UserToDeviceDataVersion1Message", USER_TO_DEVICE_DATA_VERSION1_MESSAGE},
-    {"XMLAlarmMessage", XML_ALARM_MESSAGE},
-    {NULL, 0}
+       {"KeepAliveMessage", KEEP_ALIVE_MESSAGE},
+       {"RegisterMessage", REGISTER_MESSAGE},
+       {"PortMessage", PORT_MESSAGE},
+       {"KeypadButtonMessage", KEYPAD_BUTTON_MESSAGE},
+       {"EnblocCallMessage", ENBLOC_CALL_MESSAGE},
+       {"StimulusMessage", STIMULUS_MESSAGE},
+       {"OffHookMessage", OFF_HOOK_MESSAGE},
+       {"OnHookMessage", ON_HOOK_MESSAGE},
+       {"ForwardStatReqMessage",  FORWARD_STAT_REQ_MESSAGE},
+       {"SpeedDialStatReqMessage", SPEED_DIAL_STAT_REQ_MESSAGE},
+       {"LineStatReqMessage", LINE_STAT_REQ_MESSAGE},
+       {"ConfigStatReqMessage", CONFIG_STAT_REQ_MESSAGE},
+       {"TimeDateReqMessage", TIME_DATE_REQ_MESSAGE},
+       {"ButtonTemplateReqMessage", BUTTON_TEMPLATE_REQ_MESSAGE},
+       {"VersionReqMessage", VERSION_REQ_MESSAGE},
+       {"CapabilitiesReqMessage", CAPABILITIES_RES_MESSAGE},
+       {"AlarmMessage", ALARM_MESSAGE},
+       {"OpenReceiveChannelAckMessage", OPEN_RECEIVE_CHANNEL_ACK_MESSAGE},
+       {"SoftKeySetReqMessage", SOFT_KEY_SET_REQ_MESSAGE},
+       {"SoftKeyEventMessage", SOFT_KEY_EVENT_MESSAGE},
+       {"UnregisterMessage", UNREGISTER_MESSAGE},
+       {"SoftKeyTemplateReqMessage", SOFT_KEY_TEMPLATE_REQ_MESSAGE},
+       {"HeadsetStatusMessage", HEADSET_STATUS_MESSAGE},
+       {"RegisterAvailableLinesMessage", REGISTER_AVAILABLE_LINES_MESSAGE},
+       {"DeviceToUserDataMessage", DEVICE_TO_USER_DATA_MESSAGE},
+       {"DeviceToUserDataResponseMessage", DEVICE_TO_USER_DATA_RESPONSE_MESSAGE},
+       {"ServiceUrlStatReqMessage", SERVICE_URL_STAT_REQ_MESSAGE},
+       {"FeatureStatReqMessage", FEATURE_STAT_REQ_MESSAGE},
+       {"DeviceToUserDataVersion1Message", DEVICE_TO_USER_DATA_VERSION1_MESSAGE},
+       {"DeviceToUserDataResponseVersion1Message", DEVICE_TO_USER_DATA_RESPONSE_VERSION1_MESSAGE},
+       {"RegisterAckMessage", REGISTER_ACK_MESSAGE},
+       {"StartToneMessage", START_TONE_MESSAGE},
+       {"StopToneMessage", STOP_TONE_MESSAGE},
+       {"SetRingerMessage", SET_RINGER_MESSAGE},
+       {"SetLampMessage", SET_LAMP_MESSAGE},
+       {"SetSpeakerModeMessage", SET_SPEAKER_MODE_MESSAGE},
+       {"StartMediaTransmissionMessage", START_MEDIA_TRANSMISSION_MESSAGE},
+       {"StopMediaTransmissionMessage", STOP_MEDIA_TRANSMISSION_MESSAGE},
+       {"CallInfoMessage", CALL_INFO_MESSAGE},
+       {"ForwardStatMessage", FORWARD_STAT_MESSAGE},
+       {"SpeedDialStatResMessage", SPEED_DIAL_STAT_RES_MESSAGE},
+       {"LineStatResMessage", LINE_STAT_RES_MESSAGE},
+       {"ConfigStatResMessage", CONFIG_STAT_RES_MESSAGE},
+       {"DefineTimeDateMessage", DEFINE_TIME_DATE_MESSAGE},
+       {"ButtonTemplateResMessage", BUTTON_TEMPLATE_RES_MESSAGE},
+       {"VersionMessage", VERSION_MESSAGE},
+       {"CapabilitiesReqMessage", CAPABILITIES_REQ_MESSAGE},
+       {"RegisterRejectMessage", REGISTER_REJECT_MESSAGE},
+       {"ResetMessage", RESET_MESSAGE},
+       {"KeepAliveAckMessage", KEEP_ALIVE_ACK_MESSAGE},
+       {"OpenReceiveChannelMessage", OPEN_RECEIVE_CHANNEL_MESSAGE},
+       {"CloseReceiveChannelMessage", CLOSE_RECEIVE_CHANNEL_MESSAGE},
+       {"SoftKeyTemplateResMessage", SOFT_KEY_TEMPLATE_RES_MESSAGE},
+       {"SoftKeySetResMessage", SOFT_KEY_SET_RES_MESSAGE},
+       {"SelectSoftKeysMessage", SELECT_SOFT_KEYS_MESSAGE},
+       {"CallStateMessage", CALL_STATE_MESSAGE},
+       {"DisplayPromptStatusMessage", DISPLAY_PROMPT_STATUS_MESSAGE},
+       {"ClearPromptStatusMessage", CLEAR_PROMPT_STATUS_MESSAGE},
+       {"ActivateCallPlaneMessage", ACTIVATE_CALL_PLANE_MESSAGE},
+       {"UnregisterAckMessage", UNREGISTER_ACK_MESSAGE},
+       {"BackSpaceReqMessage", BACK_SPACE_REQ_MESSAGE},
+       {"DialedNumberMessage", DIALED_NUMBER_MESSAGE},
+       {"UserToDeviceDataMessage", USER_TO_DEVICE_DATA_MESSAGE},
+       {"FeatureResMessage", FEATURE_STAT_RES_MESSAGE},
+       {"DisplayPriNotifyMessage", DISPLAY_PRI_NOTIFY_MESSAGE},
+       {"ServiceUrlStatMessage", SERVICE_URL_STAT_RES_MESSAGE},
+       {"UserToDeviceDataVersion1Message", USER_TO_DEVICE_DATA_VERSION1_MESSAGE},
+       {"XMLAlarmMessage", XML_ALARM_MESSAGE},
+       {NULL, 0}
 };
 SKINNY_DECLARE_ID2STR(skinny_message_type2str, SKINNY_MESSAGE_TYPES, "UnknownMessage")
 SKINNY_DECLARE_STR2ID(skinny_str2message_type, SKINNY_MESSAGE_TYPES, -1)
index e1144a92036178557ad19dc7d3f5b44caa5862b1..00ddf0c74d3bb75cb200fadaf5d6cbb010228370 100644 (file)
@@ -87,7 +87,7 @@ uint32_t func(const char *str)\
     }
 
 
-extern struct skinny_table SKINNY_MESSAGE_TYPES[67];
+extern struct skinny_table SKINNY_MESSAGE_TYPES[69];
 const char *skinny_message_type2str(uint32_t id);
 uint32_t skinny_str2message_type(const char *str);
 #define SKINNY_PUSH_MESSAGE_TYPES SKINNY_DECLARE_PUSH_MATCH(SKINNY_MESSAGE_TYPES)