25 #ifndef OPAL_EP_LYNCEP_H
26 #define OPAL_EP_LYNCEP_H
46 struct PlatformParams {
47 std::string m_localHost;
50 std::string m_certificateFriendlyName;
51 PlatformParams() : m_localPort(5061) { }
53 Platform * CreatePlatform(
const char * userAgent,
const PlatformParams & params);
54 Platform * CreatePlatform(
const char * userAgent,
const char * provisioningID);
55 Platform * CreatePlatform(
const char * userAgent);
56 bool DestroyPlatform(Platform * & platform);
58 struct ApplicationEndpoint;
59 struct ApplicationParams {
60 std::string m_ownerURI;
61 std::string m_proxyHost;
63 bool m_defaultRoutingEndpoint;
64 bool m_publicisePresence;
65 ApplicationParams() : m_proxyPort(0), m_defaultRoutingEndpoint(false), m_publicisePresence(true) { }
67 ApplicationEndpoint * CreateApplicationEndpoint(Platform & platform,
const ApplicationParams & params);
68 void DestroyApplicationEndpoint(ApplicationEndpoint * & app);
71 UserEndpoint * CreateUserEndpoint(Platform & platform,
73 const char * password,
76 void DestroyUserEndpoint(UserEndpoint * & user);
79 Conversation * CreateConversation(ApplicationEndpoint & aep,
const char * uri,
const char * phone,
const char * display);
80 Conversation * CreateConversation(UserEndpoint & uep);
81 void DestroyConversation(Conversation * & conv);
83 struct AudioVideoCall;
84 AudioVideoCall * CreateAudioVideoCall(Conversation & conv,
const char * uri);
85 bool AcceptAudioVideoCall(AudioVideoCall & call);
86 bool ForwardAudioVideoCall(AudioVideoCall & call,
const char * targetURI);
87 bool TransferAudioVideoCall(AudioVideoCall & call,
const char * targetURI);
88 bool TransferAudioVideoCall(AudioVideoCall & call, AudioVideoCall & target,
int delayMillis);
89 void DestroyAudioVideoCall(AudioVideoCall * & call);
91 struct AudioVideoFlow;
92 AudioVideoFlow * CreateAudioVideoFlow(AudioVideoCall & call);
93 void DestroyAudioVideoFlow(AudioVideoFlow * & flow);
95 struct SpeechRecognitionConnector;
96 SpeechRecognitionConnector * CreateSpeechRecognitionConnector(AudioVideoFlow & flow);
97 void DestroySpeechRecognitionConnector(SpeechRecognitionConnector * & connector);
99 struct ToneController;
100 ToneController * CreateToneController(AudioVideoFlow & flow);
101 bool SendTone(ToneController & toneController,
int toneId);
102 void DestroyToneController(ToneController * & toneController);
104 struct SpeechSynthesisConnector;
105 SpeechSynthesisConnector * CreateSpeechSynthesisConnector(AudioVideoFlow & flow);
106 void DestroySpeechSynthesisConnector(SpeechSynthesisConnector * & connector);
108 struct AudioVideoStream;
109 AudioVideoStream * CreateAudioVideoStream(SpeechRecognitionConnector & connector);
110 AudioVideoStream * CreateAudioVideoStream(SpeechSynthesisConnector & connector);
111 int ReadAudioVideoStream(AudioVideoStream & stream,
unsigned char * data,
int size);
112 int WriteAudioVideoStream(AudioVideoStream & stream,
const unsigned char * data,
int length);
113 void DestroyAudioVideoStream(SpeechRecognitionConnector & connector, AudioVideoStream * & stream);
114 void DestroyAudioVideoStream(SpeechSynthesisConnector & connector, AudioVideoStream * & stream);
116 static int const CallStateEstablishing;
117 static int const CallStateEstablished;
118 static int const CallStateTerminating;
120 static std::string GetCallStateName(
int callState);
121 static std::string GetTransferStateName(
int transferState);
122 static std::string GetToneIdName(
int toneId);
125 static int const MediaFlowActive;
127 static std::string GetMediaFlowName(
int mediaFlow);
130 struct IncomingLyncCallInfo {
131 AudioVideoCall * m_call;
132 const char * m_remoteUri;
133 const char * m_displayName;
134 const char * m_destinationUri;
135 const char * m_transferredBy;
137 virtual void OnIncomingLyncCall(
const IncomingLyncCallInfo & ) { }
138 virtual void OnLyncCallStateChanged(
int ,
int ) { }
139 virtual void OnLyncCallEstablished() { }
140 virtual void OnLyncCallFailed(
const std::string & ) { }
141 virtual void OnLyncCallTransferReceived(
const std::string & ,
const std::string & ) { }
142 virtual void OnLyncCallTransferStateChanged(
int ,
int ) { }
143 virtual void OnLyncCallToneReceived(
int ,
float ) { }
144 virtual void OnLyncCallIncomingFaxDetected() { }
145 virtual void OnMediaFlowStateChanged(
int ,
int ) { }
146 virtual bool OnApplicationProvisioning(ApplicationEndpoint * aep);
148 const std::string & GetLastError()
const {
return m_lastError; }
152 virtual void OnTraceOutput(
unsigned level,
const char * file,
unsigned line,
const char * out) = 0;
156 struct Notifications;
157 Notifications * m_allocatedNotifications;
158 Notifications & m_notifications;
159 std::string m_lastError;
163 #ifndef OPAL_LYNC_SHIM
171 class OpalLyncConnection;
174 class OpalLyncShimBase :
public OpalLyncShim
177 virtual void OnTraceOutput(
unsigned level,
const char * file,
unsigned line,
const char * out)
override;
180 typedef OpalLyncShim OpalLyncShimBase;
186 class OpalLyncEndPoint :
public OpalEndPoint,
public OpalLyncShimBase
196 const char *prefix =
"lync"
201 virtual ~OpalLyncEndPoint();
250 const PString & party,
252 unsigned int options,
266 const PString & provisioningID
270 bool RegisterApplication(
271 const PlatformParams & platformParams,
272 const ApplicationParams & appParams
276 ApplicationEndpoint * GetRegisteredApplication()
const {
return m_applicationRegistration; }
289 PString RegisterUser(
290 const UserParams & info
299 UserEndpoint * GetRegisteredUser(
304 PStringArray GetRegisteredUsers()
const;
311 virtual OpalLyncConnection * CreateConnection(
314 unsigned int options,
319 void AdjustLyncURI(PString & uri);
322 const PTimeInterval & GetTransferDelay()
const {
return m_transferDelay; }
325 virtual bool OnApplicationProvisioning(ApplicationEndpoint * aep);
326 virtual void OnIncomingLyncCall(
const IncomingLyncCallInfo & info)
override;
328 Platform * m_platform;
329 ApplicationEndpoint * m_applicationRegistration;
331 typedef std::map<PString, UserEndpoint *> RegistrationMap;
332 RegistrationMap m_registrations;
333 PDECLARE_MUTEX( m_registrationMutex);
335 PTimeInterval m_transferDelay;
341 class OpalLyncConnection :
public OpalConnection,
public OpalLyncShimBase
351 OpalLyncEndPoint & ep,
408 const PString & calleeName,
426 const PString & forwardParty
436 const PString & remoteParty
452 unsigned duration = 0
474 void SetUpIncomingLyncCall(
const IncomingLyncCallInfo & info);
479 Conversation * m_conversation;
480 AudioVideoCall * m_audioVideoCall;
481 AudioVideoFlow * m_flow;
482 ToneController * m_toneController;
485 virtual void OnLyncCallStateChanged(
int previousState,
int newState)
override;
486 virtual void OnLyncCallEstablished()
override;
487 virtual void OnLyncCallFailed(
const std::string & error)
override;
488 virtual void OnLyncCallTransferReceived(
const std::string & transferDestination,
const std::string & tansferredBy)
override;
489 virtual void OnLyncCallTransferStateChanged(
int previousState,
int newState)
override;
490 virtual void OnLyncCallToneReceived(
int toneId,
float volume)
override;
491 virtual void OnLyncCallIncomingFaxDetected()
override;
492 virtual void OnMediaFlowStateChanged(
int previousState,
int newState)
override;
494 PString InternalConvertLyncURI(
const PString & uri)
const;
496 friend class OpalLyncMediaStream;
502 class OpalLyncMediaStream :
public OpalMediaStream,
public OpalLyncShimBase
511 OpalLyncConnection & conn,
518 ~OpalLyncMediaStream();
528 virtual PBoolean
Open();
562 SpeechRecognitionConnector * m_inputConnector;
563 SpeechSynthesisConnector * m_outputConnector;
564 AudioVideoStream * m_avStream;
565 PBYTEArray m_silence;
570 #endif // OPAL_LYNC_INTERNAL
574 #endif // OPAL_EP_LYNCEP_H
virtual void OnReleased()
virtual OpalMediaFormatList GetMediaFormats() const =0
Definition: manager.h:150
Definition: endpoint.h:65
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
virtual PBoolean ForwardCall(const PString &forwardParty)
virtual PBoolean SendUserInputTone(char tone, unsigned duration=0)
virtual PBoolean SetConnected()
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData=NULL, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)=0
OpalEndPoint & m_endpoint
Definition: connection.h:1961
Definition: connection.h:530
virtual bool TransferConnection(const PString &remoteParty)
virtual PBoolean SetAlerting(const PString &calleeName, PBoolean withMedia)
virtual PBoolean SetUpConnection()
virtual bool IsNetworkConnection() const =0
Definition: connection.h:415
virtual PBoolean GarbageCollection()
virtual OpalMediaFormatList GetMediaFormats() const