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 16
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;
00830 } OpalParamSetUpCall;
00831
00832
00836 typedef struct OpalStatusIncomingCall {
00837 const char * m_callToken;
00838 const char * m_localAddress;
00839 const char * m_remoteAddress;
00840 const char * m_remotePartyNumber;
00841 const char * m_remoteDisplayName;
00842 const char * m_calledAddress;
00843 const char * m_calledPartyNumber;
00844 OpalProductDescription m_product;
00845 const char * m_alertingType;
00857 } OpalStatusIncomingCall;
00858
00859
00864 typedef enum OpalMediaStates {
00865 OpalMediaStateNoChange,
00866 OpalMediaStateOpen,
00868 OpalMediaStateClose,
00870 OpalMediaStatePause,
00872 OpalMediaStateResume
00874 } OpalMediaStates;
00875
00876
00883 typedef struct OpalStatusMediaStream {
00884 const char * m_callToken;
00885 const char * m_identifier;
00888 const char * m_type;
00893 const char * m_format;
00897 OpalMediaStates m_state;
00900 } OpalStatusMediaStream;
00901
00902
00905 typedef struct OpalParamSetUserData {
00906 const char * m_callToken;
00907 void * m_userData;
00908 } OpalParamSetUserData;
00909
00910
00916 typedef struct OpalStatusUserInput {
00917 const char * m_callToken;
00918 const char * m_userInput;
00919 unsigned m_duration;
00924 } OpalStatusUserInput;
00925
00926
00930 typedef struct OpalStatusMessageWaiting {
00931 const char * m_party;
00932 const char * m_type;
00933 const char * m_extraInfo;
00936 } OpalStatusMessageWaiting;
00937
00938
00943 typedef enum OpalLineAppearanceStates {
00944 OpalLineIdle,
00945 OpalLineTrying,
00946 OpalLineProceeding,
00947 OpalLineRinging,
00948 OpalLineConnected,
00949 OpalLineSubcribed,
00950 OpalLineUnsubcribed
00951 } OpalLineAppearanceStates;
00952
00953
00957 typedef struct OpalStatusLineAppearance {
00958 const char * m_line;
00959 OpalLineAppearanceStates m_state;
00960 int m_appearance;
00963 const char * m_callId;
00967 const char * m_partyA;
00968 const char * m_partyB;
00969 } OpalStatusLineAppearance;
00970
00971
00974 typedef struct OpalParamRecording {
00975 const char * m_callToken;
00976 const char * m_file;
00978 unsigned m_channels;
00981 } OpalParamRecording;
00982
00983
00987 typedef struct OpalStatusCallCleared {
00988 const char * m_callToken;
00989 const char * m_reason;
00994 } OpalStatusCallCleared;
00995
00996
01001 typedef enum OpalCallEndReason {
01002 OpalCallEndedByLocalUser,
01003 OpalCallEndedByNoAccept,
01004 OpalCallEndedByAnswerDenied,
01005 OpalCallEndedByRemoteUser,
01006 OpalCallEndedByRefusal,
01007 OpalCallEndedByNoAnswer,
01008 OpalCallEndedByCallerAbort,
01009 OpalCallEndedByTransportFail,
01010 OpalCallEndedByConnectFail,
01011 OpalCallEndedByGatekeeper,
01012 OpalCallEndedByNoUser,
01013 OpalCallEndedByNoBandwidth,
01014 OpalCallEndedByCapabilityExchange,
01015 OpalCallEndedByCallForwarded,
01016 OpalCallEndedBySecurityDenial,
01017 OpalCallEndedByLocalBusy,
01018 OpalCallEndedByLocalCongestion,
01019 OpalCallEndedByRemoteBusy,
01020 OpalCallEndedByRemoteCongestion,
01021 OpalCallEndedByUnreachable,
01022 OpalCallEndedByNoEndPoint,
01023 OpalCallEndedByHostOffline,
01024 OpalCallEndedByTemporaryFailure,
01025 OpalCallEndedByQ931Cause,
01026 OpalCallEndedByDurationLimit,
01027 OpalCallEndedByInvalidConferenceID,
01028 OpalCallEndedByNoDialTone,
01029 OpalCallEndedByNoRingBackTone,
01030 OpalCallEndedByOutOfService,
01031 OpalCallEndedByAcceptingCallWaiting,
01032 OpalCallEndedWithQ931Code = 0x100
01033 } OpalCallEndReason;
01034
01035
01038 typedef struct OpalParamCallCleared {
01039 const char * m_callToken;
01040 OpalCallEndReason m_reason;
01042 } OpalParamCallCleared;
01043
01044
01048 struct OpalMessage {
01049 OpalMessageType m_type;
01050 union {
01051 const char * m_commandError;
01052 OpalParamGeneral m_general;
01053 OpalParamProtocol m_protocol;
01054 OpalParamRegistration m_registrationInfo;
01055 OpalStatusRegistration m_registrationStatus;
01056 OpalParamSetUpCall m_callSetUp;
01057 const char * m_callToken;
01058 OpalStatusIncomingCall m_incomingCall;
01059 OpalStatusUserInput m_userInput;
01060 OpalStatusMessageWaiting m_messageWaiting;
01061 OpalStatusLineAppearance m_lineAppearance;
01062 OpalStatusCallCleared m_callCleared;
01063 OpalParamCallCleared m_clearCall;
01064 OpalStatusMediaStream m_mediaStream;
01065 OpalParamSetUserData m_setUserData;
01066 OpalParamRecording m_recording;
01067 } m_param;
01068 };
01069
01070
01071 #ifdef __cplusplus
01072 };
01073 #endif
01074
01075 #endif // OPAL_OPAL_H
01076
01077