[Freeswitch-svn] [commit] r14045 - in freeswitch/trunk/contrib/mod/endpoints/mod_khomp: . include src
FreeSWITCH SVN
raulfragoso at freeswitch.org
Tue Jun 30 02:09:22 PDT 2009
Author: raulfragoso
Date: Tue Jun 30 04:09:22 2009
New Revision: 14045
Log:
Moved the function definitions from the header to the cpp file to keep the compiler happy;
Included some flags to indicate when stream and audio callbacks are enabled or disabled;
Modified:
freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h
freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/mod_khomp.h
freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp
freeswitch/trunk/contrib/mod/endpoints/mod_khomp/src/khomp_pvt.cpp
Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h
==============================================================================
--- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h (original)
+++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h Tue Jun 30 04:09:22 2009
@@ -2,6 +2,7 @@
#define _KHOMP_PVT_H_
#include "globals.h"
+#include "mod_khomp.h"
#define KHOMP_PACKET_SIZE 16
Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/mod_khomp.h
==============================================================================
--- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/mod_khomp.h (original)
+++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/mod_khomp.h Tue Jun 30 04:09:22 2009
@@ -59,26 +59,6 @@
#include "opt.h"
/*!
- \brief Callback generated from K3L API for every new event on the board.
- \param[in] obj Object ID (could be a channel or a board, depends on device type) which generated the event.
- \param[in] e The event itself.
- \return ksSuccess if the event was treated
- \see K3L_EVENT Event specification
- */
-static int32 Kstdcall khomp_event_callback(int32 obj, K3L_EVENT * e);
-
-/*!
- \brief Callback generated from K3L API everytime audio is available on the board.
- @param[in] deviceid Board on which we get the event
- @param[in] objectid The channel we are getting the audio from
- @param[out] read_buffer The audio buffer itself (RAW)
- @param[in] read_size The buffer size, meaning the amount of data to be read
- \return ksSuccess if the event was treated
- */
-static void Kstdcall khomp_audio_listener(int32 deviceid, int32 objectid,
- byte * read_buffer, int32 read_size);
-
-/*!
\brief Defined by mod_reference, defines statuses for the switch_channel
\param TFLAG_IO Enables the IO state of a channel
\param TFLAG_INBOUND Sets a channel as inbound
@@ -94,105 +74,10 @@
TFLAG_HANGUP = (1 << 5),
TFLAG_LINEAR = (1 << 6),
TFLAG_CODEC = (1 << 7),
- TFLAG_BREAK = (1 << 8)
+ TFLAG_BREAK = (1 << 8),
+ TFLAG_STREAM = (1 << 9),
+ TFLAG_LISTEN = (1 << 10)
}
TFLAGS;
-/*!
- \brief Load the module. Expadend by a FreeSWITCH macro.
- Things we do here:
- \li Initialize a static structure on KhompPvt
- \li Load the configuration
- \li Start the K3L API, responsible for connecting to KServer
- \li Register mod APIs and APPs
- \li Register audio callback for KServer
- \li Register event callback for KServer
- \see Opt Where all the configs are handled
- \see khomp_event_callback To where we bind the event handler
- \see khomp_audio_listener To where we bind the audio handlers
- */
-SWITCH_MODULE_LOAD_FUNCTION(mod_khomp_load);
-SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_khomp_shutdown);
-SWITCH_MODULE_DEFINITION(mod_khomp, mod_khomp_load, mod_khomp_shutdown, NULL);
-
-/* State handlers for FreeSWITCH */
-static switch_status_t channel_on_init(switch_core_session_t *session);
-static switch_status_t channel_on_routing(switch_core_session_t *session);
-static switch_status_t channel_on_execute(switch_core_session_t *session);
-static switch_status_t channel_on_hangup(switch_core_session_t *session);
-static switch_status_t channel_on_exchange_media(
- switch_core_session_t *session);
-static switch_status_t channel_on_soft_execute(switch_core_session_t *session);
-static switch_status_t channel_on_destroy(switch_core_session_t *session);
-
-switch_state_handler_table_t khomp_state_handlers = {
- /*.on_init */ channel_on_init,
- /*.on_routing */ channel_on_routing,
- /*.on_execute */ channel_on_execute,
- /*.on_hangup */ channel_on_hangup,
- /*.on_exchange_media */ channel_on_exchange_media,
- /*.on_soft_execute */ channel_on_soft_execute,
- /*.on_consume_media */ NULL,
- /*.on_hibernate */ NULL,
- /*.on_reset */ NULL,
- /*.on_park*/ NULL,
- /*.on_reporting*/ NULL,
- /*.on_destroy*/ channel_on_destroy
-};
-
-/* Callbacks for FreeSWITCH */
-static switch_call_cause_t channel_outgoing_channel(
- switch_core_session_t *session,
- switch_event_t *var_event,
- switch_caller_profile_t *outbound_profile,
- switch_core_session_t **new_session,
- switch_memory_pool_t **pool,
- switch_originate_flag_t flags);
-static switch_status_t channel_read_frame(switch_core_session_t *session,
- switch_frame_t **frame,
- switch_io_flag_t flags,
- int stream_id);
-static switch_status_t channel_write_frame(switch_core_session_t *session,
- switch_frame_t *frame,
- switch_io_flag_t flags,
- int stream_id);
-static switch_status_t channel_kill_channel(switch_core_session_t *session,
- int sig);
-static switch_status_t channel_send_dtmf(switch_core_session_t *session,
- const switch_dtmf_t *dtmf);
-static switch_status_t channel_receive_message(switch_core_session_t *session,
- switch_core_session_message_t *msg);
-static switch_status_t channel_receive_event(switch_core_session_t *session,
- switch_event_t *event);
-
-
-switch_io_routines_t khomp_io_routines = {
- /*.outgoing_channel */ channel_outgoing_channel,
- /*.read_frame */ channel_read_frame,
- /*.write_frame */ channel_write_frame,
- /*.kill_channel */ channel_kill_channel,
- /*.send_dtmf */ channel_send_dtmf,
- /*.receive_message */ channel_receive_message,
- /*.receive_event */ channel_receive_event
-};
-
-/* Macros to define specific API functions */
-SWITCH_STANDARD_API(khomp);
-
-/*!
- \brief Print a system summary for all the boards. [khomp show info]
- */
-static void printSystemSummary(switch_stream_handle_t* stream);
-/*!
- \brief Print link status. [khomp show links]
- */
-static void printLinks(switch_stream_handle_t* stream, unsigned int device,
- unsigned int link);
-/*!
- \brief Print board channel status. [khomp show channels]
- */
-static void printChannels(switch_stream_handle_t* stream, unsigned int device,
- unsigned int link);
-
-
#endif /* _MOD_KHOMP_H_ */
Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp
==============================================================================
--- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp (original)
+++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp Tue Jun 30 04:09:22 2009
@@ -43,6 +43,124 @@
#include "mod_khomp.h"
/*!
+ \brief Callback generated from K3L API for every new event on the board.
+ \param[in] obj Object ID (could be a channel or a board, depends on device type) which generated the event.
+ \param[in] e The event itself.
+ \return ksSuccess if the event was treated
+ \see K3L_EVENT Event specification
+ */
+static int32 Kstdcall khomp_event_callback(int32 obj, K3L_EVENT * e);
+
+/*!
+ \brief Callback generated from K3L API everytime audio is available on the board.
+ @param[in] deviceid Board on which we get the event
+ @param[in] objectid The channel we are getting the audio from
+ @param[out] read_buffer The audio buffer itself (RAW)
+ @param[in] read_size The buffer size, meaning the amount of data to be read
+ \return ksSuccess if the event was treated
+ */
+static void Kstdcall khomp_audio_listener(int32 deviceid, int32 objectid,
+ byte * read_buffer, int32 read_size);
+
+/*!
+ \brief Load the module. Expadend by a FreeSWITCH macro.
+ Things we do here:
+ \li Initialize a static structure on KhompPvt
+ \li Load the configuration
+ \li Start the K3L API, responsible for connecting to KServer
+ \li Register mod APIs and APPs
+ \li Register audio callback for KServer
+ \li Register event callback for KServer
+ \see Opt Where all the configs are handled
+ \see khomp_event_callback To where we bind the event handler
+ \see khomp_audio_listener To where we bind the audio handlers
+ */
+SWITCH_MODULE_LOAD_FUNCTION(mod_khomp_load);
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_khomp_shutdown);
+SWITCH_MODULE_DEFINITION(mod_khomp, mod_khomp_load, mod_khomp_shutdown, NULL);
+
+/* State handlers for FreeSWITCH */
+static switch_status_t channel_on_init(switch_core_session_t *session);
+static switch_status_t channel_on_routing(switch_core_session_t *session);
+static switch_status_t channel_on_execute(switch_core_session_t *session);
+static switch_status_t channel_on_hangup(switch_core_session_t *session);
+static switch_status_t channel_on_exchange_media(
+ switch_core_session_t *session);
+static switch_status_t channel_on_soft_execute(switch_core_session_t *session);
+static switch_status_t channel_on_destroy(switch_core_session_t *session);
+
+switch_state_handler_table_t khomp_state_handlers = {
+ /*.on_init */ channel_on_init,
+ /*.on_routing */ channel_on_routing,
+ /*.on_execute */ channel_on_execute,
+ /*.on_hangup */ channel_on_hangup,
+ /*.on_exchange_media */ channel_on_exchange_media,
+ /*.on_soft_execute */ channel_on_soft_execute,
+ /*.on_consume_media */ NULL,
+ /*.on_hibernate */ NULL,
+ /*.on_reset */ NULL,
+ /*.on_park*/ NULL,
+ /*.on_reporting*/ NULL,
+ /*.on_destroy*/ channel_on_destroy
+};
+
+/* Callbacks for FreeSWITCH */
+static switch_call_cause_t channel_outgoing_channel(
+ switch_core_session_t *session,
+ switch_event_t *var_event,
+ switch_caller_profile_t *outbound_profile,
+ switch_core_session_t **new_session,
+ switch_memory_pool_t **pool,
+ switch_originate_flag_t flags);
+static switch_status_t channel_read_frame(switch_core_session_t *session,
+ switch_frame_t **frame,
+ switch_io_flag_t flags,
+ int stream_id);
+static switch_status_t channel_write_frame(switch_core_session_t *session,
+ switch_frame_t *frame,
+ switch_io_flag_t flags,
+ int stream_id);
+static switch_status_t channel_kill_channel(switch_core_session_t *session,
+ int sig);
+static switch_status_t channel_send_dtmf(switch_core_session_t *session,
+ const switch_dtmf_t *dtmf);
+static switch_status_t channel_receive_message(switch_core_session_t *session,
+ switch_core_session_message_t *msg);
+static switch_status_t channel_receive_event(switch_core_session_t *session,
+ switch_event_t *event);
+
+
+switch_io_routines_t khomp_io_routines = {
+ /*.outgoing_channel */ channel_outgoing_channel,
+ /*.read_frame */ channel_read_frame,
+ /*.write_frame */ channel_write_frame,
+ /*.kill_channel */ channel_kill_channel,
+ /*.send_dtmf */ channel_send_dtmf,
+ /*.receive_message */ channel_receive_message,
+ /*.receive_event */ channel_receive_event
+};
+
+/* Macros to define specific API functions */
+SWITCH_STANDARD_API(khomp);
+
+/*!
+ \brief Print a system summary for all the boards. [khomp show info]
+ */
+static void printSystemSummary(switch_stream_handle_t* stream);
+/*!
+ \brief Print link status. [khomp show links]
+ */
+static void printLinks(switch_stream_handle_t* stream, unsigned int device,
+ unsigned int link);
+/*!
+ \brief Print board channel status. [khomp show channels]
+ */
+static void printChannels(switch_stream_handle_t* stream, unsigned int device,
+ unsigned int link);
+
+
+
+/*!
\brief Will init part of our private structure and setup all the read/write
buffers along with the proper codecs. Right now, only PCMA.
*/
Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/src/khomp_pvt.cpp
==============================================================================
--- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/src/khomp_pvt.cpp (original)
+++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/src/khomp_pvt.cpp Tue Jun 30 04:09:22 2009
@@ -245,12 +245,14 @@
{
Globals::_k3lapi.mixer(_KDeviceId, _KChannelId, 0, kmsPlay, _KChannelId);
Globals::_k3lapi.command(_KDeviceId, _KChannelId, CM_START_STREAM_BUFFER);
- //flags.set(kflags::STREAM_UP);
}
catch(...)
{
return false;
}
+
+ switch_set_flag_locked(this, TFLAG_STREAM);
+
return true;
}
@@ -260,13 +262,14 @@
{
Globals::_k3lapi.mixer(_KDeviceId, _KChannelId, 0, kmsGenerator, kmtSilence);
Globals::_k3lapi.command(_KDeviceId, _KChannelId, CM_STOP_STREAM_BUFFER);
- //flags.clear(kflags::STREAM_UP);
}
catch(...)
{
return false;
}
-
+
+ switch_clear_flag_locked(this, TFLAG_STREAM);
+
return true;
}
@@ -289,8 +292,7 @@
return false;
}
- /* always set this flag to avoid constant 'ksInvalidState' messages. */
- //flags.set(kflags::LISTEN_UP);
+ switch_set_flag_locked(this, TFLAG_LISTEN);
return true;
}
@@ -306,7 +308,7 @@
return false;
}
- //flags.clear(kflags::LISTEN_UP);
+ switch_clear_flag_locked(this, TFLAG_LISTEN);
return true;
}
More information about the Freeswitch-svn
mailing list