libisdn
Q931call.c File Reference
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "Q931.h"
#include "Q931priv.h"

Go to the source code of this file.

Data Structures

struct  Q931CallStateName
struct  Q931CallEventName
struct  Q931CallTimerName

Defines

#define TMP_BUFSIZE   4096
#define TMP_PUTS(fmt)
#define TMP_APPEND(fmt, args...)   offset += snprintf(tmp + offset, size - offset, fmt, ##args);

Functions

void Q931CallSetState (struct Q931_Call *call, const L3INT state)
Q931_API L3INT Q931CallGetState (const struct Q931_Call *call)
struct Q931_CallQ931CallNew (Q931_TrunkInfo_t *trunk)
 Request new outgoing call handle & crv.
struct Q931_CallQ931CallNewIncoming (Q931_TrunkInfo_t *trunk, const L3INT crv)
L3INT Q931CallRelease (struct Q931_Call *call)
 Release call handle and CRV.
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 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 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 struct Q931_CallQ931GetCallByCRV (const Q931_TrunkInfo_t *trunk, const L3INT crv)
struct Q931_CallQ931GetCallByIndex (const Q931_TrunkInfo_t *trunk, const L3INT idx)
Q931_API struct Q931_CallQ931GetGlobalCall (const Q931_TrunkInfo_t *trunk)
Q931_API L3BOOL Q931CallIsGlobal (const struct Q931_Call *call)
void Q931CallStartTimer (struct Q931_Call *call, L3USHORT timer)
 Start a call timer.
void Q931CallRestartTimer (struct Q931_Call *call, L3USHORT timer)
 Restart a call timer.
void Q931CallStopTimer (struct Q931_Call *call, L3USHORT timer)
 Stop a call timer.
void Q931CallStopAllTimers (struct Q931_Call *call)
 Stop all call timers.
Q931_API L3USHORT Q931CallGetTimerID (const struct Q931_Call *call)
 Return ID of the currently active timer.
Q931_API L3UCHAR Q931CallGetTimerExpireCount (const struct Q931_Call *call)
 Return number of times the current timer has expired.
void Q931CallIncrementTimerExpireCount (struct Q931_Call *call)
 Increment expire counter for current timer.
Q931_API void Q931SetCallEventCB (Q931_TrunkInfo_t *trunk, const Q931CallEventCB_t cb, const void *priv)
 Set call event callback and (optional) private data.
void Q931CallSendEvent (const struct Q931_Call *call, const struct Q931_CallEvent *event)
 Send call event to Layer 4.
void Q931CallInitEvent (struct Q931_CallEvent *event)
 Initialize call event.
struct Q931_CallEventQ931CallNewEvent (struct Q931_Call *call)
 Get new free event slot from call handle.
void Q931CallQueueEvent (struct Q931_Call *call, struct Q931_CallEvent *event)
 "Enqueue" call event
void Q931CallFlushEvents (struct Q931_Call *call)
 Clear list of queued events.
void Q931CallSendQueuedEvents (struct Q931_Call *call)
 Send queued call events to layer 4.
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 L3INT Q931CallDump (const struct Q931_Call *call)
Q931_API L3INT Q931DumpAllCalls (const Q931_TrunkInfo_t *trunk)

Variables

struct Q931CallStateName Q931CallStateNames []
struct Q931CallEventName Q931CallEventNames []
struct Q931CallTimerName Q931CallTimerNames []

Define Documentation

#define TMP_APPEND (   fmt,
  args... 
)    offset += snprintf(tmp + offset, size - offset, fmt, ##args);

Definition at line 720 of file Q931call.c.

Referenced by Q931CallDump(), and Q931DumpAllCalls().

#define TMP_BUFSIZE   4096

Definition at line 716 of file Q931call.c.

Referenced by Q931CallDump(), and Q931DumpAllCalls().

#define TMP_PUTS (   fmt)
Value:
strncat(tmp + offset, fmt, size - offset - 1);  \
        offset += strlen(tmp + offset);

Definition at line 717 of file Q931call.c.

Referenced by Q931CallDump(), and Q931DumpAllCalls().


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.

void Q931CallFlushEvents ( struct Q931_Call call)

Clear list of queued events.

Definition at line 651 of file Q931call.c.

References Q931_Call::events, Q931_Call::numevents, and Q931_CALL_MAX_EVENTS.

Referenced by Q931CallSendQueuedEvents().

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().

Return number of times the current timer has expired.

Q931CallGetTimerExpireCount

Parameters:
callQ.931 call
Returns:
counter value
Note:
Only used by the timer callbacks to fetch the counter value (Q931CallStartTimer resets the counter)

Definition at line 554 of file Q931call.c.

References Q931_Call::TimerCnt.

Referenced by Q931ProcTimeoutT303NT(), Q931ProcTimeoutT303TE(), Q931ProcTimeoutT308NT(), Q931ProcTimeoutT308TE(), and Q931ProcTimeoutT316TE().

Q931_API L3USHORT Q931CallGetTimerID ( const struct Q931_Call call)

Return ID of the currently active timer.

Q931CallGetTimerID

Parameters:
callQ.931 call
Returns:
ID of the active timer or Q931_TIMER_NONE if no timer is active

Definition at line 541 of file Q931call.c.

References Q931_Call::TimerID.

Q931_API const char* Q931CallGetTimerName ( const L3USHORT  timer)

Definition at line 389 of file Q931call.c.

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

Increment expire counter for current timer.

Q931CallIncrementTimerExpireCount

Parameters:
callQ.931 call
Note:
Only used by Q931TimerTick

Definition at line 566 of file Q931call.c.

References Q931_Call::TimerCnt.

Referenced by Q931TimerTick().

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().

void Q931CallRestartTimer ( struct Q931_Call call,
L3USHORT  timer 
)

Restart a call timer.

Q931CallRestartTimer

Parameters:
callQ.931 call
timerID of timer
Note:
Does not reset the expire counter

Definition at line 484 of file Q931call.c.

References Q931_TrunkInfo::Dialect, L3ULONG, Q931_LOG_NOTICE, Q931CallGetCRV(), Q931CallGetTrunk(), Q931DialectGetTimeout(), Q931GetTime(), Q931Log(), Q931_Call::Timer, and Q931_Call::TimerID.

Referenced by Q931ProcTimeoutT303NT(), Q931ProcTimeoutT303TE(), Q931ProcTimeoutT308NT(), Q931ProcTimeoutT308TE(), and Q931ProcTimeoutT316TE().

void Q931CallSendQueuedEvents ( struct Q931_Call call)

Send queued call events to layer 4.

Definition at line 662 of file Q931call.c.

References Q931_Call::events, Q931_Call::numevents, Q931CallFlushEvents(), and Q931CallSendEvent().

Referenced by Q931Rx23().

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

Definition at line 192 of file Q931call.c.

References Q931_Call::pvt.

void Q931CallStopAllTimers ( struct Q931_Call call)

Stop all call timers.

Q931CallStopAllTimers

Parameters:
callQ.931 call

Definition at line 526 of file Q931call.c.

References Q931_LOG_NOTICE, Q931_TIMER_NONE, Q931CallGetCRV(), Q931CallGetTrunk(), Q931Log(), and Q931_Call::TimerID.

Referenced by Q931ProcDisconnectNT(), Q931ProcDisconnectTE(), Q931ProcReleaseCompleteTE(), Q931ProcReleaseNT(), Q931ProcReleaseTE(), and Q931ProcTimeoutT310NT().

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().

struct Q931_Call* Q931GetCallByIndex ( const Q931_TrunkInfo_t trunk,
const L3INT  idx 
) [read]

Definition at line 427 of file Q931call.c.

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

Referenced by Q931DumpAllCalls().

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.


Variable Documentation