sipXtapiEvents.h

Go to the documentation of this file.
00001 //  
00002 // Copyright (C) 2007 Robert J. Andreasen, Jr.
00003 // Licensed to SIPfoundry under a Contributor Agreement. 
00004 //
00005 // Copyright (C) 2006 SIPez LLC. 
00006 // Licensed to SIPfoundry under a Contributor Agreement. 
00007 //
00008 // Copyright (C) 2004-2006 SIPfoundry Inc.
00009 // Licensed by SIPfoundry under the LGPL license.
00010 //
00011 // Copyright (C) 2004-2006 Pingtel Corp.  All rights reserved.
00012 // Licensed to SIPfoundry under a Contributor Agreement.
00013 //
00014 // $$
00016 
00017 
00038 #ifndef _SIPXTAPIEVENT_H
00039 #define _SIPXTAPIEVENT_H
00040 
00041 // SYSTEM INCLUDES
00042 // APPLICATION INCLUDES
00043 #include "sipXtapi.h"
00044 
00045 // DEFINES
00046 // MACROS
00047 // EXTERNAL FUNCTIONS
00048 // EXTERNAL VARIABLES
00049 // CONSTANTS
00050 // FORWARD DECLARATIONS
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     // TODO: Add a bitmask that identified which structure items are valid.  For 
00673     //       example, codec and hAssociatedCall are only valid for certain event
00674     //       sequences.
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     // TBD
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 /* ============================ FUNCTIONS ================================= */
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 /* ============================ FUNCTIONS ================================= */
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 /* ifndef _sipXtapiEvents_h_ */

Generated on Wed Jan 31 22:16:37 2007 for sipXtapi by  doxygen 1.5.1-p1