From 90063622cf15625887408140a07ff78bc0a3673f Mon Sep 17 00:00:00 2001 From: Mathieu Parent Date: Wed, 24 Feb 2010 12:01:39 +0000 Subject: [PATCH] Skinny: Milestone 8 (partial): TimeDate - answer TimeDateReqMessage with DefineTimeDate git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16774 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_skinny/mod_skinny.c | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/mod/endpoints/mod_skinny/mod_skinny.c b/src/mod/endpoints/mod_skinny/mod_skinny.c index 774467b8ad..87cd3eaaa7 100644 --- a/src/mod/endpoints/mod_skinny/mod_skinny.c +++ b/src/mod/endpoints/mod_skinny/mod_skinny.c @@ -224,6 +224,9 @@ struct station_capabilities { char reserved[10]; }; +/* TimeDateReqMessage */ +#define TIME_DATE_REQ_MESSAGE 0x000D + /* ButtonTemplateReqMessage */ #define BUTTON_TEMPLATE_REQ_MESSAGE 0x000E @@ -429,6 +432,20 @@ struct line_stat_res_message { char displayname[44]; }; +/* DefineTimeDate */ +#define DEFINE_TIME_DATE_MESSAGE 0x0094 +struct define_time_date_message { + uint32_t year; + uint32_t month; + uint32_t day_of_week; /* monday = 1 */ + uint32_t day; + uint32_t hour; + uint32_t minute; + uint32_t seconds; + uint32_t milliseconds; + uint32_t timestamp; +}; + /* ButtonTemplateMessage */ #define BUTTON_TEMPLATE_RES_MESSAGE 0x0097 struct button_definition { @@ -585,6 +602,7 @@ union skinny_data { struct call_info_message call_info; struct speed_dial_stat_res_message speed_dial_res; struct line_stat_res_message line_res; + struct define_time_date_message define_time_date; struct button_template_message button_template; struct register_rej_message reg_rej; struct open_receive_channel_message open_receive_channel; @@ -1926,6 +1944,30 @@ static switch_status_t skinny_handle_register_available_lines_message(listener_t return SWITCH_STATUS_SUCCESS; } +static switch_status_t skinny_handle_time_date_request(listener_t *listener, skinny_message_t *request) +{ + skinny_message_t *message; + switch_time_t ts; + switch_time_exp_t tm; + + message = switch_core_alloc(listener->pool, 12+sizeof(message->data.define_time_date)); + message->type = DEFINE_TIME_DATE_MESSAGE; + message->length = 4+sizeof(message->data.define_time_date); + ts = switch_micro_time_now(); + switch_time_exp_lt(&tm, ts); + message->data.define_time_date.year = tm.tm_year + 1900; + message->data.define_time_date.month = tm.tm_mon + 1; + message->data.define_time_date.day_of_week = tm.tm_wday; + message->data.define_time_date.day = tm.tm_yday + 1; + message->data.define_time_date.hour = tm.tm_hour; + message->data.define_time_date.minute = tm.tm_min; + message->data.define_time_date.seconds = tm.tm_sec + 1; + message->data.define_time_date.milliseconds = tm.tm_usec / 1000; + message->data.define_time_date.timestamp = ts / 1000000; + skinny_send_reply(listener, message); + return SWITCH_STATUS_SUCCESS; +} + static switch_status_t skinny_handle_keep_alive_message(listener_t *listener, skinny_message_t *request) { skinny_message_t *message; @@ -1980,6 +2022,8 @@ static switch_status_t skinny_handle_request(listener_t *listener, skinny_messag return skinny_handle_speed_dial_request(listener, request); case REGISTER_AVAILABLE_LINES_MESSAGE: return skinny_handle_register_available_lines_message(listener, request); + case TIME_DATE_REQ_MESSAGE: + return skinny_handle_time_date_request(listener, request); /* live phase */ case KEEP_ALIVE_MESSAGE: return skinny_handle_keep_alive_message(listener, request);