]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Skinny: Milestone 8 (partial): TimeDate
authorMathieu Parent <math.parent@gmail.com>
Wed, 24 Feb 2010 12:01:39 +0000 (12:01 +0000)
committerMathieu Parent <math.parent@gmail.com>
Wed, 24 Feb 2010 12:01:39 +0000 (12:01 +0000)
- 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

index 774467b8adde233dbce73fbba294005d16b6b12c..87cd3eaaa7bc10bf752ce243be2997ef62c207bf 100644 (file)
@@ -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);