libisdn
Q931call.h File Reference

Go to the source code of this file.

Data Structures

struct  Q931_CallTimerEvent
 Additional data for Timer event. More...
struct  Q931_CallMessageEvent
 Additional data for Message event. More...
struct  Q931_CallEvent
 Q.931 Call event. More...
struct  Q931_Call
 Call context. More...

Defines

#define Q931_CALL_MAX_EVENTS   3

Typedefs

typedef struct Q931_Call Q931_Call_t
typedef void(* Q931CallEventCB_t )(struct Q931_Call *call, struct Q931_CallEvent *event, void *priv)

Enumerations

enum  {
  Q931_EVENT_NONE = 0, Q931_EVENT_SETUP_INDICATION, Q931_EVENT_SETUP_CONFIRM, Q931_EVENT_SETUP_COMPLETE_INDICATION,
  Q931_EVENT_MORE_INFO_INDICATION, Q931_EVENT_REJECT_INDICATION, Q931_EVENT_PROCEEDING_INDICATION, Q931_EVENT_ALERTING_INDICATION,
  Q931_EVENT_PROGRESS_INDICATION, Q931_EVENT_NOTIFY_INDICATION, Q931_EVENT_RELEASE_INDICATION, Q931_EVENT_RELEASE_CONFIRM,
  Q931_EVENT_SUSPEND_CONFIRM, Q931_EVENT_RESUME_CONFIRM, Q931_EVENT_DISCONNECT_INDICATION, Q931_EVENT_INFORMATION_INDICATION,
  Q931_EVENT_STATUS_INDICATION, Q931_EVENT_RESTART_CONFIRM, Q931_EVENT_SETUP_RESPONSE, Q931_EVENT_REJECT_REQUEST,
  Q931_EVENT_INFORMATION_REQUEST, Q931_EVENT_ALERTING_REQUEST, Q931_EVENT_PROGRESS_REQUEST, Q931_EVENT_PROCEEDING_REQUEST,
  Q931_EVENT_NOTIFY_REQUEST, Q931_EVENT_SUSPEND_REQUEST, Q931_EVENT_DISCONNECT_REQUEST, Q931_EVENT_RESTART_REQUEST,
  Q931_EVENT_TIMEOUT_INDICATION, Q931_EVENT_DL_FAILURE_INDICATION, Q931_EVENT_RELEASE_CRV
}
enum  { Q931_EVENT_TYPE_NONE = 0, Q931_EVENT_TYPE_CRV, Q931_EVENT_TYPE_TIMER, Q931_EVENT_TYPE_MESSAGE }
 Possible event types. More...
enum  {
  Q931_U0 = 0, Q931_U1, Q931_U2, Q931_U3,
  Q931_U4, Q931_U6 = 6, Q931_U7, Q931_U8,
  Q931_U9, Q931_U10, Q931_U11, Q931_U12,
  Q931_U15 = 15, Q931_U17 = 17, Q931_U19 = 19, Q931_U25 = 25,
  Q931_UANY = 0xff, Q931_N0 = (0x0100 | 0), Q931_N1, Q931_N2,
  Q931_N3, Q931_N4, Q931_N6 = (0x0100 | 6), Q931_N7,
  Q931_N8, Q931_N9, Q931_N10, Q931_N11,
  Q931_N12, Q931_N15 = (0x0100 | 15), Q931_N17 = (0x0100 | 17), Q931_N19 = (0x0100 | 19),
  Q931_N22 = (0x0100 | 22), Q931_N25 = (0x0100 | 25), Q931_NANY = 0x1ff
}
 Q.931 ITU-T Call states. More...
enum  { Q931_DIRECTION_INBOUND = 0, Q931_DIRECTION_OUTBOUND }
 Call direction. More...

Functions

void Q931CallSetState (struct Q931_Call *call, const L3INT state)
Q931_API L3INT Q931CallGetState (const struct Q931_Call *call)
Q931_API const char * Q931CallGetStateName (const struct Q931_Call *call)
Q931_API const char * Q931CallGetEventName (const L3INT event)
Q931_API const char * Q931CallGetTimerName (const L3USHORT timer)
Q931_API void Q931CallSetPrivate (struct Q931_Call *call, const void *priv)
Q931_API void * Q931CallGetPrivate (const struct Q931_Call *call)
Q931_API Q931_TrunkInfo_tQ931CallGetTrunk (const struct Q931_Call *call)
Q931_API void Q931SetCallEventCB (Q931_TrunkInfo_t *trunk, const Q931CallEventCB_t cb, const void *priv)
 Set call event callback and (optional) private data.
struct Q931_CallQ931CallNew (Q931_TrunkInfo_t *trunk)
 Request new outgoing call handle & crv.
L3INT Q931CallRelease (struct Q931_Call *call)
 Release call handle and CRV.
Q931_API L3INT Q931CallGetCRV (const struct Q931_Call *call)
Q931_API L3INT Q931CallGetDirection (const struct Q931_Call *call)
Q931_API L3BOOL Q931CallIsOutgoing (const struct Q931_Call *call)
Q931_API L3BOOL Q931CallIsGlobal (const struct Q931_Call *call)
Q931_API L3INT Q931CallEventGetType (const struct Q931_CallEvent *event)
 Get event type.
Q931_API L3INT Q931CallEventGetId (const struct Q931_CallEvent *event)
 Get event id.
Q931_API void * Q931CallEventGetData (const struct Q931_CallEvent *event)
 Get pointer to event data.
Q931_API struct Q931_CallQ931GetCallByCRV (const Q931_TrunkInfo_t *trunk, const L3INT crv)
Q931_API struct Q931_CallQ931GetGlobalCall (const Q931_TrunkInfo_t *trunk)
Q931_API L3INT Q931CallDump (const struct Q931_Call *call)
Q931_API L3INT Q931DumpAllCalls (const Q931_TrunkInfo_t *trunk)

Define Documentation

#define Q931_CALL_MAX_EVENTS   3

Should be enough, maybe even too much...

Definition at line 41 of file Q931call.h.

Referenced by Q931CallFlushEvents(), and Q931CallNewEvent().


Typedef Documentation

typedef struct Q931_Call Q931_Call_t

Definition at line 234 of file Q931call.h.

typedef void(* Q931CallEventCB_t)(struct Q931_Call *call, struct Q931_CallEvent *event, void *priv)

Definition at line 236 of file Q931call.h.


Enumeration Type Documentation

anonymous enum

Events

Enumerator:
Q931_EVENT_NONE 

NOP, sort of

Q931_EVENT_SETUP_INDICATION 

Incoming SETUP

Q931_EVENT_SETUP_CONFIRM 
Q931_EVENT_SETUP_COMPLETE_INDICATION 
Q931_EVENT_MORE_INFO_INDICATION 
Q931_EVENT_REJECT_INDICATION 
Q931_EVENT_PROCEEDING_INDICATION 
Q931_EVENT_ALERTING_INDICATION 
Q931_EVENT_PROGRESS_INDICATION 
Q931_EVENT_NOTIFY_INDICATION 
Q931_EVENT_RELEASE_INDICATION 
Q931_EVENT_RELEASE_CONFIRM 
Q931_EVENT_SUSPEND_CONFIRM 
Q931_EVENT_RESUME_CONFIRM 
Q931_EVENT_DISCONNECT_INDICATION 
Q931_EVENT_INFORMATION_INDICATION 
Q931_EVENT_STATUS_INDICATION 
Q931_EVENT_RESTART_CONFIRM 
Q931_EVENT_SETUP_RESPONSE 
Q931_EVENT_REJECT_REQUEST 
Q931_EVENT_INFORMATION_REQUEST 
Q931_EVENT_ALERTING_REQUEST 
Q931_EVENT_PROGRESS_REQUEST 
Q931_EVENT_PROCEEDING_REQUEST 
Q931_EVENT_NOTIFY_REQUEST 
Q931_EVENT_SUSPEND_REQUEST 
Q931_EVENT_DISCONNECT_REQUEST 
Q931_EVENT_RESTART_REQUEST 
Q931_EVENT_TIMEOUT_INDICATION 

Overlap dial(?) timer timeout

Q931_EVENT_DL_FAILURE_INDICATION 

Failure on Layer 2

Q931_EVENT_RELEASE_CRV 

Call/CRV will be released

Definition at line 46 of file Q931call.h.

anonymous enum

Possible event types.

Enumerator:
Q931_EVENT_TYPE_NONE 
Q931_EVENT_TYPE_CRV 
Q931_EVENT_TYPE_TIMER 
Q931_EVENT_TYPE_MESSAGE 

Definition at line 91 of file Q931call.h.

anonymous enum

Q.931 ITU-T Call states.

Enumerator:
Q931_U0 

Null

Q931_U1 

Call initiated

Q931_U2 

Overlap sending

Q931_U3 

Outgoing call proceeding

Q931_U4 

Call delivered

Q931_U6 

Call present

Q931_U7 

Call received

Q931_U8 

Connect request

Q931_U9 

Incoming call proceeding

Q931_U10 

Active

Q931_U11 

Disconnect request

Q931_U12 

Disconnect indication

Q931_U15 

Suspend request

Q931_U17 

Resume request

Q931_U19 

Release request

Q931_U25 

Overlap receiving

Q931_UANY 

Any U state

Q931_N0 

Null

Q931_N1 

Call initiation

Q931_N2 

Overlap sending

Q931_N3 

Outgoing call proceeding

Q931_N4 

Call delivered

Q931_N6 

Call present

Q931_N7 

Call received

Q931_N8 

Connect request

Q931_N9 

Incoming call proceeding

Q931_N10 

Active

Q931_N11 

Disconnect request

Q931_N12 

Disconnect indication

Q931_N15 

Suspend request

Q931_N17 

Resume request

Q931_N19 

Release request

Q931_N22 

??

Q931_N25 

Overlap receiving

Q931_NANY 

Any N state

Definition at line 134 of file Q931call.h.

anonymous enum

Call direction.

Enumerator:
Q931_DIRECTION_INBOUND 
Q931_DIRECTION_OUTBOUND 

Definition at line 181 of file Q931call.h.


Function Documentation

Q931_API L3INT Q931CallDump ( const struct Q931_Call call)

Dump information about call

Parameters:
callCall to dump
Returns:
0 on success

Definition at line 760 of file Q931call.c.

References Q931_LOG_DEBUG, Q931CallGetCRV(), Q931CallGetTrunk(), Q931E_NO_ERROR, Q931Log(), TMP_APPEND, TMP_BUFSIZE, and TMP_PUTS.

Q931_API void* Q931CallEventGetData ( const struct Q931_CallEvent event)

Get pointer to event data.

Note:
You'll have to do the right casting yourself

Definition at line 695 of file Q931call.c.

References Q931_EVENT_TYPE_MESSAGE, Q931_EVENT_TYPE_TIMER, and Q931_CallEvent::type.

Q931_API L3INT Q931CallEventGetId ( const struct Q931_CallEvent event)

Get event id.

Definition at line 686 of file Q931call.c.

Get event type.

Definition at line 678 of file Q931call.c.

Q931_API L3INT Q931CallGetDirection ( const struct Q931_Call call)

Definition at line 221 of file Q931call.c.

References Q931_Call::Direction.

Referenced by Q931Release(), Q931ReleaseComplete(), and Q931StatusEnquiryResponse().

Q931_API const char* Q931CallGetEventName ( const L3INT  event)

Definition at line 343 of file Q931call.c.

References Q931CallEventName::id, Q931CallEventName::name, and Q931CallEventNames.

Q931_API void* Q931CallGetPrivate ( const struct Q931_Call call)

Definition at line 199 of file Q931call.c.

References Q931_Call::pvt.

Q931_API L3INT Q931CallGetState ( const struct Q931_Call call)

Definition at line 62 of file Q931call.c.

References Q931_Call::State.

Referenced by Q931CallGetStateName(), Q931CallRelease(), Q931CallSendStatus(), Q931DumpAllCalls(), Q931Proc(), Q931ProcAlertingNT(), Q931ProcAlertingTE(), Q931ProcCallProceedingNT(), Q931ProcCallProceedingTE(), Q931ProcCongestionControlNT(), Q931ProcCongestionControlTE(), Q931ProcConnectAckNT(), Q931ProcConnectAckTE(), Q931ProcConnectNT(), Q931ProcConnectTE(), Q931ProcDisconnectNT(), Q931ProcDisconnectTE(), Q931ProcInformationNT(), Q931ProcInformationTE(), Q931ProcNotifyNT(), Q931ProcNotifyTE(), Q931ProcProgressNT(), Q931ProcProgressTE(), Q931ProcReleaseCompleteNT(), Q931ProcReleaseCompleteTE(), Q931ProcReleaseNT(), Q931ProcReleaseTE(), Q931ProcRestartAckNT(), Q931ProcRestartAckTE(), Q931ProcRestartNT(), Q931ProcRestartTE(), Q931ProcResumeAckNT(), Q931ProcResumeAckTE(), Q931ProcResumeRejectNT(), Q931ProcResumeRejectTE(), Q931ProcSegmentNT(), Q931ProcSegmentTE(), Q931ProcSetupAckNT(), Q931ProcSetupAckTE(), Q931ProcSetupNT(), Q931ProcSetupTE(), Q931ProcStatusEnquiryNT(), Q931ProcStatusEnquiryTE(), Q931ProcStatusNT(), Q931ProcStatusTE(), Q931ProcSuspendAckNT(), Q931ProcSuspendAckTE(), Q931ProcSuspendNT(), Q931ProcSuspendRejectNT(), Q931ProcSuspendRejectTE(), Q931ProcSuspendTE(), Q931ProcTimeoutT301NT(), Q931ProcTimeoutT301TE(), Q931ProcTimeoutT302NT(), Q931ProcTimeoutT302TE(), Q931ProcTimeoutT303NT(), Q931ProcTimeoutT303TE(), Q931ProcTimeoutT304NT(), Q931ProcTimeoutT304TE(), Q931ProcTimeoutT305NT(), Q931ProcTimeoutT305TE(), Q931ProcTimeoutT306NT(), Q931ProcTimeoutT307NT(), Q931ProcTimeoutT308NT(), Q931ProcTimeoutT308TE(), Q931ProcTimeoutT310NT(), Q931ProcTimeoutT310TE(), Q931ProcTimeoutT313TE(), Q931ProcTimeoutT318TE(), Q931ProcTimeoutT319TE(), Q931ProcUserInformationNT(), Q931ProcUserInformationTE(), Q931Rx23(), Q931Rx43(), Q931StatusEnquiryResponse(), Q931TimerTick(), Q932ProcFacilityNT(), Q932ProcFacilityTE(), Q932ProcHoldAckNT(), Q932ProcHoldAckTE(), Q932ProcHoldNT(), Q932ProcHoldRejectNT(), Q932ProcHoldRejectTE(), Q932ProcHoldTE(), Q932ProcRegisterNT(), Q932ProcRegisterTE(), Q932ProcRetrieveAckNT(), Q932ProcRetrieveAckTE(), Q932ProcRetrieveNT(), Q932ProcRetrieveRejectNT(), Q932ProcRetrieveRejectTE(), and Q932ProcRetrieveTE().

Q931_API const char* Q931CallGetTimerName ( const L3USHORT  timer)

Definition at line 389 of file Q931call.c.

References Q931CallTimerName::id, Q931CallTimerName::name, and Q931CallTimerNames.

Q931_API L3BOOL Q931CallIsGlobal ( const struct Q931_Call call)
struct Q931_Call* Q931CallNew ( Q931_TrunkInfo_t trunk) [read]

Request new outgoing call handle & crv.

Q931CallNew

Parameters:
[in]trunkQ931 trunk
Returns:
NULL on error, pointer to call handle otherwise
Todo:
Does direction really make sense here? Primary use is to request a new outgoing call...

Definition at line 97 of file Q931call.c.

References Q931_Call::CRV, Q931_Call::Direction, Q931_Call::InUse, L3INT, Q931_TrunkInfo::NetUser, Q931_DIRECTION_OUTBOUND, Q931_LOG_INFO, Q931_N0, Q931_NT, Q931_U0, Q931CallSetState(), Q931GetUniqueCRV(), Q931Log(), and Q931_Call::Trunk.

Referenced by Q931ProcResumeNT(), Q931ProcResumeTE(), Q931ProcSetupNT(), and Q931ProcSetupTE().

Q931_API void Q931CallSetPrivate ( struct Q931_Call call,
const void *  priv 
)

Definition at line 192 of file Q931call.c.

References Q931_Call::pvt.

Dump information about all active calls

Parameters:
trunkQ.931 Trunk handle
Returns:
0 on success

Definition at line 785 of file Q931call.c.

References Q931_LOG_DEBUG, Q931_U0, Q931CallGetCRV(), Q931CallGetState(), Q931E_NO_ERROR, Q931GetCallByIndex(), Q931Log(), Q931MAXCALLPERTRUNK, TMP_APPEND, TMP_BUFSIZE, and TMP_PUTS.

Q931_API struct Q931_Call* Q931GetCallByCRV ( const Q931_TrunkInfo_t trunk,
const L3INT  crv 
) [read]

Definition at line 404 of file Q931call.c.

References Q931_TrunkInfo::call, Q931_Call::CRV, Q931_Call::InUse, and Q931MAXCALLPERTRUNK.

Referenced by Q931GetUniqueCRV(), Q931ProcAlertingNT(), Q931ProcAlertingTE(), Q931ProcCallProceedingNT(), Q931ProcCallProceedingTE(), Q931ProcCongestionControlNT(), Q931ProcCongestionControlTE(), Q931ProcConnectAckNT(), Q931ProcConnectAckTE(), Q931ProcConnectNT(), Q931ProcConnectTE(), Q931ProcDisconnectNT(), Q931ProcDisconnectTE(), Q931ProcInformationNT(), Q931ProcInformationTE(), Q931ProcNotifyNT(), Q931ProcNotifyTE(), Q931ProcProgressNT(), Q931ProcProgressTE(), Q931ProcReleaseCompleteNT(), Q931ProcReleaseCompleteTE(), Q931ProcReleaseNT(), Q931ProcReleaseTE(), Q931ProcRestartAckNT(), Q931ProcRestartAckTE(), Q931ProcRestartNT(), Q931ProcRestartTE(), Q931ProcResumeAckNT(), Q931ProcResumeAckTE(), Q931ProcResumeNT(), Q931ProcResumeRejectNT(), Q931ProcResumeRejectTE(), Q931ProcResumeTE(), Q931ProcSegmentNT(), Q931ProcSegmentTE(), Q931ProcSetupAckNT(), Q931ProcSetupAckTE(), Q931ProcSetupNT(), Q931ProcSetupTE(), Q931ProcStatusEnquiryNT(), Q931ProcStatusEnquiryTE(), Q931ProcStatusNT(), Q931ProcStatusTE(), Q931ProcSuspendAckNT(), Q931ProcSuspendAckTE(), Q931ProcSuspendNT(), Q931ProcSuspendRejectNT(), Q931ProcSuspendRejectTE(), Q931ProcSuspendTE(), Q931ProcUserInformationNT(), Q931ProcUserInformationTE(), Q931ReleaseCRV(), Q931Rx23(), Q931Rx43(), Q931Tx32(), Q932ProcFacilityNT(), Q932ProcFacilityTE(), Q932ProcHoldAckNT(), Q932ProcHoldAckTE(), Q932ProcHoldNT(), Q932ProcHoldRejectNT(), Q932ProcHoldRejectTE(), Q932ProcHoldTE(), Q932ProcRegisterNT(), Q932ProcRegisterTE(), Q932ProcRetrieveAckNT(), Q932ProcRetrieveAckTE(), Q932ProcRetrieveNT(), Q932ProcRetrieveRejectNT(), Q932ProcRetrieveRejectTE(), and Q932ProcRetrieveTE().

Q931_API struct Q931_Call* Q931GetGlobalCall ( const Q931_TrunkInfo_t trunk) [read]

Definition at line 440 of file Q931call.c.

References Q931_TrunkInfo::call.

Referenced by Q931AckRestart(), Q931AckService(), Q931AckSetup(), Q931Rx23(), Q931Rx43(), and Q931Start().

Q931_API void Q931SetCallEventCB ( Q931_TrunkInfo_t trunk,
const Q931CallEventCB_t  cb,
const void *  priv 
)

Set call event callback and (optional) private data.

Parameters:
trunkQ.931 Trunk handle
cbCall event callback function
privOptional private data for callback function

Definition at line 581 of file Q931call.c.

References Q931_TrunkInfo::CallEventCBProc, and Q931_TrunkInfo::PrivateDataCallEventCB.