00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef OPAL_OPAL_H
00035 #define OPAL_OPAL_H
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00058 #ifdef _WIN32
00059 #define OPAL_EXPORT __stdcall
00060 #else
00061 #define OPAL_EXPORT
00062 #endif
00063
00064 typedef struct OpalHandleStruct * OpalHandle;
00065
00066 typedef struct OpalMessage OpalMessage;
00067
00068
00069 #define OPAL_C_API_VERSION 18
00070
00071
00073
00122 OpalHandle OPAL_EXPORT OpalInitialise(unsigned * version, const char * options);
00123
00127 #define OPAL_INITIALISE_FUNCTION "OpalInitialise"
00128
00132 typedef OpalHandle (OPAL_EXPORT *OpalInitialiseFunction)(unsigned * version, const char * options);
00133
00134
00136
00143 void OPAL_EXPORT OpalShutDown(OpalHandle opal);
00144
00148 #define OPAL_SHUTDOWN_FUNCTION "OpalShutDown"
00149
00153 typedef void (OPAL_EXPORT *OpalShutDownFunction)(OpalHandle opal);
00154
00155
00157
00192 OpalMessage * OPAL_EXPORT OpalGetMessage(OpalHandle opal, unsigned timeout);
00193
00197 #define OPAL_GET_MESSAGE_FUNCTION "OpalGetMessage"
00198
00202 typedef OpalMessage * (OPAL_EXPORT *OpalGetMessageFunction)(OpalHandle opal, unsigned timeout);
00203
00204
00206
00245 OpalMessage * OPAL_EXPORT OpalSendMessage(OpalHandle opal, const OpalMessage * message);
00246
00250 typedef OpalMessage * (OPAL_EXPORT *OpalSendMessageFunction)(OpalHandle opal, const OpalMessage * message);
00251
00255 #define OPAL_SEND_MESSAGE_FUNCTION "OpalSendMessage"
00256
00257
00259
00263 void OPAL_EXPORT OpalFreeMessage(OpalMessage * message);
00264
00268 #define OPAL_FREE_MESSAGE_FUNCTION "OpalFreeMessage"
00269
00273 typedef void (OPAL_EXPORT *OpalFreeMessageFunction)(OpalMessage * message);
00274
00275
00277
00278 #define OPAL_PREFIX_H323 "h323"
00279 #define OPAL_PREFIX_SIP "sip"
00280 #define OPAL_PREFIX_IAX2 "iax2"
00281 #define OPAL_PREFIX_PCSS "pc"
00282 #define OPAL_PREFIX_LOCAL "local"
00283 #define OPAL_PREFIX_POTS "pots"
00284 #define OPAL_PREFIX_PSTN "pstn"
00285 #define OPAL_PREFIX_IVR "ivr"
00286
00287 #define OPAL_PREFIX_ALL OPAL_PREFIX_H323 " " \
00288 OPAL_PREFIX_SIP " " \
00289 OPAL_PREFIX_IAX2 " " \
00290 OPAL_PREFIX_PCSS " " \
00291 OPAL_PREFIX_LOCAL " " \
00292 OPAL_PREFIX_POTS " " \
00293 OPAL_PREFIX_PSTN " " \
00294 OPAL_PREFIX_IVR
00295
00296
00299 typedef enum OpalMessageType {
00300 OpalIndCommandError,
00303 OpalCmdSetGeneralParameters,
00305 OpalCmdSetProtocolParameters,
00308 OpalCmdRegistration,
00312 OpalIndRegistration,
00317 OpalCmdSetUpCall,
00321 OpalIndIncomingCall,
00324 OpalCmdAnswerCall,
00328 OpalCmdClearCall,
00333 OpalIndAlerting,
00337 OpalIndEstablished,
00341 OpalIndUserInput,
00344 OpalIndCallCleared,
00347 OpalCmdHoldCall,
00349 OpalCmdRetrieveCall,
00351 OpalCmdTransferCall,
00354 OpalCmdUserInput,
00356 OpalIndMessageWaiting,
00359 OpalIndMediaStream,
00362 OpalCmdMediaStream,
00364 OpalCmdSetUserData,
00365 OpalIndLineAppearance,
00368 OpalCmdStartRecording,
00370 OpalCmdStopRecording,
00372 OpalIndProceeding,
00380 OpalMessageTypeCount
00381 } OpalMessageType;
00382
00383
00387 typedef enum OpalSilenceDetectMode {
00388 OpalSilenceDetectNoChange,
00389 OpalSilenceDetectDisabled,
00390 OpalSilenceDetectFixed,
00391 OpalSilenceDetectAdaptive
00392 } OpalSilenceDetectMode;
00393
00394
00398 typedef enum OpalEchoCancelMode {
00399 OpalEchoCancelNoChange,
00400 OpalEchoCancelDisabled,
00401 OpalEchoCancelEnabled
00402 } OpalEchoCancelMode;
00403
00404
00412 typedef int (*OpalMediaDataFunction)(
00413 const char * token,
00415 const char * stream,
00419 const char * format,
00420 void * userData,
00421 void * data,
00422 int size
00423 );
00424
00425
00442 typedef int (*OpalMessageAvailableFunction)(
00443 const OpalMessage * message
00444 );
00445
00446
00450 typedef enum OpalMediaDataType {
00451 OpalMediaDataNoChange,
00452 OpalMediaDataPayloadOnly,
00454 OpalMediaDataWithHeader
00456 } OpalMediaDataType;
00457
00458
00472 typedef struct OpalParamGeneral {
00473 const char * m_audioRecordDevice;
00474 const char * m_audioPlayerDevice;
00475 const char * m_videoInputDevice;
00476 const char * m_videoOutputDevice;
00477 const char * m_videoPreviewDevice;
00478 const char * m_mediaOrder;
00481 const char * m_mediaMask;
00484 const char * m_autoRxMedia;
00486 const char * m_autoTxMedia;
00488 const char * m_natRouter;
00490 const char * m_stunServer;
00492 unsigned m_tcpPortBase;
00494 unsigned m_tcpPortMax;
00496 unsigned m_udpPortBase;
00498 unsigned m_udpPortMax;
00500 unsigned m_rtpPortBase;
00502 unsigned m_rtpPortMax;
00504 unsigned m_rtpTypeOfService;
00506 unsigned m_rtpMaxPayloadSize;
00508 unsigned m_minAudioJitter;
00512 unsigned m_maxAudioJitter;
00516 OpalSilenceDetectMode m_silenceDetectMode;
00519 unsigned m_silenceThreshold;
00521 unsigned m_signalDeadband;
00523 unsigned m_silenceDeadband;
00525 unsigned m_silenceAdaptPeriod;
00528 OpalEchoCancelMode m_echoCancellation;
00530 unsigned m_audioBuffers;
00531 OpalMediaDataFunction m_mediaReadData;
00533 OpalMediaDataFunction m_mediaWriteData;
00535 OpalMediaDataType m_mediaDataHeader;
00538 OpalMessageAvailableFunction m_messageAvailable;
00542 const char * m_mediaOptions;
00549 } OpalParamGeneral;
00550
00551
00554 typedef struct OpalProductDescription {
00555 const char * m_vendor;
00558 const char * m_name;
00561 const char * m_version;
00564 unsigned m_t35CountryCode;
00569 unsigned m_t35Extension;
00574 unsigned m_manufacturerCode;
00580 } OpalProductDescription;
00581
00582
00597 typedef struct OpalParamProtocol {
00598 const char * m_prefix;
00601 const char * m_userName;
00604 const char * m_displayName;
00606 OpalProductDescription m_product;
00607 const char * m_interfaceAddresses;
00612 } OpalParamProtocol;
00613
00614
00615 #define OPAL_MWI_EVENT_PACKAGE "message-summary"
00616 #define OPAL_LINE_APPEARANCE_EVENT_PACKAGE "dialog;sla;ma"
00617
00677 typedef struct OpalParamRegistration {
00678 const char * m_protocol;
00680 const char * m_identifier;
00686 const char * m_hostName;
00690 const char * m_authUserName;
00691 const char * m_password;
00692 const char * m_adminEntity;
00695 unsigned m_timeToLive;
00697 unsigned m_restoreTime;
00700 const char * m_eventPackage;
00708 } OpalParamRegistration;
00709
00710
00714 typedef enum OpalRegistrationStates {
00715 OpalRegisterSuccessful,
00716 OpalRegisterRemoved,
00720 OpalRegisterFailed,
00722 OpalRegisterRetrying,
00724 OpalRegisterRestored,
00725 } OpalRegistrationStates;
00726
00727
00731 typedef struct OpalStatusRegistration {
00732 const char * m_protocol;
00734 const char * m_serverName;
00737 const char * m_error;
00741 OpalRegistrationStates m_status;
00742 OpalProductDescription m_product;
00743 } OpalStatusRegistration;
00744
00745
00780 typedef struct OpalParamSetUpCall {
00781 const char * m_partyA;
00795 const char * m_partyB;
00807 const char * m_callToken;
00812 const char * m_alertingType;
00831 const char * m_protocolCallId;
00834 } OpalParamSetUpCall;
00835
00836
00840 typedef struct OpalStatusIncomingCall {
00841 const char * m_callToken;
00842 const char * m_localAddress;
00843 const char * m_remoteAddress;
00844 const char * m_remotePartyNumber;
00845 const char * m_remoteDisplayName;
00846 const char * m_calledAddress;
00847 const char * m_calledPartyNumber;
00848 OpalProductDescription m_product;
00849 const char * m_alertingType;
00861 const char * m_protocolCallId;
00863 } OpalStatusIncomingCall;
00864
00865
00870 typedef enum OpalMediaStates {
00871 OpalMediaStateNoChange,
00872 OpalMediaStateOpen,
00874 OpalMediaStateClose,
00876 OpalMediaStatePause,
00878 OpalMediaStateResume
00880 } OpalMediaStates;
00881
00882
00889 typedef struct OpalStatusMediaStream {
00890 const char * m_callToken;
00891 const char * m_identifier;
00894 const char * m_type;
00899 const char * m_format;
00903 OpalMediaStates m_state;
00906 } OpalStatusMediaStream;
00907
00908
00911 typedef struct OpalParamSetUserData {
00912 const char * m_callToken;
00913 void * m_userData;
00914 } OpalParamSetUserData;
00915
00916
00922 typedef struct OpalStatusUserInput {
00923 const char * m_callToken;
00924 const char * m_userInput;
00925 unsigned m_duration;
00930 } OpalStatusUserInput;
00931
00932
00936 typedef struct OpalStatusMessageWaiting {
00937 const char * m_party;
00938 const char * m_type;
00939 const char * m_extraInfo;
00942 } OpalStatusMessageWaiting;
00943
00944
00949 typedef enum OpalLineAppearanceStates {
00950 OpalLineTerminated,
00951 OpalLineTrying,
00952 OpalLineProceeding,
00953 OpalLineRinging,
00954 OpalLineConnected,
00955 OpalLineSubcribed,
00956 OpalLineUnsubcribed,
00958 OpalLineIdle = OpalLineTerminated
00959 } OpalLineAppearanceStates;
00960
00961
00965 typedef struct OpalStatusLineAppearance {
00966 const char * m_line;
00967 OpalLineAppearanceStates m_state;
00968 int m_appearance;
00971 const char * m_callId;
00975 const char * m_partyA;
00976 const char * m_partyB;
00977 } OpalStatusLineAppearance;
00978
00979
00982 typedef struct OpalParamRecording {
00983 const char * m_callToken;
00984 const char * m_file;
00986 unsigned m_channels;
00989 } OpalParamRecording;
00990
00991
00995 typedef struct OpalStatusCallCleared {
00996 const char * m_callToken;
00997 const char * m_reason;
01002 } OpalStatusCallCleared;
01003
01004
01009 typedef enum OpalCallEndReason {
01010 OpalCallEndedByLocalUser,
01011 OpalCallEndedByNoAccept,
01012 OpalCallEndedByAnswerDenied,
01013 OpalCallEndedByRemoteUser,
01014 OpalCallEndedByRefusal,
01015 OpalCallEndedByNoAnswer,
01016 OpalCallEndedByCallerAbort,
01017 OpalCallEndedByTransportFail,
01018 OpalCallEndedByConnectFail,
01019 OpalCallEndedByGatekeeper,
01020 OpalCallEndedByNoUser,
01021 OpalCallEndedByNoBandwidth,
01022 OpalCallEndedByCapabilityExchange,
01023 OpalCallEndedByCallForwarded,
01024 OpalCallEndedBySecurityDenial,
01025 OpalCallEndedByLocalBusy,
01026 OpalCallEndedByLocalCongestion,
01027 OpalCallEndedByRemoteBusy,
01028 OpalCallEndedByRemoteCongestion,
01029 OpalCallEndedByUnreachable,
01030 OpalCallEndedByNoEndPoint,
01031 OpalCallEndedByHostOffline,
01032 OpalCallEndedByTemporaryFailure,
01033 OpalCallEndedByQ931Cause,
01034 OpalCallEndedByDurationLimit,
01035 OpalCallEndedByInvalidConferenceID,
01036 OpalCallEndedByNoDialTone,
01037 OpalCallEndedByNoRingBackTone,
01038 OpalCallEndedByOutOfService,
01039 OpalCallEndedByAcceptingCallWaiting,
01040 OpalCallEndedWithQ931Code = 0x100
01041 } OpalCallEndReason;
01042
01043
01046 typedef struct OpalParamCallCleared {
01047 const char * m_callToken;
01048 OpalCallEndReason m_reason;
01050 } OpalParamCallCleared;
01051
01052
01056 struct OpalMessage {
01057 OpalMessageType m_type;
01058 union {
01059 const char * m_commandError;
01060 OpalParamGeneral m_general;
01061 OpalParamProtocol m_protocol;
01062 OpalParamRegistration m_registrationInfo;
01063 OpalStatusRegistration m_registrationStatus;
01064 OpalParamSetUpCall m_callSetUp;
01065 const char * m_callToken;
01066 OpalStatusIncomingCall m_incomingCall;
01067 OpalStatusUserInput m_userInput;
01068 OpalStatusMessageWaiting m_messageWaiting;
01069 OpalStatusLineAppearance m_lineAppearance;
01070 OpalStatusCallCleared m_callCleared;
01071 OpalParamCallCleared m_clearCall;
01072 OpalStatusMediaStream m_mediaStream;
01073 OpalParamSetUserData m_setUserData;
01074 OpalParamRecording m_recording;
01075 } m_param;
01076 };
01077
01078
01079 #ifdef __cplusplus
01080 };
01081 #endif
01082
01083 #endif // OPAL_OPAL_H
01084
01085