[Freeswitch-svn] [commit] r11273 - in freeswitch/trunk: conf/autoload_configs src/mod/endpoints/mod_unicall

FreeSWITCH SVN coppice at freeswitch.org
Sun Jan 18 02:26:01 PST 2009


Author: coppice
Date: Sun Jan 18 04:26:01 2009
New Revision: 11273

Log:
Added a default config file for the Unicall endpoint module, and progressed the
module a little. Still far from complete.


Added:
   freeswitch/trunk/conf/autoload_configs/unicall.conf.xml
Modified:
   freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c

Added: freeswitch/trunk/conf/autoload_configs/unicall.conf.xml
==============================================================================
--- (empty file)
+++ freeswitch/trunk/conf/autoload_configs/unicall.conf.xml	Sun Jan 18 04:26:01 2009
@@ -0,0 +1,25 @@
+<configuration name="unicall.conf" description="Unicall Configuration">
+  <settings>
+    <param name="context" value="default"/>
+    <param name="dialplan" value="XML"/>
+    <param name="suppress-dtmf-tone" value="true"/>
+  </settings>
+  <spans>
+    <span id="1">
+      <param name="protocol-class" value="mfcr2"/>
+      <param name="protocol-variant" value="ar"/>
+      <param name="protocol-end" value="peer"/>
+      <param name="outgoing-allowed" value="true"/>
+      <param name="dialplan" value="XML"/>
+      <param name="context" value="default"/>
+    </span>
+    <span id="2">
+      <param name="protocol-class" value="mfcr2"/>
+      <param name="protocol-variant" value="ar"/>
+      <param name="protocol-end" value="peer"/>
+      <param name="outgoing-allowed" value="true"/>
+      <param name="dialplan" value="XML"/>
+      <param name="context" value="default"/>
+    </span>
+  </spans>
+</configuration>

Modified: freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_unicall/mod_unicall.c	Sun Jan 18 04:26:01 2009
@@ -56,6 +56,7 @@
     int protocol_end;
     int outgoing_ok;
 	char *dialplan;
+	char *context;
     int fd;
     uc_t *uc;
 } span_data_t;
@@ -144,6 +145,53 @@
 static switch_status_t unicall_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg);
 static switch_status_t unicall_receive_event(switch_core_session_t *session, switch_event_t *event);
 
+static void unicall_message(int level, const char *s)
+{
+    int switch_level;
+    
+    switch (level)
+    {
+    case UC_LOG_NONE:
+        switch_level = SWITCH_LOG_CRIT;
+        break;
+    case UC_LOG_ERROR:
+        switch_level = SWITCH_LOG_ERROR;
+        break;
+    case UC_LOG_WARNING:
+        switch_level = SWITCH_LOG_WARNING;
+        break;
+    case UC_LOG_PROTOCOL_ERROR:
+        switch_level = SWITCH_LOG_ERROR;
+        break;
+    case UC_LOG_PROTOCOL_WARNING:
+        switch_level = SWITCH_LOG_WARNING;
+        break;
+    case UC_LOG_INFO:
+        switch_level = SWITCH_LOG_NOTICE;
+        //switch_level = SWITCH_LOG_NOTICE;
+        break;
+    case UC_LOG_FLOW:
+    case UC_LOG_FLOW_2:
+    case UC_LOG_FLOW_3:
+    case UC_LOG_CAS:
+    case UC_LOG_TONE:
+    case UC_LOG_DEBUG_1:
+    case UC_LOG_DEBUG_2:
+    case UC_LOG_DEBUG_3:
+        switch_level = SWITCH_LOG_DEBUG;
+        break;
+    default:
+        switch_level = SWITCH_LOG_CRIT;
+        break;
+    }
+    switch_log_printf(SWITCH_CHANNEL_LOG, switch_level, s);
+}
+
+static void unicall_report(const char *s)
+{
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, s);
+}
+
 #if 0
 static switch_call_cause_t unicall_incoming_channel(zap_sigmsg_t *sigmsg, switch_core_session_t **sp)
 {
@@ -156,7 +204,7 @@
     
     if (!(session = switch_core_session_request(openzap_endpoint_interface, NULL)))
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Initilization Error!\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Initialization Error!\n");
         return ZAP_FAIL;
     }
     
@@ -167,28 +215,22 @@
     channel = switch_core_session_get_channel(session);
     if (tech_init(tech_pvt, session, sigmsg->channel) != SWITCH_STATUS_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Initilization Error!\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Initialization Error!\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
     
     *sigmsg->channel->caller_data.collected = '\0';
     
-    if (switch_strlen_zero(sigmsg->channel->caller_data.cid_name))
-    {
+    if (sigmsg->channel->caller_data.cid_name[0] == '\0')
         switch_set_string(sigmsg->channel->caller_data.cid_name, sigmsg->channel->chan_name);
-    }
 
-    if (switch_strlen_zero(sigmsg->channel->caller_data.cid_num.digits))
+    if (sigmsg->channel->caller_data.cid_num.digits[0] == '\0')
     {
-        if (!switch_strlen_zero(sigmsg->channel->caller_data.ani.digits))
-        {
+        if (sigmsg->channel->caller_data.ani.digits[0] != '\0')
             switch_set_string(sigmsg->channel->caller_data.cid_num.digits, sigmsg->channel->caller_data.ani.digits);
-        }
         else
-        {
             switch_set_string(sigmsg->channel->caller_data.cid_num.digits, sigmsg->channel->chan_number);
-        }
     }
 
     tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
@@ -203,18 +245,13 @@
                                                          (char *) modname,
                                                          SPAN_CONFIG[sigmsg->channel->span_id].context,
                                                          sigmsg->channel->caller_data.dnis.digits);
-
     assert(tech_pvt->caller_profile != NULL);
 
-    if (sigmsg->channel->caller_data.screen == 1 || sigmsg->channel->caller_data.screen == 3)
-    {
+    if (sigmsg->channel->caller_data.screen == 1  ||  sigmsg->channel->caller_data.screen == 3)
         switch_set_flag(tech_pvt->caller_profile, SWITCH_CPF_SCREEN);
-    }
 
     if (sigmsg->channel->caller_data.pres)
-    {
         switch_set_flag(tech_pvt->caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
-    }
     
     snprintf(name, sizeof(name), "UNICALL/%u:%u/%s", sigmsg->channel->span_id, sigmsg->channel->chan_id, tech_pvt->caller_profile->destination_number);
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connect inbound channel %s\n", name);
@@ -224,14 +261,14 @@
     switch_channel_set_state(channel, CS_INIT);
     if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error spawning thread\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Error spawning thread\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
 
     if (zap_channel_add_token(sigmsg->channel, switch_core_session_get_uuid(session), 0) != ZAP_SUCCESS)
     {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error adding token\n");
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Error adding token\n");
         switch_core_session_destroy(&session);
         return ZAP_FAIL;
     }
@@ -251,7 +288,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_devicefail\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_devicefail\n");
 }
 
 static void on_protocolfail(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -264,7 +301,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_protocolfail\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_protocolfail\n");
 }
 
 static void on_sigchanstatus(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -277,7 +314,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_sigchanstatus\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_sigchanstatus\n");
 }
 
 static void on_detected(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -292,7 +329,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_detected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_detected\n");
     switch_mutex_lock(globals.channel_mutex);
 
     //chanmap = spri->private_info;
@@ -348,7 +385,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_offered\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_offered\n");
 }
 
 static void on_requestmoreinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -361,7 +398,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_requestmoreinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_requestmoreinfo\n");
 }
 
 static void on_accepted(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -374,7 +411,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_accepted\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_accepted\n");
 }
 
 static void on_callinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -387,7 +424,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_callinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_callinfo\n");
 }
 
 static void on_facility(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -400,7 +437,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_facility\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_facility\n");
 }
 
 static void on_dialednumber(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -413,20 +450,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialednumber\n");
-}
-
-static void on_dialtone(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
-{
-    switch_channel_t *channel;
-    private_t *tech_pvt;
-
-    tech_pvt = switch_core_session_get_private(session);
-    assert(tech_pvt != NULL);
-    channel = switch_core_session_get_channel(session);
-    assert(channel != NULL);
-
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialtone\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dialednumber\n");
 }
 
 static void on_dialing(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -439,7 +463,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dialing\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dialing\n");
 }
 
 static void on_sendmoreinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -452,7 +476,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_sendmoreinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_sendmoreinfo\n");
 }
 
 static void on_proceeding(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -466,7 +490,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_proceeding\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_proceeding\n");
 
 #if 0
     chanmap = spri->private_info;
@@ -511,7 +535,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_alerting\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_alerting\n");
 
 #if 0
     chanmap = spri->private_info;
@@ -544,7 +568,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_connected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_connected\n");
 }
 
 static void on_answered(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -557,7 +581,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_answered\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_answered\n");
 }
 
 static void on_fardisconnected(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -570,7 +594,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_fardisconnected\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_fardisconnected\n");
 }
 
 static void on_dropcall(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -583,7 +607,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_dropcall\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_dropcall\n");
 }
 
 static void on_releasecall(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -596,7 +620,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_releasecall\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_releasecall\n");
 }
 
 static void on_farblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -609,7 +633,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_farblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_farblocked\n");
 }
 
 static void on_farunblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -622,7 +646,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_farunblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_farunblocked\n");
 }
 
 static void on_localblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -635,7 +659,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_localblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_localblocked\n");
 }
 
 static void on_localunblocked(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -648,7 +672,7 @@
     //channel = switch_core_session_get_channel(session);
     //assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_localunblocked\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_localunblocked\n");
 }
 
 static void on_alarm(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -661,7 +685,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_alarm\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_alarm\n");
 }
 
 static void on_resetlinedev(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -674,7 +698,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_resetlinedev\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_resetlinedev\n");
 }
 
 static void on_l2frame(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -687,7 +711,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2frame\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2frame\n");
 }
 
 static void on_l2bufferfull(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -700,7 +724,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2bufferfull\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2bufferfull\n");
 }
 
 static void on_l2nobuffer(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -713,7 +737,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_l2nobuffer\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_l2nobuffer\n");
 }
 
 static void on_usrinfo(uc_t *uc, switch_core_session_t *session, uc_event_t *e)
@@ -726,7 +750,7 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "on_usrinfo\n");
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "on_usrinfo\n");
 }
 
 static void handle_uc_event(uc_t *uc, void *user_data, uc_event_t *e)
@@ -736,7 +760,7 @@
     session = (switch_core_session_t *) user_data;
     assert(session != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "event %d\n", e->e);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "event %s\n", uc_event_to_str(e->e));
     switch (e->e)
     {
     case UC_EVENT_DEVICEFAIL:
@@ -769,9 +793,6 @@
     case UC_EVENT_DIALEDNUMBER:
         on_dialednumber(uc, session, e);
         break;
-    case UC_EVENT_DIALTONE:
-        on_dialtone(uc, session, e);
-        break;
     case UC_EVENT_DIALING:
         on_dialing(uc, session, e);
         break;
@@ -830,7 +851,7 @@
         on_usrinfo(uc, session, e);
         break;
     default:
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unknown unicall event %d\n", e->e);
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unknown unicall event %d\n", e->e);
         break;
     }
 }
@@ -846,8 +867,8 @@
 }
 
 /* 
-   State methods they get called when the state changes to the specific state 
-   returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next
+   State methods. They get called when the state changes to the specified state.
+   Returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next,
    so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it.
 */
 static switch_status_t unicall_on_init(switch_core_session_t *session)
@@ -860,14 +881,14 @@
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_init(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_init(%p)\n", (void *) session);
 
     switch_set_flag_locked(tech_pvt, TFLAG_IO);
 
     /* Move channel's state machine to ROUTING. This means the call is trying
-       to get from the initial start where the call because, to the point
-       where a destination has been identified. If the channel is simply
-       left in the initial state, nothing will happen. */
+       to get from the initial state to the point where a destination has been
+       identified. If the channel is simply left in the initial state, nothing
+       will happen. */
     switch_channel_set_state(channel, CS_ROUTING);
     switch_mutex_lock(globals.mutex);
     globals.calls++;
@@ -886,9 +907,9 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_routing(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_routing(%p)\n", (void *) session);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel routing\n", switch_channel_get_name(channel));
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -903,9 +924,9 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_execute(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_execute(%p)\n", (void *) session);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL EXECUTE\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel execute\n", switch_channel_get_name(channel));
 
 
     return SWITCH_STATUS_SUCCESS;
@@ -921,7 +942,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_hangup(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_hangup(%p)\n", (void *) session);
 
     switch_clear_flag_locked(tech_pvt, TFLAG_IO);
     switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
@@ -932,10 +953,16 @@
     if (tech_pvt->write_codec.implementation)
         switch_core_codec_destroy(&tech_pvt->write_codec);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL HANGUP\n", switch_channel_get_name(channel));
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s channel hangup\n", switch_channel_get_name(channel));
 
-    //if ((ret = uc_call_control(uc, UC_OP_DROPCALL, crn, (void *) switch_channel_get_cause(channel))))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_DROPCALL, crn, (void *) (intptr_t) switch_channel_get_cause(channel))) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Drop call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     switch_mutex_lock(globals.mutex);
     if (--globals.calls < 0)
@@ -955,23 +982,23 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d)\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d)\n", (void *) session, sig);
 
     switch (sig)
     {
     case SWITCH_SIG_KILL:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) SIG_KILL\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) SIG_KILL\n", (void *) session, sig);
         switch_clear_flag_locked(tech_pvt, TFLAG_IO);
         switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
         switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
         //switch_thread_cond_signal(tech_pvt->cond);
         break;
     case SWITCH_SIG_BREAK:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) SIG_BREAK\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) SIG_BREAK\n", (void *) session, sig);
         switch_set_flag_locked(tech_pvt, TFLAG_BREAK);
         break;
     default:
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_kill_channel(%p, %d) DEFAULT\n", (void *) session, sig);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_kill_channel(%p, %d) DEFAULT\n", (void *) session, sig);
         break;
     }
 
@@ -980,7 +1007,7 @@
 
 static switch_status_t unicall_on_exchange_media(switch_core_session_t *session)
 {
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_exchange_media(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_exchange_media(%p)\n", (void *) session);
 
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n");
     return SWITCH_STATUS_SUCCESS;
@@ -988,7 +1015,7 @@
 
 static switch_status_t unicall_on_soft_execute(switch_core_session_t *session)
 {
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_on_soft_execute(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_on_soft_execute(%p)\n", (void *) session);
 
     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n");
     return SWITCH_STATUS_SUCCESS;
@@ -999,7 +1026,7 @@
     private_t *tech_pvt = switch_core_session_get_private(session);
     switch_assert(tech_pvt != NULL);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_send_dtmf(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_send_dtmf(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1017,7 +1044,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_read_frame(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_read_frame(%p)\n", (void *) session);
 
     tech_pvt->read_frame.flags = SFF_NONE;
     *frame = NULL;
@@ -1069,7 +1096,7 @@
     tech_pvt = switch_core_session_get_private(session);
     assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_write_frame(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_write_frame(%p)\n", (void *) session);
 
     if (!switch_test_flag(tech_pvt, TFLAG_IO))
         return SWITCH_STATUS_FALSE;
@@ -1094,7 +1121,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "redirect_audio(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "redirect_audio(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1112,7 +1139,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "transmit_text(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "transmit_text(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1130,10 +1157,16 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "answer(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "answer(%p)\n", (void *) session);
 
-    //if ((ret = uc_call_control(uc, UC_OP_ANSWERCALL, crn, NULL)))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_ANSWERCALL, crn, NULL)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Answer call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1151,10 +1184,16 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "progress(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "progress(%p)\n", (void *) session);
 
-    //if ((ret = uc_call_control(uc, UC_OP_ACCEPTCALL, crn, NULL)))
-    //    ???;
+#if 0
+    if ((ret = uc_call_control(uc, UC_OP_ACCEPTCALL, crn, NULL)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Accept call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
+#endif
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1172,7 +1211,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "bridge(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "bridge(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1190,7 +1229,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unbridge(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unbridge(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1208,7 +1247,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "transfer(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "transfer(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1226,7 +1265,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ringing(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "ringing(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1244,7 +1283,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "media(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "media(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1262,7 +1301,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "nomedia(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "nomedia(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1280,7 +1319,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "hold(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hold(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1298,7 +1337,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unhold(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unhold(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1316,7 +1355,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "redirect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "redirect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1334,7 +1373,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "respond(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "respond(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1352,7 +1391,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "broadcast(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "broadcast(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1370,7 +1409,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "media_redirect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "media_redirect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1388,7 +1427,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "deflect(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "deflect(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1406,7 +1445,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "video_refresh_req(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "video_refresh_req(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1424,7 +1463,7 @@
     uc = tech_pvt->uc;
     assert(uc != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "display(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "display(%p)\n", (void *) session);
 
     return SWITCH_STATUS_SUCCESS;
 }
@@ -1472,7 +1511,7 @@
     case SWITCH_MESSAGE_INDICATE_DISPLAY:
         return display(session, msg);
     default:
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_receive_message(%p) %d\n", (void *) session, msg->message_id);
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_receive_message(%p) %d\n", (void *) session, msg->message_id);
         break;
     }
 
@@ -1499,7 +1538,7 @@
     int hide;
     char name[128];
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_outgoing_channel(%p)\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_outgoing_channel(%p)\n", (void *) session);
 
     if ((*new_session = switch_core_session_request(unicall_endpoint_interface, pool)) == NULL)
     {
@@ -1540,62 +1579,66 @@
     //uc_callparm_userinfo_layer1_protocol(callparms, prot);
     //uc_callparm_user_rate(callparms, rate);
 
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "destination '%s'\n", outbound_profile->destination_number);
-    uc_callparm_destination_number(callparms, outbound_profile->destination_number);
-    uc_callparm_destination_ton(callparms, outbound_profile->destination_number_ton);
-    uc_callparm_destination_npi(callparms, outbound_profile->destination_number_numplan);
-    //uc_callparm_destination_sub_addr_number(callparms, num);
-    //uc_callparm_destination_sub_addr_ton(callparms, ton);
-    //uc_callparm_destination_sub_addr_npi(callparms, npi);
-
-    //uc_callparm_redirecting_cause(callparms, cause);
-    //uc_callparm_redirecting_presentation(callparms, pres);
-    uc_callparm_redirecting_number(callparms, outbound_profile->rdnis);
-    uc_callparm_redirecting_ton(callparms, outbound_profile->rdnis_ton);
-    uc_callparm_redirecting_npi(callparms, outbound_profile->rdnis_numplan);
-    //uc_callparm_redirecting_subaddr(callparms, num);
-    //uc_callparm_redirecting_subaddr_ton(callparms, ton);
-    //uc_callparm_redirecting_subaddr_npi(callparms, npi);
-
-    //uc_callparm_original_called_number(callparms, num);
-    //uc_callparm_original_called_number_ton(callparms, ton);
-    //uc_callparm_original_called_number_npi(callparms, npi);
-
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "caller id name '%s'\n", outbound_profile->caller_id_name);
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "caller id number '%s'\n", outbound_profile->caller_id_number);
-    uc_callparm_originating_name(callparms, outbound_profile->caller_id_name);
-    uc_callparm_originating_number(callparms, outbound_profile->caller_id_number);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "destination '%s'\n", outbound_profile->destination_number);
+    uc_callparm_set_destination_number(callparms, outbound_profile->destination_number);
+    uc_callparm_set_destination_ton(callparms, outbound_profile->destination_number_ton);
+    uc_callparm_set_destination_npi(callparms, outbound_profile->destination_number_numplan);
+    //uc_callparm_set_destination_sub_addr_number(callparms, num);
+    //uc_callparm_set_destination_sub_addr_ton(callparms, ton);
+    //uc_callparm_set_destination_sub_addr_npi(callparms, npi);
+
+    //uc_callparm_set_redirecting_cause(callparms, cause);
+    //uc_callparm_set_redirecting_presentation(callparms, pres);
+    uc_callparm_set_redirecting_number(callparms, outbound_profile->rdnis);
+    uc_callparm_set_redirecting_ton(callparms, outbound_profile->rdnis_ton);
+    uc_callparm_set_redirecting_npi(callparms, outbound_profile->rdnis_numplan);
+    //uc_callparm_set_redirecting_subaddr(callparms, num);
+    //uc_callparm_set_redirecting_subaddr_ton(callparms, ton);
+    //uc_callparm_set_redirecting_subaddr_npi(callparms, npi);
+
+    //uc_callparm_set_original_called_number(callparms, num);
+    //uc_callparm_set_original_called_number_ton(callparms, ton);
+    //uc_callparm_set_original_called_number_npi(callparms, npi);
+
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "caller id name '%s'\n", outbound_profile->caller_id_name);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "caller id number '%s'\n", outbound_profile->caller_id_number);
+    uc_callparm_set_originating_name(callparms, outbound_profile->caller_id_name);
+    uc_callparm_set_originating_number(callparms, outbound_profile->caller_id_number);
     screen = switch_test_flag(outbound_profile, SWITCH_CPF_SCREEN);
     hide = switch_test_flag(outbound_profile, SWITCH_CPF_HIDE_NUMBER);
     if (!screen  &&  !hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED);
     else if (!screen  &&  hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_NOT_SCREENED);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_NOT_SCREENED);
     else if (screen  &&  !hide)
-        uc_callparm_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN);
     else
-        uc_callparm_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_PASSED_SCREEN);
-    uc_callparm_originating_ton(callparms, outbound_profile->caller_ton);
-    uc_callparm_originating_npi(callparms, outbound_profile->caller_numplan);
-    //uc_callparm_originating_sub_addr_ton(callparms, ton);
-    //uc_callparm_originating_sub_addr_npi(callparms, npi);
-    //uc_callparm_originating_sub_addr_number(callparms, num);
+        uc_callparm_set_originating_presentation(callparms, UC_PRES_PROHIB_USER_NUMBER_PASSED_SCREEN);
+    uc_callparm_set_originating_ton(callparms, outbound_profile->caller_ton);
+    uc_callparm_set_originating_npi(callparms, outbound_profile->caller_numplan);
+    //uc_callparm_set_originating_sub_addr_number(callparms, num);
+    //uc_callparm_set_originating_sub_addr_ton(callparms, ton);
+    //uc_callparm_set_originating_sub_addr_npi(callparms, npi);
 
-    uc_callparm_calling_party_category(callparms, UC_CALLER_CATEGORY_NATIONAL_SUBSCRIBER_CALL);
+    uc_callparm_set_calling_party_category(callparms, UC_CALLER_CATEGORY_NATIONAL_SUBSCRIBER_CALL);
     
     makecall.callparms = callparms;
-    makecall.crn = 0;
+    makecall.call = NULL;
 
 #if 0
-    if ((ret = uc_call_control(uc, UC_OP_MAKECALL, 0, (void *) &makecall)))
-        ????;
+    if ((ret = uc_call_control(uc, UC_OP_MAKECALL, 0, (void *) &makecall)) < 0)
+    {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Make call failed - %s\n", uc_ret_to_str(ret));
+        return SWITCH_STATUS_FAILED;
+    }
+    /*endif*/
 #endif
     free(callparms);
 
     switch_channel_set_flag(channel, CF_OUTBOUND);
     switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
     switch_channel_set_state(channel, CS_INIT);
-switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_outgoing_channel(%p) SUCCESS\n", (void *) session);
+switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_outgoing_channel(%p) SUCCESS\n", (void *) session);
     return SWITCH_CAUSE_SUCCESS;
 }
 
@@ -1606,7 +1649,7 @@
 
     switch_assert(tech_pvt != NULL);
 
-    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "unicall_receive_event(%p)\n", (void *) session);
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "unicall_receive_event(%p)\n", (void *) session);
 
     if (body == NULL)
         body = "";
@@ -1620,8 +1663,6 @@
     fd_set write;
     fd_set oob;
 	int fd;
-	int i;
-    int sel_on;
     int ret;
     switch_event_t *s_event;
     uc_t *uc = (uc_t *) obj;
@@ -1636,51 +1677,25 @@
         switch_event_fire(&s_event);
     }
 
-    for (i = 0;  i < MAX_SPANS;  i++)
-    {
-        if (span_data[i])
-        {
-            if ((ret = uc_call_control(span_data[i]->uc, UC_OP_UNBLOCK, 0, (void *) (intptr_t) -1)) < 0)
-                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Unblock failed - %s\n", uc_ret_to_str(ret));
-            /*endif*/
-        }
-    }
+    uc_get_device_handle(uc, 0, &fd);
+    if ((ret = uc_call_control(uc, UC_OP_UNBLOCK, 0, (void *) (intptr_t) -1)) < 0)
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Unblock failed - %s\n", uc_ret_to_str(ret));
+    /*endif*/
     FD_ZERO(&read);
     FD_ZERO(&write);
     FD_ZERO(&oob);
 	for (;;)
     {
-		i = 0;
-        sel_on = -1;
-		for (i = 0;  i < MAX_SPANS;  i++)
-        {
-            if (span_data[i])
-            {
-    			fd = span_data[i]->fd;
-    			FD_SET(fd, &read);
-    			//FD_SET(fd, &write);
-    			//FD_SET(fd, &oob);
-    			if (fd > sel_on)
-	    			sel_on = fd;
-            }
-		}
+		FD_SET(fd, &read);
+		//FD_SET(fd, &write);
+		//FD_SET(fd, &oob);
 
-		if (sel_on > -1)
+		if (select(fd + 1, &read, NULL, NULL, NULL))
         {
-			if (select(++sel_on, &read, NULL, NULL, NULL))
+		    if (FD_ISSET(fd, &read))
             {
-				for (i = 0;  i < MAX_SPANS;  i++)
-                {
-                    if (span_data[i])
-                    {
-				    	fd = span_data[i]->fd;
-					    if (FD_ISSET(fd, &read))
-                        {
-                            uc_check_event(span_data[i]->uc);
-                            uc_schedule_run(span_data[i]->uc);
-                        }
-                    }
-				}
+               uc_check_event(uc);
+               uc_schedule_run(uc);
 			}
 		}
 	}
@@ -1733,6 +1748,7 @@
     int current_span = 0;
     int min_span = 0;
     int max_span = 0;
+    int logging_level;
     int i;
     char *id;
     span_data_t *sp;
@@ -1861,6 +1877,8 @@
                         sp->protocol_end = UC_MODE_CPE;
                     else if (strcasecmp(val, "peer") == 0)
                         sp->protocol_end = UC_MODE_PEER;
+                    else
+                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "UNKNOWN protocol-end TYPE %s\n", val);
                 }
                 else if (strcmp(var, "outgoing-allowed") == 0)
                 {
@@ -1870,6 +1888,10 @@
                 {
                     sp->dialplan = strdup(val);
                 }
+                else if (strcmp(var, "context") == 0)
+                {
+                    sp->context = strdup(val);
+                }
                 else
                 {
                     switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "UNKNOWN PARAMETER %s\n", var);
@@ -1899,6 +1921,9 @@
             }
             uc_get_device_handle(sp->uc, 0, &sp->fd);
             uc_set_signaling_callback(sp->uc, handle_uc_event, (void *) (intptr_t) current_span);
+            logging_level = UC_LOG_SEVERITY_MASK | UC_LOG_SHOW_TAG | UC_LOG_SHOW_PROTOCOL;
+            uc_set_logging(sp->uc, logging_level, 1, sp->id);
+
             switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Launched span %d\n", current_span);
             unicall_thread_launch(sp->uc);
             switch_mutex_lock(globals.hash_mutex);
@@ -1911,8 +1936,15 @@
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_unicall_load)
 {
+    int logging_level;
     switch_status_t status = SWITCH_STATUS_SUCCESS;
 
+    uc_start();
+    uc_set_error_handler(unicall_report);
+    uc_set_message_handler(unicall_message);
+    logging_level = UC_LOG_SEVERITY_MASK;
+    uc_set_logging(NULL, logging_level, 1, NULL);
+
 	memset(span_data, 0, sizeof(span_data));
 
     module_pool = pool;
@@ -1949,5 +1981,6 @@
 
     for (x = 0, running = -1;  running  &&  x <= 100;  x++)
         switch_yield(20000);
+    uc_end();
     return SWITCH_STATUS_SUCCESS;
 }



More information about the Freeswitch-svn mailing list