[Freeswitch-svn] [commit] r13772 - freeswitch/trunk/scripts/contrib/jmesquita/mod_khomp

FreeSWITCH SVN jmesquita at freeswitch.org
Sat Jun 13 23:07:17 PDT 2009


Author: jmesquita
Date: Sun Jun 14 01:07:17 2009
New Revision: 13772

Log:
We are able to see the board events already. We see the call getting to the far end! But... still no audio treatment.

Modified:
   freeswitch/trunk/scripts/contrib/jmesquita/mod_khomp/mod_khomp.cpp

Modified: freeswitch/trunk/scripts/contrib/jmesquita/mod_khomp/mod_khomp.cpp
==============================================================================
--- freeswitch/trunk/scripts/contrib/jmesquita/mod_khomp/mod_khomp.cpp	(original)
+++ freeswitch/trunk/scripts/contrib/jmesquita/mod_khomp/mod_khomp.cpp	Sun Jun 14 01:07:17 2009
@@ -130,6 +130,7 @@
 /* My function prototypes */
 static void printBoardsInfo(switch_stream_handle_t*);
 static const char* linkStatus(unsigned int device, unsigned int link);
+static int32 Kstdcall EventCallBack(int32 obj, K3L_EVENT * e);
 
 
 
@@ -661,13 +662,14 @@
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Starting K3L...\n");
     try {
         k3l->start();
-    } catch (...) {
-        /* TODO: Catch the proper error and display it. */
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "K3L not started.");
+    } catch (K3LAPI::start_failed & e) {
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "K3L not started. Reason:%s.\n", e.msg.c_str());
         return SWITCH_STATUS_TERM;
     }
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "K3L started.\n");
 
+    k3lRegisterEventHandler( EventCallBack );
+
     /* Add all the specific API functions */
     SWITCH_ADD_API(api_interface, "khomp", "Khomp Menu", khomp, KHOMP_SYNTAX);
 
@@ -930,6 +932,27 @@
 /* End of helper functions */
 
 
+static int32 Kstdcall EventCallBack(int32 obj, K3L_EVENT * e)
+{				
+    /* TODO: We should hash things to make it statful */
+    switch(e->Code)
+    {
+        case EV_NEW_CALL:   
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "New call on %u to %s.\n", obj, k3l->get_param(e, "dest_addr").c_str());
+            break;
+        case EV_DISCONNECT:   
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Called party dropped the call on: %u. Releasing channel.\n", obj);
+            k3l->command(e->DeviceId, obj, CM_DISCONNECT, NULL);
+            break;
+        default:
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "New Event has just arrived on %u with untreated code: %x\n", obj, e->Code);
+            break;
+    }
+
+    return ksSuccess;
+}
+
+
 /* For Emacs:
  * Local Variables:
  * mode:c



More information about the Freeswitch-svn mailing list