diff --git a/src/mod/endpoints/mod_opal/Makefile.am b/src/mod/endpoints/mod_opal/Makefile.am deleted file mode 100644 index 5e38d3f605..0000000000 --- a/src/mod/endpoints/mod_opal/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -AM_CFLAGS = $(SWITCH_AM_CFLAGS) -AM_CPPFLAGS = $(SWITCH_AM_CXXFLAGS) -AM_LDFLAGS = $(SWITCH_AM_LDFLAGS) -#we should set all these vars from configure, no reason to have these in each Makefile.am -LIBTOOL = echo "`link=\`echo $@|grep .la;echo $@|grep .so;echo $@|grep .dll\`;if test -n "$$link"; then echo Creating $@;fi`";`if test -z "$(VERBOSE)" ; \ -then echo $(SHELL) $(switch_builddir)/quiet_libtool ;else echo $(SHELL) $(switch_builddir)/libtool; fi` -AM_MAKEFLAGS=`test -n "$(VERBOSE)" || echo -s` -# Dirty trick to override the link output -LIBS+=> $(MODNAME).log || error="yes";if test -n "$(VERBOSE)" -o "$$error" = "yes";then cat $(MODNAME).log;fi;if test "$$error" = "yes";then exit 1;fi - -moddir=$(prefix)/mod - -MODNAME=mod_opal - -OPALDIR=/home/tuyan/CODE/OPAL/opal -PWLIBDIR=/home/tuyan/CODE/OPAL/pwlib - -CC=g++ - -# enabled the debug compile for opal and pwlib -mod_LTLIBRARIES = mod_opal.la -mod_opal_la_SOURCES = mod_opal.cpp fsmanager.cxx fsep.cxx fsmediastream.cxx fscon.cxx opal_h323.cxx opal_sip.cxx opal_h323con.cxx fsrtp.cxx -mod_opal_la_CPPFLAGS = $(AM_CPPFLAGS) -D_REENTRANT -fno-exceptions -Wall -g3 -ggdb -O0 -D_DEBUG -I/home/tuyan/CODE/OPAL/pwlib/include -DPTRACING -I/home/tuyan/CODE/OPAL/opal/include -felide-constructors -Wreorder -I$(OPALDIR)/include -I$(PWLIBDIR)/include -mod_opal_la_LIBADD = $(switch_builddir)/libfreeswitch.la -mod_opal_la_LDFLAGS = -avoid-version -module -no-undefined -export-symbols-regex ^switch_module_.*$ -rpath $(PREFIX)/$(libdir) -L$(PWLIBDIR)/lib -L$(OPALDIR)/lib -lopal_linux_x86_d -lpt_linux_x86_d -lpthread -lexpat -lSDL -lresolv -ldl -fPIC -DPIC - -#Override the linstall target so we just install the .so/.dylib - -install-data-am: $(DESTDIR)$(PREFIX)/$(moddir)/$(MODNAME).$(DYNAMIC_LIB_EXTEN) - -$(DESTDIR)$(PREFIX)/$(moddir)/$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).la - @echo installing $(MODNAME).$(DYNAMIC_LIB_EXTEN) - @if [ -f .libs/$(MODNAME).$(DYNAMIC_LIB_EXTEN) ] ; then \ - $(LIBTOOL) --mode=install $(INSTALL) .libs/$(MODNAME).$(DYNAMIC_LIB_EXTEN) $(DESTDIR)$(PREFIX)/$(moddir) >/dev/null ; \ - else \ - $(LIBTOOL) --mode=install $(INSTALL) $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(DESTDIR)$(PREFIX)/$(moddir) >/dev/null ; \ - fi diff --git a/src/mod/endpoints/mod_opal/fscon.cxx b/src/mod/endpoints/mod_opal/fscon.cxx deleted file mode 100644 index 9dfd13bf4b..0000000000 --- a/src/mod/endpoints/mod_opal/fscon.cxx +++ /dev/null @@ -1,567 +0,0 @@ - -#include "fsep.h" -#include "fscon.h" -#include "fsmediastream.h" - -extern switch_endpoint_interface_t *opalfs_endpoint_interface; - - - - - -FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint, const PString & token, unsigned int options) - :OpalConnection(call, endpoint, token, options), FSEndpointInterface(NULL), FSRTPSession(NULL), OpalRTPSession(NULL) - -{ - - rtpmanager = new RTP_SessionManager(); - RTPLocalPort = endpoint.GetMediaPort(); // source is opal - RTPRemotePort = endpoint.GetMediaPort() + 150; // destination is Freeswitch - RTPLocalAddress = endpoint.GetRTPAddress(); - RTPRemoteAddress = endpoint.GetRTPAddress(); - - mediaformats+=endpoint.GetMediaFormats(); // Set mediaformats from owner endpoint - - -} - -FSConnection::~FSConnection() -{ - delete rtpmanager; - -} - - -void FSConnection::InitiateCall(const PString & party) -{ - phase = SetUpPhase; - PTRACE(1, "FSConnection: \t Initiating Call to " << party); - if (!OnIncomingConnection(0, NULL)){ - PTRACE(1, "FSConnection: \t Releasing the call with CallerAbort"); - Release(EndedByCallerAbort); - }else{ - PTRACE(1, "FSConnection: \t Setting up the ownerCall"); - ownerCall.OnSetUp(*this); - } -} - - -switch_call_cause_t FSConnection::SwitchInitiateCall(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, - switch_core_session_t **new_session, switch_memory_pool_t **pool) -{ - - return SWITCH_CAUSE_SUCCESS; -} - -// function name sucks, but lets keep it for now -// this function gets called when calls come from external opal endpoints -// and goes to fs -BOOL FSConnection::CreateIncomingFSConnection() -{ - - OpalCall & call = GetCall(); - PSafePtr<OpalConnection> OtherConnection = call.GetOtherPartyConnection(*this); - - //ownerCall.GetOtherPartyConnection(*this)->PreviewPeerMediaFormats(mediaformats); - - PString dest(OtherConnection->GetCalledDestinationNumber()); - //dest = dest.Right(dest.GetLength() - 3); // get destination without 'fs:' - - switch_mutex_t *mut; - switch_core_session_t *session = NULL; - switch_caller_profile_t *caller_profile = NULL; - fs_obj_t *fs_pvt = NULL; // private object - - if (!OtherConnection) - return FALSE; - - session = switch_core_session_request(opalfs_endpoint_interface, NULL); - - if(!session){ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not allocate session object\n"); - call.Clear(EndedByNoEndPoint); - } - - fssession = session; // store the fs session there - fs_pvt = (fs_obj_t*) switch_core_session_alloc(session, sizeof(fs_obj_t)); - - if (!fs_pvt){ - PTRACE(3, "!fs_pvt"); - return FALSE; - } - - - - if (switch_mutex_init(&(fs_pvt->flag_mutex), SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session))){ - PTRACE(3, "CAnnot init mutex"); - return FALSE; - } - - fs_pvt->ownercall = &call; - fs_pvt->Connection = this; - - switch_core_session_set_private(session, fs_pvt); - - frame.data = databuf; - switch_set_flag(fs_pvt, TFLAG_INBOUND); - - caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session), - (const char*)GetRemotePartyName(), /** username */ - "XML", /** TODO -> this should be configurable by core */ - (const char*)GetRemotePartyName(), /** caller_id_name */ - (const char*)GetRemotePartyNumber(), /** caller_id_number */ - (const char*)GetRemotePartyAddress(),/** network addr */ - NULL, /** ANI */ - NULL, /** ANI II */ - NULL, /** RDNIS */ - "FSOpal", /** source */ - "10.0.0.1", /** TODO -> set context */ - (const char*) dest /** destination_number */ - ); - - PWaitAndSignal m(ChannelMutex); - - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_channel_set_name(channel,(const char*) GetToken()); - switch_channel_set_caller_profile(channel, caller_profile); - switch_core_session_thread_launch(session); - switch_channel_set_state(channel, CS_INIT); - switch_channel_set_flag(channel, CF_ORIGINATOR); - SetConnected(); - - return TRUE; -} - -BOOL FSConnection::SetUpConnection() -{ - - OpalCall & call = GetCall(); - PSafePtr<OpalConnection> OtherConnection = call.GetOtherPartyConnection(*this); - - if (!OtherConnection && !IsOriginating()){ - PTRACE(3, "FSConn:\t No other connection in the call"); - return FALSE; - } - - if (IsOriginating()){ - PTRACE(3, "FSConn:\tOutgoing Connection"); // outgoing channel on fs - return TRUE; - } - - PTRACE(3, "FSConn:\tIncoming Connection for " << OtherConnection->GetCalledDestinationNumber()); - - SetPhase(SetUpPhase); - - return CreateIncomingFSConnection(); -} - -BOOL FSConnection::OnSetUpConnection() -{ - switch_channel_t *channel = switch_core_session_get_channel(fssession); - assert(channel); - - - - return TRUE; -} - - -BOOL FSConnection::SetAlerting(const PString& caleeName, BOOL withMedia) -{ - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(fssession); - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(fssession); - assert(channel); - - if (IsOriginating()) { - PTRACE(2, "FSConn\tSetAlerting ignored on call we originated."); - return TRUE; - } - - if (phase != SetUpPhase) - return FALSE; - - SetPhase(AlertingPhase); - OnAlerting(*this); - - switch_channel_set_state(channel, CS_RING); - switch_set_flag(fs_pvt, TFLAG_IO); - return TRUE; -} - -void FSConnection::OnAlerting(OpalConnection & connection) -{ - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(fssession); - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(fssession); - SetPhase(EstablishedPhase); - switch_channel_set_variable(channel, SWITCH_ORIGINATOR_CODEC_VARIABLE, "PCMU@30i,PCMA@30i"); - - switch_channel_set_flag(channel, CF_ANSWERED); - // - //if (!IsOriginating()) - - //switch_channel_set_state(channel, CS_RING); - -} - -BOOL FSConnection::SetConnected() -{ - PTRACE(3, "FSConn:\tSetConnected"); - PINDEX Session = 1; - if (!IsOriginating()){ - if (mediaStreams.IsEmpty()){ - - //RTP_Session *rtpsession = rtpmanager->GetSession(sessionID); - //Get an rtp session to see if we have some in the manager - /* - for (; Session <=3 ; Session++){ // We are adding rtpsession to the manager. - // we have only rtp over udp for now. - PTRACE(3, "Adding a new rtp session to rtpmanager with id " << Session); - RTP_UDP *newsession = new RTP_UDP(NULL, Session, FALSE); - newsession->Open(RTPLocalAddress, RTPLocalPort, 0, Session, NULL, NULL); - newsession->SetLocalAddress(RTPLocalAddress); - newsession->SetRemoteSocketInfo(RTPRemoteAddress, RTPRemotePort, FALSE); - rtpmanager->AddSession(newsession); - } - */ - PTRACE(3, "Mediaformats " << mediaformats); - //increments usecount on the rtp session object so, we have to release it after - //we are done. - //rtpsession = rtpmanager->UseSession(sessionID); - //OpalRTPSession = rtpsession; - OnConnected(); - } - } - - return TRUE; -} - -void FSConnection::OnConnected() -{ - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(fssession); - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(fssession); - - if (!IsOriginating()){ - switch_channel_set_state(channel, CS_INIT); - SetPhase(SetUpPhase); - SetAlerting("", FALSE); - //switch_set_flag(fs_pvt, TFLAG_IO); - } - -} - -void FSConnection::OnReleased() -{ - switch_channel_t *channel = NULL; - - SetPhase(ReleasingPhase); - - CloseMediaStreams(); - - channel = switch_core_session_get_channel(fssession); - assert(channel); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - OpalConnection::OnReleased(); - -} - -OpalMediaFormatList FSConnection::GetMediaFormats() const -{ - - return mediaformats; -} - -BOOL FSConnection::IsMediaBypassPossible(unsigned sessionID) -{ - return TRUE; -} - -OpalMediaStream* FSConnection::CreateMediaStream(const OpalMediaFormat & mediaFormat, - unsigned sessionID, - BOOL isSource) -{ - if (sessionID != OpalMediaFormat::DefaultAudioSessionID) // only audio for now - return OpalConnection::CreateMediaStream(mediaFormat, sessionID, isSource); - - PTRACE(3, "CODEC NAME from source is " << mediaFormat.GetEncodingName()); - - RTP_Session *rtpsession = rtpmanager->GetSession(sessionID); // Get an rtp session - - if (!rtpsession){ // We have to add an rtpsession to the manager. - // we have only rtp over udp for now. - PTRACE(3, "Adding a new rtp session to rtpmanager"); - RTP_UDP *newsession = new RTP_UDP(NULL, sessionID, FALSE); - newsession->Open(RTPLocalAddress, 44000, 0, sessionID, NULL, NULL); - newsession->SetLocalAddress(RTPLocalAddress); - newsession->SetRemoteSocketInfo(RTPRemoteAddress, 44501, FALSE); - newsession->SetRemoteSocketInfo(RTPRemoteAddress, 44500, TRUE); - rtpmanager->AddSession(newsession); - } - - rtpsession = rtpmanager->UseSession(sessionID); /*increments usecount on the rtp session object*/ - - return CreateMediaStream(*this, mediaFormat, isSource, *rtpsession /*RTPSession*/, 0 /*minjitter delay*/, 0/*maxjitter delay*/); -} - - - -OpalMediaStream * FSConnection::CreateMediaStream(OpalConnection & conn, - const OpalMediaFormat & mediaFormat, - BOOL isSource, - RTP_Session &rtpSession, - unsigned minAudioJitterDelay, - unsigned maxAudioJitterDelay) -{ - switch_channel_t *channel; - switch_rtp_flag_t flags ; - const char *err; - - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(fssession); - channel = switch_core_session_get_channel(fssession); - - PTRACE(3, "Codec name: " << mediaFormat.GetEncodingName() << " " << mediaFormat.GetClockRate() << " " << mediaFormat.GetFrameTime()); - - if (isSource) { - if (switch_core_codec_init - (&write_codec, "L16", NULL, mediaFormat.GetClockRate(), 30, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, - switch_core_session_get_pool(fssession)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Cannot set write codec\n", switch_channel_get_name(channel)); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - return NULL; - } - switch_core_session_set_write_codec(fssession, &write_codec); - - }else{ - if (switch_core_codec_init - (&read_codec, "L16", NULL, mediaFormat.GetClockRate(), 30, 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, - switch_core_session_get_pool(fssession)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Cannot set read codec\n", switch_channel_get_name(channel)); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - return NULL; - } - - switch_core_session_set_read_codec(fssession, &read_codec); - - frame.rate = mediaFormat.GetClockRate(); - frame.codec = &read_codec; - - - } - - FSRTPSession = switch_rtp_new("10.0.0.1", - 44500, // Source and destination is switched from opal - "10.0.0.1", - 44000, //this goes to Opal rtp data port - write_codec.implementation->ianacode, - write_codec.implementation->samples_per_frame, - write_codec.implementation->microseconds_per_frame, - flags, NULL, "soft", &err, switch_core_session_get_pool(fssession)); - - switch_rtp_set_flag(FSRTPSession, SWITCH_RTP_FLAG_DATAWAIT); - //switch_rtp_set_flag(FSRTPSession, SWITCH_RTP_FLAG_USE_TIMER); - //switch_rtp_set_flag(FSRTPSession, SWITCH_RTP_FLAG_AUTOADJ); - - - - PTRACE(1, "FSConnection: new media stream !!!" << mediaFormat.GetEncodingName()); - //switch_channel_set_state(channel, CS_UNHOLD); - return new FSMediaStream(*this, mediaFormat, isSource, rtpSession /*RTPSession*/, minAudioJitterDelay /*minjitter delay*/, maxAudioJitterDelay/*maxjitter delay*/); -} - - -switch_status_t FSConnection::callback_on_init(switch_core_session_t *session) -{ - return SWITCH_STATUS_SUCCESS; - PWaitAndSignal m(ChannelMutex); - - OpalCall & call = GetCall(); - PSafePtr<OpalConnection> OtherConnection = call.GetOtherPartyConnection(*this); - - switch_channel_t *channel = switch_core_session_get_channel(session); - assert(channel); - - if (!IsOriginating()) { // incoming call initialize - // TODO Set all the Mediaformats from fs endpoint to the - // fs codec strings for the channels. be carefull about early media etc. - //PTRACE(2, "FSConn:\t Answering Incoming Call"); - SetConnected(); - return SWITCH_STATUS_SUCCESS; - } - - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::callback_on_ring(switch_core_session_t *io_session) -{ - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(io_session); - //switch_channel_set_state(channel, CS_HOLD); - OpalConnection::StartMediaStreams(); - - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::callback_on_execute(switch_core_session_t *io_session) -{ - - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::callback_on_hangup(switch_core_session_t *io_session) -{ - phase = ReleasingPhase; - //OpalConnection::CloseMediaStreams(); - OpalConnection::ownerCall.Clear(); - OnReleased(); - - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::callback_on_loopback(switch_core_session_t *session) -{ - OpalCall & call = GetCall(); - PSafePtr<OpalConnection> OtherConnection = call.GetOtherPartyConnection(*this); - - OtherConnection->AnsweringCall(AnswerCallNow); - - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::io_read_frame(switch_core_session_t *session, switch_frame_t **o_frame, int i_timeout, switch_io_flag_t i_flag, int i_streamId) -{ - switch_channel_t *channel = NULL; - switch_frame_t *pframe; - switch_status_t result; - - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(session); - - channel = switch_core_session_get_channel(session); - assert(channel != NULL); - - - if (!switch_test_flag(fs_pvt, TFLAG_IO)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "read"); - return SWITCH_STATUS_SUCCESS; - } - - pframe = &frame; - *o_frame = pframe; - - switch_set_flag_locked(fs_pvt, TFLAG_READING); - result = switch_rtp_zerocopy_read_frame(FSRTPSession, pframe); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "result from read %i\n", result); - switch_clear_flag_locked(fs_pvt, TFLAG_READING); - - - return result; -} - -switch_status_t FSConnection::io_write_frame(switch_core_session_t *session, switch_frame_t *frame, int i_timeout, switch_io_flag_t i_flag, int i_streamId) -{ - - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(session); - fs_obj_t *fs_pvt = (fs_obj_t*) switch_core_session_get_private(session); - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "write \n"); - - while(!switch_rtp_ready(FSRTPSession)){ - if (switch_channel_ready(channel)) { - switch_yield(10000); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Yielding\n"); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Yielding\n"); - return SWITCH_STATUS_GENERR; - } - } - - - if (!switch_test_flag(fs_pvt, TFLAG_IO)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "write"); - return SWITCH_STATUS_SUCCESS; - } - - switch_set_flag_locked(fs_pvt, TFLAG_WRITING); - switch_rtp_write_frame(FSRTPSession, frame, 0); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "write \n"); - switch_clear_flag_locked(fs_pvt, TFLAG_WRITING); - return SWITCH_STATUS_SUCCESS; -} - -switch_status_t FSConnection::io_receive_message(switch_core_session_t *i_session, switch_core_session_message_t *i_message) -{ - - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(i_session); - OpalCall & call = GetCall(); - PSafePtr<OpalConnection> OtherConnection = call.GetOtherPartyConnection(*this); - - - - switch(i_message->message_id) - { - case SWITCH_MESSAGE_REDIRECT_AUDIO: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG ,"SWITCH_MESSAGE_REDIRECT_AUDIO\n"); - break; - case SWITCH_MESSAGE_TRANSMIT_TEXT: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_TRANSMIT_TEXT\n"); - break; - case SWITCH_MESSAGE_INDICATE_ANSWER: - OtherConnection->AnsweringCall(AnswerCallNow); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_ANSWER\n"); - break; - case SWITCH_MESSAGE_INDICATE_PROGRESS: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_PROGRESS\n"); - break; - case SWITCH_MESSAGE_INDICATE_BRIDGE: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_BRIDGE\n"); - break; - case SWITCH_MESSAGE_INDICATE_UNBRIDGE: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_UNBRIDGE\n"); - break; - case SWITCH_MESSAGE_INDICATE_TRANSFER: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_TRANSFER\n"); - break; - case SWITCH_MESSAGE_INDICATE_RINGING: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_RINGING\n"); - break; - case SWITCH_MESSAGE_INDICATE_MEDIA: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_MEDIA\n"); - break; - case SWITCH_MESSAGE_INDICATE_NOMEDIA: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_NOMEDIA\n"); - break; - case SWITCH_MESSAGE_INDICATE_HOLD: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_HOLD\n"); - break; - case SWITCH_MESSAGE_INDICATE_UNHOLD: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_UNHOLD\n"); - break; - case SWITCH_MESSAGE_INDICATE_REDIRECT: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_REDIRECT\n"); - break; - case SWITCH_MESSAGE_INDICATE_REJECT: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_REJECT\n"); - break; - case SWITCH_MESSAGE_INDICATE_BROADCAST: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_BROADCAST\n"); - break; - case SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT\n"); - break; - default: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"SWITCH_MESSAGE_???\n"); - } - - //switch_mutex_unlock(tech_prv->m_mutex); - return SWITCH_STATUS_SUCCESS; -} - diff --git a/src/mod/endpoints/mod_opal/fscon.h b/src/mod/endpoints/mod_opal/fscon.h deleted file mode 100644 index 0f3bf52221..0000000000 --- a/src/mod/endpoints/mod_opal/fscon.h +++ /dev/null @@ -1,126 +0,0 @@ - -#ifndef __FREESWITCH_OPAL_CONNECTION__ -#define __FREESWITCH_OPAL_CONNECTION__ - -#include <switch.h> -#include <ptlib.h> -#include <ptlib/psync.h> -#include <opal/buildopts.h> -#include <opal/endpoint.h> -#include <opal/connection.h> -#include <opal/transports.h> - -#include "fsep.h" -#include "fsmediastream.h" - -typedef enum { - TFLAG_IO = (1 << 0), - TFLAG_INBOUND = (1 << 1), - TFLAG_OUTBOUND = (1 << 2), - TFLAG_READING = (1 << 3), - TFLAG_WRITING = (1 << 4) -} TFLAGS; - - -class FSConnection; -class FSMediaStream; - -typedef struct fs_obj -{ - unsigned int flags; - switch_mutex_t *flag_mutex; - OpalCall *ownercall; - FSConnection *Connection; - -} fs_obj_t; - - - -class FSConnection : public OpalConnection -{ - PCLASSINFO(FSConnection, OpalConnection); - public: - FSConnection(OpalCall & call, FSEndPoint & endpoint, const PString & token, unsigned int options); - ~FSConnection(); - virtual OpalMediaFormatList GetMediaFormats() const; - virtual OpalMediaStream * CreateMediaStream(OpalConnection & conn, - const OpalMediaFormat & mediaFormat, - BOOL isSource, - RTP_Session &rtpSession, - unsigned minAudioJitterDelay, - unsigned maxAudioJitterDelay); - virtual OpalMediaStream* CreateMediaStream (const OpalMediaFormat & mediaFormat, - unsigned sessionID, - BOOL isSource); - - void InitiateCall(const PString & party); - - - - virtual BOOL SetUpConnection(); - virtual BOOL OnSetUpConnection(); - virtual BOOL SetAlerting(const PString& caleeName, BOOL withMedia); - virtual BOOL SetConnected(); - virtual void OnAlerting(OpalConnection & connection); - virtual void OnConnected(); - virtual void OnReleased(); - virtual BOOL IsMediaBypassPossible(unsigned sessionID); - - switch_status_t callback_on_init(switch_core_session_t *io_session); - switch_status_t callback_on_ring(switch_core_session_t *io_session); - switch_status_t callback_on_execute(switch_core_session_t *io_session); - switch_status_t callback_on_hangup(switch_core_session_t *io_session); - switch_status_t callback_on_loopback(switch_core_session_t *session); - switch_status_t callback_on_transmit(switch_core_session_t *io_session); - - switch_call_cause_t SwitchInitiateCall(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, - switch_core_session_t **new_session, switch_memory_pool_t **pool); - - switch_status_t io_read_frame(switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); - switch_status_t io_write_frame(switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); - switch_status_t io_kill_channel(switch_core_session_t *, int); - switch_status_t io_waitfor_read(switch_core_session_t *, int, int); - switch_status_t io_waitfor_write(switch_core_session_t *, int, int); - switch_status_t io_send_dtmf(switch_core_session_t *, char *); - switch_status_t io_receive_message(switch_core_session_t *, switch_core_session_message_t *); - switch_status_t io_receive_event(switch_core_session_t *, switch_event_t *); - switch_status_t io_state_change(switch_core_session_t *); - switch_status_t io_read_video_frame(switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); - switch_status_t io_write_video_frame(switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); - - private: - OpalMediaFormatList mediaformats; - - - switch_frame_t frame; - char databuf[SWITCH_RECOMMENDED_BUFFER_SIZE]; - switch_codec_t read_codec; /* Read codec*/ - switch_codec_t write_codec; /* Write codec*/ - switch_timer_t timer; - - - protected: - - BOOL CreateIncomingFSConnection(); - - switch_endpoint_interface_t *FSEndpointInterface; - WORD RTPLocalPort; - WORD RTPRemotePort; - PIPSocket::Address RTPLocalAddress; - PIPSocket::Address RTPRemoteAddress; - - PMutex ChannelMutex; - - RTP_SessionManager *rtpmanager; - - RTP_Session *OpalRTPSession; - - switch_core_session_t *fssession; - - - switch_rtp_t *FSRTPSession; -}; - - -#endif //__FREESWITCH_OPAL_CONNECTION__ - diff --git a/src/mod/endpoints/mod_opal/fsep.cxx b/src/mod/endpoints/mod_opal/fsep.cxx deleted file mode 100644 index 9ed21dd1f5..0000000000 --- a/src/mod/endpoints/mod_opal/fsep.cxx +++ /dev/null @@ -1,107 +0,0 @@ - - -#include "fsep.h" -#include "fscon.h" - - -static PString MakeToken() -{ - return PGloballyUniqueID().AsString(); -} - -FSEndPoint::FSEndPoint(OpalManager & manager) - :OpalEndPoint(manager, "fs", CanTerminateCall), initialized(TRUE), - currentmediaport(MIN_MEDIA_PORT), RTPLocalAddress(PIPSocket::Address::Address()) -{ - - - mediaformats+=OpalPCM16; - mediaformats+=OpalG711uLaw; - mediaformats+=OpalG711ALaw; - mediaformats+=OpalG711_ULAW_64K; - mediaformats+=OpalG711_ALAW_64K; - mediaformats+=OpalGSM0610; - mediaformats+=OpalPCM16_16KHZ; - mediaformats+=OPAL_G729; - mediaformats+=OPAL_G729A; - mediaformats+=OPAL_G729B; - mediaformats+=OPAL_G729AB; - PTRACE(3, "FSEndPoint: \t FSEndPoint Created!"); -} - -FSEndPoint::~FSEndPoint() -{ - -} - -BOOL FSEndPoint::SetRTPAddress(PIPSocket::Address addr) -{ - RTPLocalAddress = addr; - - return TRUE; -} - -PIPSocket::Address FSEndPoint::GetRTPAddress() -{ - return RTPLocalAddress; -} - - -BOOL FSEndPoint::OnOpenMediaStream(OpalConnection & connection, OpalMediaStream & stream) -{ - manager.OnOpenMediaStream(connection, stream); - return TRUE; -} - -BOOL FSEndPoint::OnIncomingConnection(OpalConnection&, unsigned int, OpalConnection::StringOptions*) -{ - return TRUE; -} - -BOOL FSEndPoint::OnSetUpConnection(OpalConnection & connection) -{ - return TRUE; -} - -void FSEndPoint::OnEstablished(OpalConnection &connection) -{ - -} - -BOOL FSEndPoint::MakeConnection (OpalCall & call, const PString & party, - void *userData, unsigned int options, - OpalConnection::StringOptions* stringOptions) -{ - FSConnection *connection; - PString token = MakeToken(); - connection = new FSConnection(call, *this, token, 0); - PString dest = PString((const char*) userData); - - if (connection != NULL){ - - if (!AddConnection(connection)) - return FALSE; - - if (call.GetConnection(0) == (OpalConnection*)connection){ - connection->SetUpConnection(); - } - } - - return TRUE; -} - -OpalMediaFormatList FSEndPoint::GetMediaFormats() const -{ - return mediaformats; -} - - - -WORD FSEndPoint::GetMediaPort() -{ - if (currentmediaport++ >= MAX_MEDIA_PORT) { - currentmediaport = MIN_MEDIA_PORT; - } - - return currentmediaport; -} diff --git a/src/mod/endpoints/mod_opal/fsep.h b/src/mod/endpoints/mod_opal/fsep.h deleted file mode 100644 index 60ed4d3a53..0000000000 --- a/src/mod/endpoints/mod_opal/fsep.h +++ /dev/null @@ -1,45 +0,0 @@ - - -#ifndef __FREESWITCH_OPAL_ENDPOINT__ -#define __FREESWITCH_OPAL_ENDPOINT__ - -#include <switch.h> -#include <ptlib.h> -#include <opal/buildopts.h> -#include <opal/endpoint.h> - -#define MAX_MEDIA_PORT 44526 -#define MIN_MEDIA_PORT 44000 - -class FSEndPoint : public OpalEndPoint -{ - PCLASSINFO(FSEndPoint, OpalEndPoint); - public: - FSEndPoint(OpalManager& manager); - ~FSEndPoint(); - - virtual BOOL OnIncomingConnection(OpalConnection&, unsigned int, OpalConnection::StringOptions*); - - virtual BOOL MakeConnection(OpalCall & call, const PString & party, - void * userData, unsigned int options = 0, - OpalConnection::StringOptions* stringOptions = NULL); - - virtual BOOL OnOpenMediaStream(OpalConnection & connection, OpalMediaStream & stream); - virtual BOOL OnSetUpConnection(OpalConnection & connection); - virtual void OnEstablished(OpalConnection &connection); - virtual OpalMediaFormatList GetMediaFormats() const; - - WORD GetMediaPort(); - BOOL SetRTPAddress(PIPSocket::Address ipaddr); - PIPSocket::Address GetRTPAddress(); - - private: - BOOL initialized; - PINDEX maxcalls; - OpalMediaFormatList mediaformats; - WORD currentmediaport; - PIPSocket::Address RTPLocalAddress; - -}; - -#endif //__FREESWITCH_OPAL_ENDPOINT__ diff --git a/src/mod/endpoints/mod_opal/fsmanager.cxx b/src/mod/endpoints/mod_opal/fsmanager.cxx deleted file mode 100644 index f92a62057b..0000000000 --- a/src/mod/endpoints/mod_opal/fsmanager.cxx +++ /dev/null @@ -1,63 +0,0 @@ - -#include "fsmanager.h" - -FSManager::FSManager() - :SessionsHashTable(NULL), SessionsHashTableMutex(NULL), - h323ep(NULL), fsep(NULL) -{ - -} - -FSManager::~FSManager() -{ - switch_mutex_destroy(SessionsHashTableMutex); - switch_core_hash_destroy(&SessionsHashTable); -} - -BOOL FSManager::Initialize(switch_memory_pool_t* MemoryPool) -{ - silenceDetectParams.m_mode = OpalSilenceDetector::NoSilenceDetection; - SetAudioJitterDelay(800, 3000); - - if(switch_core_hash_init(&SessionsHashTable,MemoryPool)!=SWITCH_STATUS_SUCCESS) - { - assert(0); - return FALSE; - } - - if(switch_mutex_init(&SessionsHashTableMutex,SWITCH_MUTEX_UNNESTED,MemoryPool)!=SWITCH_STATUS_SUCCESS) - { - assert(0); - switch_core_hash_destroy(&SessionsHashTable); - return FALSE; - } - - sipep = new FSSIPEndPoint( *(static_cast<OpalManager*>(this))); - h323ep = new FSH323EndPoint( *(static_cast<OpalManager*>(this))); - fsep = new FSEndPoint( *(static_cast<OpalManager*>(this))); - - PIPSocket::Address addr("10.0.0.1"); - - OpalTransportAddress sipTransportAddress(addr,5060, "udp"); - OpalTransportAddress h323TransportAddress(addr,1726); - - - fsep->SetRTPAddress(addr); - - if(!sipep->StartListeners(sipTransportAddress)){ - delete sipep; - return FALSE; - } - - if(!h323ep->StartListeners(h323TransportAddress)){ - delete h323ep; - delete sipep; - return FALSE; - } - //SetSTUNServer("stun.voxgratia.org"); - PStringArray routes; - routes += "h323:.* = fs:<da>"; - SetRouteTable(routes); - - return TRUE; -} diff --git a/src/mod/endpoints/mod_opal/fsmanager.h b/src/mod/endpoints/mod_opal/fsmanager.h deleted file mode 100644 index 50f491b849..0000000000 --- a/src/mod/endpoints/mod_opal/fsmanager.h +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef __FREESWITCH_OPAL_MANAGER__ -#define __FREESWITCH_OPAL_MANAGER__ - -#include <ptlib.h> -#include <opal/manager.h> -#include <h323/h323ep.h> -#include "fsep.h" -#include "opal_h323.h" -#include "opal_sip.h" - -class FSH323EndPoint; - -class FSManager : public OpalManager -{ - PCLASSINFO(FSManager, PObject); - public: - FSManager(); - ~FSManager(); - - BOOL Initialize(switch_memory_pool_t* MemoryPool); - - private: - switch_hash_t *SessionsHashTable; - switch_mutex_t *SessionsHashTableMutex; - switch_memory_pool_t *MemoryPool; - - protected: - FSH323EndPoint *h323ep; - FSSIPEndPoint *sipep; - FSEndPoint *fsep; -}; - -#endif //__FREESWITCH_OPAL_MANAGER__ diff --git a/src/mod/endpoints/mod_opal/fsmediastream.cxx b/src/mod/endpoints/mod_opal/fsmediastream.cxx deleted file mode 100644 index 57a2611cb3..0000000000 --- a/src/mod/endpoints/mod_opal/fsmediastream.cxx +++ /dev/null @@ -1,55 +0,0 @@ - -#include "fsmediastream.h" - -FSMediaStream::FSMediaStream(FSConnection & connection, const OpalMediaFormat &mediaFormat, - BOOL isSource, - RTP_Session & rtpSession, - unsigned minAudioJitterDelay, - unsigned maxAudioJitterDelay) - - :OpalRTPMediaStream(connection, mediaFormat, isSource, rtpSession, minAudioJitterDelay, maxAudioJitterDelay), - fsconnection((FSConnection&) connection) -{ - - if (isSource){ - PTRACE(3, "FSMediaStream: Created SOURCE Media Stream"); - //channel = fsconnection.writechannel; - }else{ - //channel = fsconnection.readchannel; - PTRACE(3, "FSMediaStream: Created SINK Media Stream"); - } - -} - -BOOL FSMediaStream::IsSynchronous() const -{ - return FALSE; //rtp mediastream -} - - -FSMediaStream::~FSMediaStream() -{ - -} - - - -FSUDPMediaStream::FSUDPMediaStream(OpalConnection & connection, const OpalMediaFormat &mediaFormat, - unsigned sessionID, - BOOL isSource, - OpalTransportUDP &transport) - - :OpalUDPMediaStream(connection, mediaFormat, sessionID, isSource, transport) -{ - if (isSource){ - PTRACE(3, "FSMediaStream: Created SOURCE Media Stream"); - }else{ - PTRACE(3, "FSMediaStream: Created SINK Media Stream"); - } - -} - -FSUDPMediaStream::~FSUDPMediaStream() -{ - -} diff --git a/src/mod/endpoints/mod_opal/fsmediastream.h b/src/mod/endpoints/mod_opal/fsmediastream.h deleted file mode 100644 index f7ce283573..0000000000 --- a/src/mod/endpoints/mod_opal/fsmediastream.h +++ /dev/null @@ -1,51 +0,0 @@ - -#ifndef __FREESWITCH_OPAL_MEDIASTREAM__ -#define __FREESWITCH_OPAL_MEDIASTREAM__ - - -#include <ptlib.h> -#include <opal/buildopts.h> -#include <opal/connection.h> -#include <opal/mediastrm.h> -#include <switch.h> -#include "fscon.h" - -class FSConnection; - -class FSMediaStream : public OpalRTPMediaStream -{ - PCLASSINFO(FSMediaStream, OpalRTPMediaStream); - public: - FSMediaStream(FSConnection & connection, const OpalMediaFormat &mediaFormat, - BOOL isSource, - RTP_Session & rtpSession, - unsigned minAudioJitterDelay, - unsigned maxAudioJitterDelay); - - - ~FSMediaStream(); - //virtual BOOL ReadData(BYTE* data,PINDEX size,PINDEX& length); - //virtual BOOL WriteData(const BYTE* data,PINDEX length, PINDEX& written); - virtual BOOL IsSynchronous() const; - - FSConnection &fsconnection; - protected: - PAdaptiveDelay channelDelay; - BOOL isSource; - PQueueChannel *channel; -}; - -class FSUDPMediaStream : public OpalUDPMediaStream -{ - PCLASSINFO(FSUDPMediaStream, OpalUDPMediaStream); - public: - FSUDPMediaStream(OpalConnection & connection, const OpalMediaFormat &mediaFormat, - unsigned sessionID, - BOOL isSource, - OpalTransportUDP &transport); - - ~FSUDPMediaStream(); - -}; - -#endif// __FREESWITCH_OPAL_CONNECTION__ diff --git a/src/mod/endpoints/mod_opal/fsrtp.cxx b/src/mod/endpoints/mod_opal/fsrtp.cxx deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/mod/endpoints/mod_opal/fsrtp.h b/src/mod/endpoints/mod_opal/fsrtp.h deleted file mode 100644 index 09eab4b71d..0000000000 --- a/src/mod/endpoints/mod_opal/fsrtp.h +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef __FREESWITCH_RTP_H_ -#define __FREESWITCH_RTP_H_ - -#define HAVE_APR -#include <switch.h> -#include <switch_version.h> -#include <ptlib.h> -#include <opal/buildopts.h> -#include <opal/connection.h> -#include <opal/rtp.h> - -// keeps the freeswitch - opal rtp mapping -class FSRTPPairs : public PObject -{ - PCLASSINFO(FSRTPPairs, PObject); - public: - FSRTPPairs(); - ~FSRTPPairs(); - - private: - switch_rtp_t *fsrtp; - RTP_UDP *opalrtp; - -}; - -// fsrtp session is different from opalrtp session -// we just keep the rtp sessions in fsrtpsession -// -class FSRTPSession : public PObject -{ - PCLASSINFO(FSRTPSession, PObject); - public: - FSRTPSession(WORD port, BOOL isOpalRTP = FALSE); - - private: - class RTPPairsDictionary : public PSafeDictionary<PString, FSRTPPairs> - { - virtual void DeleteObject(PObject * object) const; - - }rtpPairs; - -}; - -#endif //__FREESWITCH_RTP_H_ diff --git a/src/mod/endpoints/mod_opal/mod_opal.cpp b/src/mod/endpoints/mod_opal/mod_opal.cpp deleted file mode 100644 index b1f225f412..0000000000 --- a/src/mod/endpoints/mod_opal/mod_opal.cpp +++ /dev/null @@ -1,239 +0,0 @@ - -#include <switch.h> -#include <ptlib.h> -#include <ptlib/svcproc.h> -#include "mod_opal.h" -#include "fsmanager.h" -#include "fscon.h" - - -static switch_call_cause_t opalfs_outgoing_channel(switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t **, switch_memory_pool_t **); -static switch_status_t opalfs_read_frame(switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -static switch_status_t opalfs_write_frame(switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); -static switch_status_t opalfs_kill_channel(switch_core_session_t *, int); -static switch_status_t opalfs_waitfor_read(switch_core_session_t *, int, int); -static switch_status_t opalfs_waitfor_write(switch_core_session_t *, int, int); -static switch_status_t opalfs_send_dtmf(switch_core_session_t *, char *); -static switch_status_t opalfs_receive_message(switch_core_session_t *, switch_core_session_message_t *); -static switch_status_t opalfs_receive_event(switch_core_session_t *, switch_event_t *); -static switch_status_t opalfs_state_change(switch_core_session_t *); -static switch_status_t opalfs_read_video_frame(switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -static switch_status_t opalfs_write_video_frame(switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); - - - -static switch_status_t opalfs_on_init(switch_core_session_t *session); -static switch_status_t opalfs_on_ring(switch_core_session_t *session); -static switch_status_t opalfs_on_execute(switch_core_session_t *session); -static switch_status_t opalfs_on_hangup(switch_core_session_t *session); -static switch_status_t opalfs_on_loopback(switch_core_session_t *session); -static switch_status_t opalfs_on_transmit(switch_core_session_t *session); - - -static switch_memory_pool_t *opal_pool = NULL; -switch_endpoint_interface_t *opalfs_endpoint_interface = NULL; -static FSManager *opal_manager = NULL; - - -class _FSOpalProcess : public PProcess -{ - PCLASSINFO(_FSOpalProcess, PProcess) - public: - _FSOpalProcess(){PTrace::SetLevel(PSystemLog::Info);}; //just for fun and eyecandy ;) - void Main() {}; -} FSOpalProcess; - - - -static switch_io_routines_t opalfs_io_routines = { - /*.outgoing_channel */ opalfs_outgoing_channel, - /*.read_frame */ opalfs_read_frame, - /*.write_frame */ opalfs_write_frame, - /*.kill_channel */ opalfs_kill_channel, - /*.waitfor_read */ opalfs_waitfor_read, - /*.waitfor_read */ opalfs_waitfor_write, - /*.send_dtmf */ opalfs_send_dtmf, - /*.receive_message */ opalfs_receive_message, - /*.receive_event */ opalfs_receive_event, - /*.state_change*/ opalfs_state_change, - /*.read_video_frame*/ opalfs_read_video_frame, - /*.write_video_frame*/ opalfs_write_video_frame -}; - -static switch_state_handler_table_t opalfs_event_handlers = { - /*.on_init */ opalfs_on_init, - /*.on_ring */ opalfs_on_ring, - /*.on_execute */ opalfs_on_execute, - /*.on_hangup */ opalfs_on_hangup, - /*.on_loopback */ opalfs_on_loopback, - /*.on_transmit */ opalfs_on_transmit -}; - - -SWITCH_MODULE_LOAD_FUNCTION(mod_opal_load); -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_opal_shutdown); -SWITCH_MODULE_DEFINITION(mod_opal, mod_opal_load, mod_opal_shutdown, NULL); - -SWITCH_MODULE_LOAD_FUNCTION(mod_opal_load) -{ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE,"Starting loading mod_opal\n"); - opal_pool = pool; - - *module_interface =NULL; - *module_interface = switch_loadable_module_create_module_interface(pool, modname); - - if(!module_interface){ - return SWITCH_STATUS_MEMERR; - } - - opalfs_endpoint_interface = (switch_endpoint_interface_t*)switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); - opalfs_endpoint_interface->interface_name = "opalFS"; - opalfs_endpoint_interface->io_routines = &opalfs_io_routines; - opalfs_endpoint_interface->state_handler = &opalfs_event_handlers; - - opal_manager = new FSManager(); - - if(!opal_manager) { - return SWITCH_STATUS_MEMERR; - } - - if(!opal_manager->Initialize(pool)){ - delete opal_manager; - return SWITCH_STATUS_FALSE; - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Opal manager initilaized and running\n"); - - return SWITCH_STATUS_SUCCESS; -} - - -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_opal_shutdown) -{ - delete opal_manager; - opal_manager = NULL; - opal_pool = NULL; - opalfs_endpoint_interface = NULL; - return SWITCH_STATUS_SUCCESS; -} - - -static switch_call_cause_t opalfs_outgoing_channel(switch_core_session_t *session, - switch_caller_profile_t *outbound_profile, - switch_core_session_t **new_session, - switch_memory_pool_t **pool) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return SWITCH_CAUSE_SUCCESS; - -} - -static switch_status_t opalfs_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->io_read_frame(session, frame, timeout, flags, stream_id); -} - -static switch_status_t opalfs_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->io_write_frame(session, frame, timeout, flags, stream_id); -} - -static switch_status_t opalfs_kill_channel(switch_core_session_t *session, int sig) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Waitfor read!!!\n"); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Waitfor write!!!\n"); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_send_dtmf(switch_core_session_t *session, char *dtmf) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) -{ - fs_obj_t* tech_prv = (fs_obj_t*) switch_core_session_get_private(session); - - return tech_prv->Connection->io_receive_message(session, msg); -} - -static switch_status_t opalfs_receive_event(switch_core_session_t *session, switch_event_t *event) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_state_change(switch_core_session_t *session) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flag, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t opalfs_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flag, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - - -static switch_status_t opalfs_on_init(switch_core_session_t *session) -{ - fs_obj_t* fs_pvt = (fs_obj_t*)switch_core_session_get_private(session); - return SWITCH_STATUS_SUCCESS; - return fs_pvt->Connection->callback_on_init(session); -} - -static switch_status_t opalfs_on_ring(switch_core_session_t *session) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->callback_on_ring(session); -} - -static switch_status_t opalfs_on_execute(switch_core_session_t *session) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->callback_on_execute(session); -} - -static switch_status_t opalfs_on_hangup(switch_core_session_t *session) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->callback_on_hangup(session); -} - -static switch_status_t opalfs_on_loopback(switch_core_session_t *session) -{ - fs_obj_t* tech_prv = (fs_obj_t*)switch_core_session_get_private(session); - - return tech_prv->Connection->callback_on_loopback(session);; -} - -static switch_status_t opalfs_on_transmit(switch_core_session_t *session) -{ - return SWITCH_STATUS_SUCCESS; -} - - - - - - diff --git a/src/mod/endpoints/mod_opal/mod_opal.h b/src/mod/endpoints/mod_opal/mod_opal.h deleted file mode 100644 index 39a290f8e4..0000000000 --- a/src/mod/endpoints/mod_opal/mod_opal.h +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef __FREESWITCH_MOD_OPAL__ -#define __FREESWITCH_MOD_OPAL__ - -#define HAVE_APR -#include <switch.h> -#include <switch_version.h> -#define MODNAME "mod_opal" - - - -#endif /* __FREESWITCH_MOD_OPAL__ */ diff --git a/src/mod/endpoints/mod_opal/opal_h323.cxx b/src/mod/endpoints/mod_opal/opal_h323.cxx deleted file mode 100644 index d8dfe42c9f..0000000000 --- a/src/mod/endpoints/mod_opal/opal_h323.cxx +++ /dev/null @@ -1,59 +0,0 @@ - -#include "opal_h323.h" -#include "opal_h323con.h" - -FSH323EndPoint::FSH323EndPoint(OpalManager & manager) - :H323EndPoint(manager), UseH323ExternalRTP(TRUE) -{ - //if we have config option for using external rtp for h323, - //please set UseH323ExternalRTP to TRUE - - mediaformats+=OpalPCM16; - mediaformats+=OpalG711uLaw; - mediaformats+=OpalG711ALaw; - mediaformats+=OpalG711_ULAW_64K; - mediaformats+=OpalG711_ALAW_64K; - mediaformats+=OpalGSM0610; - mediaformats+=OpalPCM16_16KHZ; - mediaformats+=OPAL_G729; - mediaformats+=OPAL_G729A; - mediaformats+=OPAL_G729B; - mediaformats+=OPAL_G729AB; -} - -FSH323EndPoint::~FSH323EndPoint() -{ - -} - - -OpalMediaFormatList FSH323EndPoint::GetMediaFormats() const -{ - PTRACE(3, "GIMME MEDIA FORMAT"); - return mediaformats; -} - - -OpalConnection::AnswerCallResponse FSH323EndPoint::OnAnswerCall(OpalConnection & connection, - const PString & caller) -{ - return OpalConnection::AnswerCallPending; -} - - -H323Connection * FSH323EndPoint::CreateConnection(OpalCall & call, - const PString & token, - void * userData, - OpalTransport & transport, - const PString & alias, - const H323TransportAddress & address, - H323SignalPDU * setupPDU, - unsigned options, - OpalConnection::StringOptions * stringOptions) - -{ - if (UseH323ExternalRTP) - return new FSH323Connection(call, *this, token, alias, address, options); - - return new H323Connection(call, *this, token, alias, address, options); -} diff --git a/src/mod/endpoints/mod_opal/opal_h323.h b/src/mod/endpoints/mod_opal/opal_h323.h deleted file mode 100644 index 9d51952107..0000000000 --- a/src/mod/endpoints/mod_opal/opal_h323.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef __OPAL_H323_ENDPOINT__ -#define __OPAL_H323_ENDPOINT__ - -#include <ptlib.h> -#include <opal/buildopts.h> -#include <opal/endpoint.h> -#include <h323/h323ep.h> -#include <h323/h323con.h> -#include "opal_h323con.h" - - - -class FSH323EndPoint : public H323EndPoint -{ - PCLASSINFO(FSH323EndPoint, H323EndPoint); - public: - FSH323EndPoint(OpalManager & manager); - ~FSH323EndPoint(); - - virtual OpalConnection::AnswerCallResponse OnAnswerCall(OpalConnection & connection, - const PString & caller); - - virtual OpalMediaFormatList GetMediaFormats() const; - - H323Connection * CreateConnection(OpalCall & call, - const PString & token, - void * userData, - OpalTransport & transport, - const PString & alias, - const H323TransportAddress & address, - H323SignalPDU * setupPDU, - unsigned options, - OpalConnection::StringOptions * stringOptions); - - BOOL isExternalRTPEnabled(){return UseH323ExternalRTP;}; - - protected: - BOOL UseH323ExternalRTP; - OpalMediaFormatList mediaformats; -}; - - -#endif //__OPAL_H323_ENDPOINT__ diff --git a/src/mod/endpoints/mod_opal/opal_h323con.cxx b/src/mod/endpoints/mod_opal/opal_h323con.cxx deleted file mode 100644 index 15fe137cd8..0000000000 --- a/src/mod/endpoints/mod_opal/opal_h323con.cxx +++ /dev/null @@ -1,88 +0,0 @@ - -#include "opal_h323.h" -#include "opal_h323con.h" - - -FSExternalRTPChannel::FSExternalRTPChannel(H323Connection & connection, ///< Connection to endpoint for channel - const H323Capability & capability, ///< Capability channel is using - Directions direction, ///< Direction of channel - unsigned sessionID) ///< Session ID for channel) - - : H323_ExternalRTPChannel(connection, capability, direction, sessionID) -{ - PTRACE(3,"Creating External RTP Channel"); - - PIPSocket::Address addr("10.0.0.1"); - WORD port = 41004; - SetExternalAddress(H323TransportAddress(addr, port), H323TransportAddress(addr, port+1)); - - // get the payload code - PTRACE(3, "Channel Capability " << capability.GetFormatName()); - OpalMediaFormat format(capability.GetFormatName()); - payloadCode = format.GetPayloadType(); - - Start(); -} - -BOOL FSExternalRTPChannel::Start() -{ - if (!H323_ExternalRTPChannel::Start()) - return FALSE; - - PIPSocket::Address addr; - WORD port; - GetRemoteAddress(addr, port); - PTRACE(3, "External RTP Channel Started ::Start"); - - return TRUE; -} - - -FSH323Connection::FSH323Connection(OpalCall &call,FSH323EndPoint &endpoint, - const PString & token,const PString &alias, - const H323TransportAddress & address,unsigned options) - - :H323Connection(call,endpoint,token,alias,address,options) -{ - - -} - -FSH323Connection::~FSH323Connection() -{ - -} - -OpalMediaFormatList FSH323Connection::GetMediaFormats() -{ - OpalMediaFormatList mediaformats; - - mediaformats+=OpalPCM16; - mediaformats+=OpalG711uLaw; - mediaformats+=OpalG711ALaw; - mediaformats+=OpalG711_ULAW_64K; - mediaformats+=OpalG711_ALAW_64K; - mediaformats+=OpalGSM0610; - mediaformats+=OpalPCM16_16KHZ; - mediaformats+=OPAL_G729; - mediaformats+=OPAL_G729A; - mediaformats+=OPAL_G729B; - mediaformats+=OPAL_G729AB; - PTRACE(3, "RTP Channel Callback !"); - - return mediaformats; -} - -/* -H323Channel* FSH323Connection::CreateRealTimeLogicalChannel(const H323Capability & capability, - H323Channel::Directions dir, - unsigned sessionID, - const H245_H2250LogicalChannelParameters * param, - RTP_QOS * rtpqos) -{ - - PTRACE(3, "RTP Channel Callback !"); - //h323 external rtp can be set from here - return new FSExternalRTPChannel(*this, capability, dir, sessionID); -} -*/ diff --git a/src/mod/endpoints/mod_opal/opal_h323con.h b/src/mod/endpoints/mod_opal/opal_h323con.h deleted file mode 100644 index 695c63dd27..0000000000 --- a/src/mod/endpoints/mod_opal/opal_h323con.h +++ /dev/null @@ -1,51 +0,0 @@ - -#ifndef __OPAL_H323_CONNECTION__ -#define __OPAL_H323_CONNECTION__ - -#include "opal_h323.h" -#include "fsep.h" -#include "fsmanager.h" - -class FSH323EndPoint; - - -class FSExternalRTPChannel : public H323_ExternalRTPChannel -{ - PCLASSINFO(FSExternalRTPChannel, H323_ExternalRTPChannel); - public: - FSExternalRTPChannel(H323Connection & connection, ///< Connection to endpoint for channel - const H323Capability & capability, ///< Capability channel is using - Directions direction, ///< Direction of channel - unsigned sessionID ); ///< Session ID for channel - - virtual BOOL Start(); - - protected: - BYTE payloadCode; -}; - - -class FSH323Connection : public H323Connection -{ - PCLASSINFO(FSH323Connection, H323Connection); - public: - FSH323Connection(OpalCall &call, FSH323EndPoint &endpoint, - const PString & token,const PString &alias, - const H323TransportAddress & address,unsigned options = 0); - - //External H323 RTP - /* - H323Channel* CreateRealTimeLogicalChannel(const H323Capability & capability, - H323Channel::Directions dir, - unsigned sessionID, - const H245_H2250LogicalChannelParameters * param, - RTP_QOS * rtpqos); - */ - - virtual OpalMediaFormatList GetMediaFormats(); - - ~FSH323Connection(); - -}; - -#endif // __FREESWITCH_H323_CONNECTION__ diff --git a/src/mod/endpoints/mod_opal/opal_sip.cxx b/src/mod/endpoints/mod_opal/opal_sip.cxx deleted file mode 100644 index 6d6ee4bd0a..0000000000 --- a/src/mod/endpoints/mod_opal/opal_sip.cxx +++ /dev/null @@ -1,42 +0,0 @@ - -#include "opal_sip.h" - -FSSIPEndPoint::FSSIPEndPoint(OpalManager & manager) - :SIPEndPoint(manager) -{ - -} - -FSSIPEndPoint::~FSSIPEndPoint() -{ - -} - -BOOL FSSIPEndPoint::OnIncomingConnection (OpalConnection &connection) -{ - const char *destination = connection.GetCalledDestinationNumber(); - - - PTRACE(3, "FSSIPEndPoint: Answering Incomming Call "<< "' To '" << destination << "'"); - - GetManager().MakeConnection(connection.GetCall(), "fs:", (void *) destination); - - return TRUE; -} - -OpalConnection::AnswerCallResponse FSSIPEndPoint::OnAnswerCall(OpalConnection & connection, - const PString & caller) -{ - const char *destination = connection.GetCalledDestinationNumber(); - - - PTRACE(3, "FSSIPEndPoint: Answering Incomming Call from '" << caller << "' To '" << destination << "'"); - - //OpalManager &manager = connection.GetEndPoint().GetManager(); - //OpalCall & call = connection.GetCall(); - - - //manager.MakeConnection(call, "fs", (void *) destination); - - return OpalConnection::AnswerCallPending; -} diff --git a/src/mod/endpoints/mod_opal/opal_sip.h b/src/mod/endpoints/mod_opal/opal_sip.h deleted file mode 100644 index 85061b1875..0000000000 --- a/src/mod/endpoints/mod_opal/opal_sip.h +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef __OPAL_SIP_ENDPOINT__ -#define __OPAL_SIP_ENDPOINT__ - -#include <ptlib.h> -#include <opal/buildopts.h> -#include <opal/endpoint.h> -#include <sip/sipep.h> - - - -class FSSIPEndPoint : public SIPEndPoint -{ - PCLASSINFO(FSSIPEndPoint, SIPEndPoint); - public: - FSSIPEndPoint(OpalManager & manager); - ~FSSIPEndPoint(); - - virtual BOOL OnIncomingConnection (OpalConnection &connection); - virtual OpalConnection::AnswerCallResponse OnAnswerCall(OpalConnection & connection, - const PString & caller); -}; - - -#endif //__OPAL_SIP_ENDPOINT__