00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00016
00017
00038 #ifndef _SIPXTAPIEVENT_H
00039 #define _SIPXTAPIEVENT_H
00040
00041
00042
00043 #include "sipXtapi.h"
00044
00045
00046
00047
00048
00049
00050
00051
00055 typedef enum SIPX_EVENT_CATEGORY
00056 {
00057 EVENT_CATEGORY_CALLSTATE,
00062 EVENT_CATEGORY_LINESTATE,
00069 EVENT_CATEGORY_INFO_STATUS,
00075 EVENT_CATEGORY_INFO,
00080 EVENT_CATEGORY_SUB_STATUS,
00083 EVENT_CATEGORY_NOTIFY,
00087 EVENT_CATEGORY_CONFIG,
00091 EVENT_CATEGORY_SECURITY,
00094 EVENT_CATEGORY_MEDIA,
00096 EVENT_CATEGORY_KEEPALIVE
00103 } SIPX_EVENT_CATEGORY;
00104
00109 #define VALID_SIPX_EVENT_CATEGORY(x) (((x) >= EVENT_CATEGORY_CALLSTATE) && ((x) <= EVENT_CATEGORY_KEEPALIVE))
00110
00146 typedef bool (SIPX_CALLING_CONVENTION *SIPX_EVENT_CALLBACK_PROC)(SIPX_EVENT_CATEGORY category,
00147 void* pInfo,
00148 void* pUserData);
00164 typedef enum SIPX_CALLSTATE_EVENT
00165 {
00166 CALLSTATE_UNKNOWN = 0,
00169 CALLSTATE_NEWCALL = 1000,
00173 CALLSTATE_DIALTONE = 2000,
00177 CALLSTATE_REMOTE_OFFERING = 2500,
00184 CALLSTATE_REMOTE_ALERTING = 3000,
00198 CALLSTATE_CONNECTED = 4000,
00202 CALLSTATE_BRIDGED = 5000,
00207 CALLSTATE_HELD = 6000,
00210 CALLSTATE_REMOTE_HELD = 7000,
00214 CALLSTATE_DISCONNECTED = 8000,
00219 CALLSTATE_OFFERING = 9000,
00225 CALLSTATE_ALERTING = 10000,
00231 CALLSTATE_DESTROYED = 11000,
00235 CALLSTATE_TRANSFER_EVENT = 12000,
00238 } SIPX_CALLSTATE_EVENT;
00239
00240
00245 typedef enum SIPX_CALLSTATE_CAUSE
00246 {
00247 CALLSTATE_CAUSE_UNKNOWN,
00248 CALLSTATE_CAUSE_NORMAL,
00249 CALLSTATE_CAUSE_TRANSFERRED,
00251 CALLSTATE_CAUSE_TRANSFER,
00253 CALLSTATE_CAUSE_CONFERENCE,
00254 CALLSTATE_CAUSE_EARLY_MEDIA,
00257 CALLSTATE_CAUSE_REQUEST_NOT_ACCEPTED,
00259 CALLSTATE_CAUSE_BAD_ADDRESS,
00262 CALLSTATE_CAUSE_BUSY,
00264 CALLSTATE_CAUSE_RESOURCE_LIMIT,
00266 CALLSTATE_CAUSE_NETWORK,
00268 CALLSTATE_CAUSE_REDIRECTED,
00269 CALLSTATE_CAUSE_NO_RESPONSE,
00271 CALLSTATE_CAUSE_AUTH,
00273 CALLSTATE_CAUSE_TRANSFER_INITIATED,
00277 CALLSTATE_CAUSE_TRANSFER_ACCEPTED,
00283 CALLSTATE_CAUSE_TRANSFER_TRYING,
00288 CALLSTATE_CAUSE_TRANSFER_RINGING,
00293 CALLSTATE_CAUSE_TRANSFER_SUCCESS,
00297 CALLSTATE_CAUSE_TRANSFER_FAILURE,
00302 CALLSTATE_CAUSE_REMOTE_SMIME_UNSUPPORTED,
00305 CALLSTATE_CAUSE_SMIME_FAILURE,
00309 CALLSTATE_CAUSE_SHUTDOWN,
00311 CALLSTATE_CAUSE_BAD_REFER,
00312 CALLSTATE_CAUSE_NO_KNOWN_INVITE,
00314 CALLSTATE_CAUSE_BYE_DURING_IDLE,
00316 CALLSTATE_CAUSE_UNKNOWN_STATUS_CODE,
00317 CALLSTATE_CAUSE_BAD_REDIRECT,
00318 CALLSTATE_CAUSE_TRANSACTION_DOES_NOT_EXIST,
00320 CALLSTATE_CAUSE_CANCEL,
00322 } SIPX_CALLSTATE_CAUSE ;
00323
00329 typedef enum SIPX_LINESTATE_EVENT
00330 {
00331 LINESTATE_UNKNOWN = 0,
00332 LINESTATE_REGISTERING = 20000,
00336 LINESTATE_REGISTERED = 21000,
00339 LINESTATE_UNREGISTERING = 22000,
00343 LINESTATE_UNREGISTERED = 23000,
00346 LINESTATE_REGISTER_FAILED = 24000,
00353 LINESTATE_UNREGISTER_FAILED = 25000,
00360 LINESTATE_PROVISIONED = 26000,
00362 } SIPX_LINESTATE_EVENT;
00363
00364
00368 typedef enum SIPX_LINESTATE_CAUSE
00369 {
00370 LINESTATE_CAUSE_UNKNOWN = 0,
00371 LINESTATE_REGISTERING_NORMAL = LINESTATE_REGISTERING + 1,
00373 LINESTATE_REGISTERED_NORMAL = LINESTATE_REGISTERED + 1,
00375 LINESTATE_UNREGISTERING_NORMAL = LINESTATE_UNREGISTERING + 1,
00377 LINESTATE_UNREGISTERED_NORMAL = LINESTATE_UNREGISTERED + 1,
00379 LINESTATE_REGISTER_FAILED_COULD_NOT_CONNECT = LINESTATE_REGISTER_FAILED + 1,
00381 LINESTATE_REGISTER_FAILED_NOT_AUTHORIZED = LINESTATE_REGISTER_FAILED + 2,
00384 LINESTATE_REGISTER_FAILED_TIMEOUT = LINESTATE_REGISTER_FAILED + 3,
00386 LINESTATE_UNREGISTER_FAILED_COULD_NOT_CONNECT = LINESTATE_UNREGISTER_FAILED + 1,
00388 LINESTATE_UNREGISTER_FAILED_NOT_AUTHORIZED = LINESTATE_UNREGISTER_FAILED + 2,
00391 LINESTATE_UNREGISTER_FAILED_TIMEOUT = LINESTATE_UNREGISTER_FAILED + 3,
00393 LINESTATE_PROVISIONED_NORMAL = LINESTATE_PROVISIONED + 1
00395 } SIPX_LINESTATE_CAUSE;
00396
00397
00398
00399
00403 enum SIPX_INFOSTATUS_EVENT
00404 {
00405 INFOSTATUS_UNKNOWN = 0 ,
00406 INFOSTATUS_RESPONSE = 30000,
00408 INFOSTATUS_NETWORK_ERROR = 31000
00410 };
00411
00412
00416 enum SIPX_CONFIG_EVENT
00417 {
00418 CONFIG_UNKNOWN = 0,
00419 CONFIG_STUN_SUCCESS = 40000,
00423 CONFIG_STUN_FAILURE = 41000,
00424 } ;
00425
00426
00430 typedef enum SIPX_SECURITY_EVENT
00431 {
00432 SECURITY_UNKNOWN = 0,
00435 SECURITY_ENCRYPT = 1000,
00438 SECURITY_DECRYPT = 2000,
00441 SECURITY_TLS = 4000,
00442 } SIPX_SECURITY_EVENT;
00443
00447 typedef enum SIPX_SECURITY_CAUSE
00448 {
00449 SECURITY_CAUSE_UNKNOWN = 0,
00453 SECURITY_CAUSE_NORMAL,
00454 SECURITY_CAUSE_ENCRYPT_SUCCESS,
00455 SECURITY_CAUSE_ENCRYPT_FAILURE_LIB_INIT,
00457 SECURITY_CAUSE_ENCRYPT_FAILURE_BAD_PUBLIC_KEY,
00458 SECURITY_CAUSE_ENCRYPT_FAILURE_INVALID_PARAMETER,
00459 SECURITY_CAUSE_DECRYPT_SUCCESS,
00460 SECURITY_CAUSE_DECRYPT_FAILURE_DB_INIT,
00461 SECURITY_CAUSE_DECRYPT_FAILURE_BAD_DB_PASSWORD,
00462 SECURITY_CAUSE_DECRYPT_FAILURE_INVALID_PARAMETER,
00463 SECURITY_CAUSE_DECRYPT_BAD_SIGNATURE,
00464 SECURITY_CAUSE_DECRYPT_MISSING_SIGNATURE,
00465 SECURITY_CAUSE_DECRYPT_SIGNATURE_REJECTED,
00466 SECURITY_CAUSE_TLS_SERVER_CERTIFICATE,
00470 SECURITY_CAUSE_TLS_BAD_PASSWORD,
00471 SECURITY_CAUSE_TLS_LIBRARY_FAILURE,
00472 SECURITY_CAUSE_REMOTE_HOST_UNREACHABLE,
00473 SECURITY_CAUSE_TLS_CONNECTION_FAILURE,
00474 SECURITY_CAUSE_TLS_HANDSHAKE_FAILURE,
00475 SECURITY_CAUSE_SIGNATURE_NOTIFY,
00482 SECURITY_CAUSE_TLS_CERTIFICATE_REJECTED
00483 } SIPX_SECURITY_CAUSE;
00484
00485
00489 typedef enum
00490 {
00491 MEDIA_UNKNOWN = 0,
00494 MEDIA_LOCAL_START = 50000,
00496 MEDIA_LOCAL_STOP,
00502 MEDIA_REMOTE_START,
00507 MEDIA_REMOTE_STOP,
00509 MEDIA_REMOTE_SILENT,
00515 MEDIA_PLAYFILE_START,
00520 MEDIA_PLAYFILE_STOP,
00522 MEDIA_PLAYBUFFER_START,
00527 MEDIA_PLAYBUFFER_STOP,
00529 MEDIA_REMOTE_DTMF,
00531 MEDIA_DEVICE_FAILURE,
00533 MEDIA_REMOTE_ACTIVE,
00535 } SIPX_MEDIA_EVENT ;
00536
00537
00541 typedef enum
00542 {
00543 KEEPALIVE_START,
00548 KEEPALIVE_FEEDBACK,
00553 KEEPALIVE_FAILURE,
00558 KEEPALIVE_STOP
00559 } SIPX_KEEPALIVE_EVENT ;
00560
00564 typedef enum
00565 {
00566 KEEPALIVE_CAUSE_NORMAL
00567 } SIPX_KEEPALIVE_CAUSE ;
00568
00569
00579 typedef struct
00580 {
00581 size_t nSize ;
00582 SIPX_KEEPALIVE_EVENT event ;
00583 SIPX_KEEPALIVE_CAUSE cause ;
00584 SIPX_KEEPALIVE_TYPE type ;
00585 const char* szRemoteAddress ;
00586 int remotePort ;
00587 int keepAliveSecs ;
00588 const char* szFeedbackAddress;
00590 int feedbackPort ;
00592 } SIPX_KEEPALIVE_INFO ;
00593
00597 typedef enum
00598 {
00599 MEDIA_CAUSE_NORMAL,
00600 MEDIA_CAUSE_HOLD,
00602 MEDIA_CAUSE_UNHOLD,
00604 MEDIA_CAUSE_FAILED,
00605 MEDIA_CAUSE_DEVICE_UNAVAILABLE,
00607 MEDIA_CAUSE_INCOMPATIBLE,
00609 MEDIA_CAUSE_DTMF_START,
00610 MEDIA_CAUSE_DTMF_STOP
00612 } SIPX_MEDIA_CAUSE ;
00613
00618 typedef enum
00619 {
00620 MEDIA_TYPE_AUDIO,
00621 MEDIA_TYPE_VIDEO,
00623 } SIPX_MEDIA_TYPE ;
00624
00625
00635 typedef struct
00636 {
00637 size_t nSize ;
00638 SIPX_MEDIA_EVENT event ;
00640 SIPX_MEDIA_CAUSE cause ;
00642 SIPX_MEDIA_TYPE mediaType ;
00644 SIPX_CALL hCall ;
00646 SIPX_CODEC_INFO codec ;
00649 int idleTime;
00652 SIPX_TONE_ID toneId;
00658 } SIPX_MEDIA_INFO ;
00659
00660
00670 typedef struct
00671 {
00672
00673
00674
00675
00676 size_t nSize;
00677 SIPX_CALL hCall;
00678 SIPX_LINE hLine;
00679 SIPX_CALLSTATE_EVENT event;
00681 SIPX_CALLSTATE_CAUSE cause;
00683 SIPX_CALL hAssociatedCall ;
00687 } SIPX_CALLSTATE_INFO;
00688
00689
00699 typedef struct
00700 {
00701 size_t nSize ;
00702 SIPX_LINE hLine;
00703 SIPX_LINESTATE_EVENT event ;
00705 SIPX_LINESTATE_CAUSE cause ;
00707 } SIPX_LINESTATE_INFO ;
00708
00709
00713 typedef enum
00714 {
00715 SIPX_MESSAGE_OK,
00716 SIPX_MESSAGE_FAILURE,
00718 SIPX_MESSAGE_SERVER_FAILURE,
00720 SIPX_MESSAGE_GLOBAL_FAILURE,
00721 } SIPX_MESSAGE_STATUS ;
00722
00733 typedef struct
00734 {
00735 size_t nSize ;
00736 SIPX_INFO hInfo ;
00737 SIPX_MESSAGE_STATUS status ;
00739 int responseCode ;
00741 const char* szResponseText ;
00742 SIPX_INFOSTATUS_EVENT event;
00743 } SIPX_INFOSTATUS_INFO ;
00744
00745
00758 typedef struct
00759 {
00760 size_t nSize ;
00761 SIPX_CALL hCall ;
00762 SIPX_LINE hLine ;
00763 const char* szFromURL ;
00765 const char* szUserAgent;
00766 const char* szContentType ;
00767 const char* pContent ;
00768 size_t nContentLength ;
00770 } SIPX_INFO_INFO ;
00771
00775 typedef enum
00776 {
00777 SIPX_SUBSCRIPTION_PENDING,
00778 SIPX_SUBSCRIPTION_ACTIVE ,
00779 SIPX_SUBSCRIPTION_FAILED ,
00780 SIPX_SUBSCRIPTION_EXPIRED ,
00781
00782 } SIPX_SUBSCRIPTION_STATE;
00783
00787 typedef enum
00788 {
00789 SUBSCRIPTION_CAUSE_UNKNOWN = -1,
00790 SUBSCRIPTION_CAUSE_NORMAL
00791 } SIPX_SUBSCRIPTION_CAUSE;
00792
00804 typedef struct
00805 {
00806 size_t nSize ;
00807 SIPX_SUB hSub ;
00809 SIPX_SUBSCRIPTION_STATE state ;
00811 SIPX_SUBSCRIPTION_CAUSE cause;
00813 const char* szSubServerUserAgent;
00816 } SIPX_SUBSTATUS_INFO ;
00817
00818
00830 typedef struct
00831 {
00832 size_t nSize ;
00833 SIPX_SUB hSub ;
00835 const char* szNotiferUserAgent;
00837 const char* szContentType ;
00838 const void* pContent ;
00839 size_t nContentLength ;
00840 } SIPX_NOTIFY_INFO ;
00841
00842
00856 typedef struct
00857 {
00858 size_t nSize ;
00859 SIPX_CONFIG_EVENT event ;
00861 void* pData;
00863 } SIPX_CONFIG_INFO ;
00864
00865
00877 typedef struct
00878 {
00879 size_t nSize ;
00880 char* szSRTPkey;
00881 void* pCertificate;
00883 int nCertificateSize;
00884 SIPX_SECURITY_EVENT event;
00885 SIPX_SECURITY_CAUSE cause;
00886 char* szSubjAltName;
00887 char* callId;
00889 SIPX_CALL hCall;
00891 char* remoteAddress;
00892 } SIPX_SECURITY_INFO ;
00893
00894
00895
00896
00909 SIPXTAPI_API SIPX_RESULT sipxDuplicateEvent(SIPX_EVENT_CATEGORY category,
00910 const void* pEventSource,
00911 void** pEventCopy) ;
00912
00913
00921 SIPXTAPI_API SIPX_RESULT sipxFreeDuplicatedEvent(SIPX_EVENT_CATEGORY category,
00922 void* pEventCopy) ;
00923
00931 SIPXTAPI_API SIPX_RESULT sipxEventListenerAdd(const SIPX_INST hInst,
00932 SIPX_EVENT_CALLBACK_PROC pCallbackProc,
00933 void *pUserData);
00934
00943 SIPXTAPI_API SIPX_RESULT sipxEventListenerRemove(const SIPX_INST hInst,
00944 SIPX_EVENT_CALLBACK_PROC pCallbackProc,
00945 void* pUserData) ;
00946
00947
00948
00958 SIPXTAPI_API char* sipxCallEventToString(SIPX_CALLSTATE_EVENT event,
00959 SIPX_CALLSTATE_CAUSE cause,
00960 char* szBuffer,
00961 size_t nBuffer) ;
00962
00963
00973 SIPXTAPI_API char* sipxEventToString(const SIPX_EVENT_CATEGORY category,
00974 const void* pEvent,
00975 char* szBuffer,
00976 size_t nBuffer);
00977
00988 SIPXTAPI_API char* sipxLineEventToString(SIPX_LINESTATE_EVENT event,
00989 SIPX_LINESTATE_CAUSE cause,
00990 char* szBuffer,
00991 size_t nBuffer);
00992
00993
01002 SIPXTAPI_API char* sipxConfigEventToString(SIPX_CONFIG_EVENT event,
01003 char* szBuffer,
01004 size_t nBuffer) ;
01005
01014 SIPXTAPI_API char* sipxSubStatusStateToString(SIPX_SUBSCRIPTION_STATE state,
01015 char* szBuffer,
01016 size_t nBuffer) ;
01017
01026 SIPXTAPI_API char* sipxSubStatusCauseToString(SIPX_SUBSCRIPTION_CAUSE cause,
01027 char* szBuffer,
01028 size_t nBuffer) ;
01029
01038 SIPXTAPI_API char* sipxSecurityEventToString(SIPX_SECURITY_EVENT event,
01039 char* szBuffer,
01040 size_t nBuffer);
01041
01050 SIPXTAPI_API char* sipxSecurityCauseToString(SIPX_SECURITY_CAUSE cause,
01051 char* szBuffer,
01052 size_t nBuffer);
01053
01054
01063 SIPXTAPI_API char* sipxMediaEventToString(SIPX_MEDIA_EVENT event,
01064 char* szBuffer,
01065 size_t nBuffer);
01074 SIPXTAPI_API char* sipxMediaCauseToString(SIPX_MEDIA_CAUSE cause,
01075 char* szBuffer,
01076 size_t nBuffer);
01077
01078 #endif