[Freeswitch-svn] [commit] r14045 - in freeswitch/trunk/contrib/mod/endpoints/mod_khomp: . include src
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; }
participants (1)
-
FreeSWITCH SVN