Author: anthm Date: Thu Dec 20 12:27:11 2007 New Revision: 6916 Modified: freeswitch/trunk/src/include/switch_channel.h freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c freeswitch/trunk/src/switch_channel.c freeswitch/trunk/src/switch_ivr.c Log: cdr update Modified: freeswitch/trunk/src/include/switch_channel.h ============================================================================== --- freeswitch/trunk/src/include/switch_channel.h (original) +++ freeswitch/trunk/src/include/switch_channel.h Thu Dec 20 12:27:11 2007 @@ -41,6 +41,7 @@ #include <switch.h> SWITCH_BEGIN_EXTERN_C struct switch_channel_timetable { + switch_time_t profile_created; switch_time_t created; switch_time_t answered; switch_time_t hungup; Modified: freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c ============================================================================== --- freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c (original) +++ freeswitch/trunk/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c Thu Dec 20 12:27:11 2007 @@ -164,10 +164,10 @@ switch_app_log_t *app_log, *ap; char *last_app = NULL, *last_arg = NULL; - char start[80] = "", answer[80] = "", end[80] = "", tmp[80] = ""; + char start[80] = "", answer[80] = "", end[80] = "", tmp[80] = "", profile_start[80] = ""; int32_t duration = 0, billsec = 0, mduration = 0, billmsec = 0; switch_time_t uduration = 0, billusec = 0; - time_t tt_created = 0, tt_answered = 0, tt_hungup = 0, mtt_created = 0, mtt_answered = 0, mtt_hungup = 0; + time_t tt_created = 0, tt_answered = 0, tt_hungup = 0, mtt_created = 0, mtt_answered = 0, mtt_hungup = 0, tt_prof_created, mtt_prof_created; if (switch_channel_get_originator_caller_profile(channel)) { return SWITCH_STATUS_SUCCESS; @@ -207,6 +207,10 @@ switch_strftime(start, &retsize, sizeof(start), fmt, &tm); switch_channel_set_variable(channel, "start_stamp", start); + switch_time_exp_lt(&tm, caller_profile->times->profile_created); + switch_strftime(profile_start, &retsize, sizeof(profile_start), fmt, &tm); + switch_channel_set_variable(channel, "profile_start_stamp", profile_start); + switch_time_exp_lt(&tm, caller_profile->times->answered); switch_strftime(answer, &retsize, sizeof(answer), fmt, &tm); switch_channel_set_variable(channel, "answer_stamp", answer); @@ -217,10 +221,17 @@ tt_created = (time_t) (caller_profile->times->created / 1000000); mtt_created = (time_t) (caller_profile->times->created / 1000); + tt_prof_created = (time_t) (caller_profile->times->profile_created / 1000000); + mtt_prof_created = (time_t) (caller_profile->times->profile_created / 1000); switch_snprintf(tmp, sizeof(tmp), "%" TIME_T_FMT, tt_created); switch_channel_set_variable(channel, "start_epoch", tmp); switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created); switch_channel_set_variable(channel, "start_uepoch", tmp); + + switch_snprintf(tmp, sizeof(tmp), "%" TIME_T_FMT, tt_prof_created); + switch_channel_set_variable(channel, "profile_start_epoch", tmp); + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created); + switch_channel_set_variable(channel, "profile_start_uepoch", tmp); tt_answered = (time_t) (caller_profile->times->answered / 1000000); mtt_answered = (time_t) (caller_profile->times->answered / 1000); Modified: freeswitch/trunk/src/switch_channel.c ============================================================================== --- freeswitch/trunk/src/switch_channel.c (original) +++ freeswitch/trunk/src/switch_channel.c Thu Dec 20 12:27:11 2007 @@ -957,11 +957,13 @@ } caller_profile->times = (switch_channel_timetable_t *) switch_core_session_alloc(channel->session, sizeof(*caller_profile->times)); - caller_profile->times->created = switch_time_now(); + caller_profile->times->profile_created = switch_time_now(); if (channel->caller_profile && channel->caller_profile->times) { - channel->caller_profile->times->transferred = caller_profile->times->created; + channel->caller_profile->times->transferred = caller_profile->times->profile_created; caller_profile->times->answered = channel->caller_profile->times->answered; + caller_profile->times->created = channel->caller_profile->times->created; + caller_profile->times->hungup = channel->caller_profile->times->hungup; } caller_profile->next = channel->caller_profile; Modified: freeswitch/trunk/src/switch_ivr.c ============================================================================== --- freeswitch/trunk/src/switch_ivr.c (original) +++ freeswitch/trunk/src/switch_ivr.c Thu Dec 20 12:27:11 2007 @@ -1460,6 +1460,12 @@ switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created); switch_xml_set_txt_d(time_tag, tmp); + if (!(time_tag = switch_xml_add_child_d(x_times, "profile_created_time", t_off++))) { + goto error; + } + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created); + switch_xml_set_txt_d(time_tag, tmp); + if (!(time_tag = switch_xml_add_child_d(x_times, "answered_time", t_off++))) { goto error; }