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 19
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 OpalCmdAlerting,
00382 OpalMessageTypeCount
00383 } OpalMessageType;
00384
00385
00389 typedef enum OpalSilenceDetectMode {
00390 OpalSilenceDetectNoChange,
00391 OpalSilenceDetectDisabled,
00392 OpalSilenceDetectFixed,
00393 OpalSilenceDetectAdaptive
00394 } OpalSilenceDetectMode;
00395
00396
00400 typedef enum OpalEchoCancelMode {
00401 OpalEchoCancelNoChange,
00402 OpalEchoCancelDisabled,
00403 OpalEchoCancelEnabled
00404 } OpalEchoCancelMode;
00405
00406
00414 typedef int (*OpalMediaDataFunction)(
00415 const char * token,
00417 const char * stream,
00421 const char * format,
00422 void * userData,
00423 void * data,
00424 int size
00425 );
00426
00427
00444 typedef int (*OpalMessageAvailableFunction)(
00445 const OpalMessage * message
00446 );
00447
00448
00452 typedef enum OpalMediaDataType {
00453 OpalMediaDataNoChange,
00454 OpalMediaDataPayloadOnly,
00456 OpalMediaDataWithHeader
00458 } OpalMediaDataType;
00459
00460
00474 typedef struct OpalParamGeneral {
00475 const char * m_audioRecordDevice;
00476 const char * m_audioPlayerDevice;
00477 const char * m_videoInputDevice;
00478 const char * m_videoOutputDevice;
00479 const char * m_videoPreviewDevice;
00480 const char * m_mediaOrder;
00483 const char * m_mediaMask;
00486 const char * m_autoRxMedia;
00488 const char * m_autoTxMedia;
00490 const char * m_natRouter;
00492 const char * m_stunServer;
00494 unsigned m_tcpPortBase;
00496 unsigned m_tcpPortMax;
00498 unsigned m_udpPortBase;
00500 unsigned m_udpPortMax;
00502 unsigned m_rtpPortBase;
00504 unsigned m_rtpPortMax;
00506 unsigned m_rtpTypeOfService;
00508 unsigned m_rtpMaxPayloadSize;
00510 unsigned m_minAudioJitter;
00514 unsigned m_maxAudioJitter;
00518 OpalSilenceDetectMode m_silenceDetectMode;
00521 unsigned m_silenceThreshold;
00523 unsigned m_signalDeadband;
00525 unsigned m_silenceDeadband;
00527 unsigned m_silenceAdaptPeriod;
00530 OpalEchoCancelMode m_echoCancellation;
00532 unsigned m_audioBuffers;
00535 OpalMediaDataFunction m_mediaReadData;
00537 OpalMediaDataFunction m_mediaWriteData;
00539 OpalMediaDataType m_mediaDataHeader;
00542 OpalMessageAvailableFunction m_messageAvailable;
00546 const char * m_mediaOptions;
00553 unsigned m_audioBufferTime;
00556 unsigned m_manualAlerting;
00562 } OpalParamGeneral;
00563
00564
00567 typedef struct OpalProductDescription {
00568 const char * m_vendor;
00571 const char * m_name;
00574 const char * m_version;
00577 unsigned m_t35CountryCode;
00582 unsigned m_t35Extension;
00587 unsigned m_manufacturerCode;
00593 } OpalProductDescription;
00594
00595
00610 typedef struct OpalParamProtocol {
00611 const char * m_prefix;
00614 const char * m_userName;
00617 const char * m_displayName;
00619 OpalProductDescription m_product;
00620 const char * m_interfaceAddresses;
00625 } OpalParamProtocol;
00626
00627
00628 #define OPAL_MWI_EVENT_PACKAGE "message-summary"
00629 #define OPAL_LINE_APPEARANCE_EVENT_PACKAGE "dialog;sla;ma"
00630
00690 typedef struct OpalParamRegistration {
00691 const char * m_protocol;
00693 const char * m_identifier;
00699 const char * m_hostName;
00703 const char * m_authUserName;
00704 const char * m_password;
00705 const char * m_adminEntity;
00708 unsigned m_timeToLive;
00710 unsigned m_restoreTime;
00713 const char * m_eventPackage;
00721 } OpalParamRegistration;
00722
00723
00727 typedef enum OpalRegistrationStates {
00728 OpalRegisterSuccessful,
00729 OpalRegisterRemoved,
00733 OpalRegisterFailed,
00735 OpalRegisterRetrying,
00737 OpalRegisterRestored,
00738 } OpalRegistrationStates;
00739
00740
00744 typedef struct OpalStatusRegistration {
00745 const char * m_protocol;
00747 const char * m_serverName;
00750 const char * m_error;
00754 OpalRegistrationStates m_status;
00755 OpalProductDescription m_product;
00756 } OpalStatusRegistration;
00757
00758
00793 typedef struct OpalParamSetUpCall {
00794 const char * m_partyA;
00808 const char * m_partyB;
00820 const char * m_callToken;
00825 const char * m_alertingType;
00844 const char * m_protocolCallId;
00847 } OpalParamSetUpCall;
00848
00849
00853 typedef struct OpalStatusIncomingCall {
00854 const char * m_callToken;
00855 const char * m_localAddress;
00856 const char * m_remoteAddress;
00857 const char * m_remotePartyNumber;
00858 const char * m_remoteDisplayName;
00859 const char * m_calledAddress;
00860 const char * m_calledPartyNumber;
00861 OpalProductDescription m_product;
00862 const char * m_alertingType;
00874 const char * m_protocolCallId;
00876 } OpalStatusIncomingCall;
00877
00878
00883 typedef enum OpalMediaStates {
00884 OpalMediaStateNoChange,
00885 OpalMediaStateOpen,
00887 OpalMediaStateClose,
00889 OpalMediaStatePause,
00891 OpalMediaStateResume
00893 } OpalMediaStates;
00894
00895
00902 typedef struct OpalStatusMediaStream {
00903 const char * m_callToken;
00904 const char * m_identifier;
00907 const char * m_type;
00912 const char * m_format;
00916 OpalMediaStates m_state;
00919 } OpalStatusMediaStream;
00920
00921
00924 typedef struct OpalParamSetUserData {
00925 const char * m_callToken;
00926 void * m_userData;
00927 } OpalParamSetUserData;
00928
00929
00935 typedef struct OpalStatusUserInput {
00936 const char * m_callToken;
00937 const char * m_userInput;
00938 unsigned m_duration;
00943 } OpalStatusUserInput;
00944
00945
00949 typedef struct OpalStatusMessageWaiting {
00950 const char * m_party;
00951 const char * m_type;
00952 const char * m_extraInfo;
00955 } OpalStatusMessageWaiting;
00956
00957
00962 typedef enum OpalLineAppearanceStates {
00963 OpalLineTerminated,
00964 OpalLineTrying,
00965 OpalLineProceeding,
00966 OpalLineRinging,
00967 OpalLineConnected,
00968 OpalLineSubcribed,
00969 OpalLineUnsubcribed,
00971 OpalLineIdle = OpalLineTerminated
00972 } OpalLineAppearanceStates;
00973
00974
00978 typedef struct OpalStatusLineAppearance {
00979 const char * m_line;
00980 OpalLineAppearanceStates m_state;
00981 int m_appearance;
00984 const char * m_callId;
00988 const char * m_partyA;
00989 const char * m_partyB;
00990 } OpalStatusLineAppearance;
00991
00992
00995 typedef struct OpalParamRecording {
00996 const char * m_callToken;
00997 const char * m_file;
00999 unsigned m_channels;
01002 } OpalParamRecording;
01003
01004
01008 typedef struct OpalStatusCallCleared {
01009 const char * m_callToken;
01010 const char * m_reason;
01015 } OpalStatusCallCleared;
01016
01017
01022 typedef enum OpalCallEndReason {
01023 OpalCallEndedByLocalUser,
01024 OpalCallEndedByNoAccept,
01025 OpalCallEndedByAnswerDenied,
01026 OpalCallEndedByRemoteUser,
01027 OpalCallEndedByRefusal,
01028 OpalCallEndedByNoAnswer,
01029 OpalCallEndedByCallerAbort,
01030 OpalCallEndedByTransportFail,
01031 OpalCallEndedByConnectFail,
01032 OpalCallEndedByGatekeeper,
01033 OpalCallEndedByNoUser,
01034 OpalCallEndedByNoBandwidth,
01035 OpalCallEndedByCapabilityExchange,
01036 OpalCallEndedByCallForwarded,
01037 OpalCallEndedBySecurityDenial,
01038 OpalCallEndedByLocalBusy,
01039 OpalCallEndedByLocalCongestion,
01040 OpalCallEndedByRemoteBusy,
01041 OpalCallEndedByRemoteCongestion,
01042 OpalCallEndedByUnreachable,
01043 OpalCallEndedByNoEndPoint,
01044 OpalCallEndedByHostOffline,
01045 OpalCallEndedByTemporaryFailure,
01046 OpalCallEndedByQ931Cause,
01047 OpalCallEndedByDurationLimit,
01048 OpalCallEndedByInvalidConferenceID,
01049 OpalCallEndedByNoDialTone,
01050 OpalCallEndedByNoRingBackTone,
01051 OpalCallEndedByOutOfService,
01052 OpalCallEndedByAcceptingCallWaiting,
01053 OpalCallEndedWithQ931Code = 0x100
01054 } OpalCallEndReason;
01055
01056
01059 typedef struct OpalParamCallCleared {
01060 const char * m_callToken;
01061 OpalCallEndReason m_reason;
01063 } OpalParamCallCleared;
01064
01065
01069 struct OpalMessage {
01070 OpalMessageType m_type;
01071 union {
01072 const char * m_commandError;
01073 OpalParamGeneral m_general;
01074 OpalParamProtocol m_protocol;
01075 OpalParamRegistration m_registrationInfo;
01076 OpalStatusRegistration m_registrationStatus;
01077 OpalParamSetUpCall m_callSetUp;
01078 const char * m_callToken;
01079 OpalStatusIncomingCall m_incomingCall;
01080 OpalStatusUserInput m_userInput;
01081 OpalStatusMessageWaiting m_messageWaiting;
01082 OpalStatusLineAppearance m_lineAppearance;
01083 OpalStatusCallCleared m_callCleared;
01084 OpalParamCallCleared m_clearCall;
01085 OpalStatusMediaStream m_mediaStream;
01086 OpalParamSetUserData m_setUserData;
01087 OpalParamRecording m_recording;
01088 } m_param;
01089 };
01090
01091
01092 #ifdef __cplusplus
01093 };
01094 #endif
01095
01096 #endif // OPAL_OPAL_H
01097
01098