|
|
Q.931 ISDN Layer 3 implementation on top of a Layer 2
| enum BehaviourFlags { SendNonIsdnSource = 0x00000001, IgnoreNonIsdnDest = 0x00000002, ForcePresNetProv = 0x00000004, Translate31kAudio = 0x00000008, URDITransferCapsOnly = 0x00000010, NoLayer1Caps = 0x00000020, IgnoreNonLockedIE = 0x00000040, NoDisplayIE = 0x00000080, NoDisplayCharset = 0x00000100, ForceSendComplete = 0x00000200, NoActiveOnConnect = 0x00000400, CheckNotifyInd = 0x00000800, } | BehaviourFlags |
Enumeration flags defining the behaviour of the ISDN call controller and any active calls managed by it
| enum SwitchType { Unknown = 0, EuroIsdnE1 = ForceSendComplete|CheckNotifyInd|NoDisplayCharset|URDITransferCapsOnly, EuroIsdnT1 = ForceSendComplete|CheckNotifyInd, NationalIsdn = SendNonIsdnSource, Dms100 = ForcePresNetProv|IgnoreNonIsdnDest, Lucent5e = IgnoreNonLockedIE, Att4ess = ForcePresNetProv|IgnoreNonLockedIE|Translate31kAudio|NoLayer1Caps, QSIG = NoActiveOnConnect|NoDisplayIE|NoDisplayCharset } | SwitchType |
Call controller switch type. Each value is a mask of behaviour flags
| ISDNQ931 (const NamedList& params, const char* name = 0)
| ISDNQ931 |
Constructor Initialize this object and the component
Parameters:
| params | Layer's parameters and parser settings |
| name | Name of this component |
| ~ISDNQ931 ()
| ~ISDNQ931 |
[virtual]
Destructor Destroy all calls
| bool initialize (const NamedList* config)
| initialize |
[virtual]
Configure and initialize Q.931 and its layer 2
Parameters:
| config | Optional configuration parameters override |
Returns: True if Q.931 and the layer 2 were initialized properly
Reimplemented from SignallingComponent.
| const char* statusName ()
| statusName |
[const virtual]
Get the controller's status as text
Returns: Controller status name
Reimplemented from SignallingCallControl.
| inline const ISDNLayer2* layer2 ()
| layer2 |
[const]
Get the layer 2 attached to this object
Returns: Pointer to the layer 2 attached to this object or 0 if none
| inline bool primaryRate ()
| primaryRate |
[const]
Check if this call controller supports primary or basic rate transfer
Returns: True for primary rate. False for basic rate
| inline bool network ()
| network |
[const]
Chech if this call controller is at the NET or CPE side of the link
Returns: True if we are NET, false if we are CPE
| inline bool transferModeCircuit ()
| transferModeCircuit |
[const]
Check if this call controller supports circuit switch or packet mode transfer
Returns: True for circuit switch. False for packet mode
| inline ISDNQ931ParserData& parserData ()
| parserData |
Get the parser settings of this call control
Returns: The parser settings
| inline const String& numPlan ()
| numPlan |
[const]
Get the default numbering plan for outgoing calls
Returns: The default numbering plan for outgoing calls
| inline const String& numType ()
| numType |
[const]
Get the default number type for outgoing calls
Returns: The default number type for outgoing calls
| inline const String& numPresentation ()
| numPresentation |
[const]
Get the default number presentation for outgoing calls
Returns: The default number presentation for outgoing calls
| inline const String& numScreening ()
| numScreening |
[const]
Get the default number screening for outgoing calls
Returns: The default number screening for outgoing calls
| inline const String& format ()
| format |
[const]
Get the default data format for outgoing calls
Returns: The default data format for outgoing calls
| bool sendMessage (ISDNQ931Message* msg, u_int8_t tei, String* reason = 0)
| sendMessage |
Send a message
Parameters:
| msg | The message to be sent |
| tei | TEI value to use at Layer 2 |
| reason | Optional string to write the failure reason |
Returns: False if the message is invalid, Layer 2 is missing or refused the data
| void multipleFrameEstablished (u_int8_t tei, bool confirm, bool timeout, ISDNLayer2* layer2)
| multipleFrameEstablished |
[virtual]
Notification of Layer 2 up state
Parameters:
| tei | TEI received by the Layer 2 |
| confirm | True if this is a confirmation of a previous request. False if it is an indication of state change on remote request |
| timeout | True if the reason is a timeout. |
| layer2 | Pointer to the notifier |
Reimplemented from ISDNLayer3.
| void multipleFrameReleased (u_int8_t tei, bool confirm, bool timeout, ISDNLayer2* layer2)
| multipleFrameReleased |
[virtual]
Notification of Layer 2 down state
Parameters:
| tei | TEI received by the Layer 2 |
| confirm | True if this is a confirmation of a previous request. False if it is an indication of state change on remote request |
| timeout | True if the reason is a timeout. |
| layer2 | Pointer to the notifier |
Reimplemented from ISDNLayer3.
| void receiveData (const DataBlock& data, u_int8_t tei, ISDNLayer2* layer2)
| receiveData |
[virtual]
Receive data from Layer 2
Parameters:
| data | Received data |
| tei | TEI received by the Layer 2 |
| layer2 | Pointer to the sender Layer 2 |
Reimplemented from ISDNLayer3.
| ISDNLayer2* attach (ISDNLayer2* q921)
| attach |
[virtual]
Attach an ISDN Q.921 transport This method is thread safe
Parameters:
| q921 | Pointer to the Q.921 transport to attach |
Returns: Pointer to the detached Layer 2 or NULL
Reimplemented from SignallingCallControl.
| SignallingCall* call (SignallingMessage* msg, String& reason)
| call |
Create an outgoing call. Send a NewCall event with the given msg parameter
Parameters:
| msg | Call parameters |
| reason | Failure reason if any |
Returns: Referenced SignallingCall pointer on success or 0 on failure
Reimplemented from SignallingCallControl.
| bool restart (const char* circuits)
| restart |
Restart one or more the circuits
Parameters:
| circuits | Comma separated list of circuits to be restarted |
Returns: True if the procedure was succesfully started or enqueued
| inline bool sendStatus (ISDNQ931Call* call, const char* cause, u_int8_t tei = 0,
const char* display = 0, const char* diagnostic = 0)
| sendStatus |
Send a STATUS message for a given call
Parameters:
| call | The call requesting the operation |
| tei | The TEI to send with the STATUS message |
| cause | Value for Cause IE |
| display | Optional value for Display IE |
| diagnostic | Optional value for cause diagnostic value |
Returns: The result of the operation (true if succesfully sent)
| inline bool sendRelease (ISDNQ931Call* call, bool release, const char* cause, u_int8_t tei = 0,
const char* diag = 0, const char* display = 0, const char* signal = 0)
| sendRelease |
Send a RELEASE or RELEASE COMPLETE message for a given call
Parameters:
| call | The call requesting the operation |
| release | True to send RELEASE, false to send RELEASE COMPLETE |
| cause | Value for Cause IE |
| tei | TEI to which the release is sent to |
| diag | Optional hexified string for cause dignostic |
| display | Optional value for Display IE |
| signal | Optional value for Signal IE |
Returns: The result of the operation (true if succesfully sent)
| void cleanup (const char* reason = "offline")
| cleanup |
[virtual]
Set terminate to all calls This method is thread safe
Parameters:
| reason | Cleanup reason |
Reimplemented from SignallingCallControl.
| void setInterval (SignallingTimer& timer, int id)
| setInterval |
Set the timeout interval for a given timer if implemented If the timer is not implemented the interval is set to 0
Parameters:
| timer | The destination timer |
| id | The timer number as defined in Q.931 |
| void manageTimeout ()
| manageTimeout |
Manage timeout for the call setup message
| inline void setDebug (bool printMsg, bool extendedDebug)
| setDebug |
Set debug data of this call controller
Parameters:
| printMsg | Enable/disable message printing on output |
| extendedDebug | Enable/disable hex data dump if print messages is enabled |
| static const TokenDict s_flags[] | s_flags[] |
| static const TokenDict s_swType[] | s_swType[] |
| void destroyed ()
| destroyed |
[protected virtual]
Detach links. Disposes memory
Reimplemented from SignallingComponent.
| void timerTick (const Time& when)
| timerTick |
[protected virtual]
Method called periodically to check timeouts This method is thread safe
Parameters:
| when | Time to use as computing base for events and timeouts |
Reimplemented from SignallingComponent.
| ISDNQ931Call* findCall (u_int32_t callRef, bool outgoing, u_int8_t tei = 0)
| findCall |
[protected]
Find a call given its call reference and direction
Parameters:
| callRef | The call reference to find |
| outgoing | True to find an outgoing call, false to find an incoming one |
| tei | TEI of the layer associated to the call to find |
Returns: A referenced pointer to a call or 0
| ISDNQ931Call* findCall (unsigned int circuit)
| findCall |
[protected]
Find a call given a circuit number
Parameters:
| circuit | The circuit number to find |
Returns: A referenced pointer to a call or 0
| void terminateCalls (ObjList* list, const char* reason)
| terminateCalls |
[protected]
Terminate calls. If list is 0 terminate all calls
Parameters:
| list | Optional list of circuits (strings) to be released |
| reason | The reason to be passed to each terminated call |
| bool acceptNewCall (bool outgoing, String& reason)
| acceptNewCall |
[protected]
Check if this call control can accept new calls
Parameters:
| outgoing | Call direction (true for outgoing) |
| reason | String to be filled with the reason if not accepted |
Returns: True if the call request is accepted
| ISDNQ931Message* getMsg (const DataBlock& data)
| getMsg |
[protected]
Process received data. Process received message segments if any
Parameters:
| data | The received data |
Returns: ISDNQ931Message pointer or 0
| ISDNQ931Message* endReceiveSegment (const char* reason = 0)
| endReceiveSegment |
[protected]
End waiting for message segments If reason is 0 parse already received data for the segmented message This method is thread safe
Parameters:
| reason | Debug info reason. If non 0 drop the received segment(s) |
Returns: ISDNQ931Message pointer or 0
| void processGlobalMsg (ISDNQ931Message* msg, u_int8_t tei = 0)
| processGlobalMsg |
[protected]
Process messages with global call reference or should have one
Parameters:
| msg | The received message |
| tei | The TEI received with the message |
| void processMsgRestart (ISDNQ931Message* msg, u_int8_t tei = 0)
| processMsgRestart |
[protected]
Process a restart request
Parameters:
| msg | The received message |
| tei | The TEI received with the message |
| void processInvalidMsg (ISDNQ931Message* msg, u_int8_t tei = 0)
| processInvalidMsg |
[protected]
Process messages with invalid call reference
Parameters:
| msg | The received message |
| tei | The TEI received with the message |
| void sendRestart (u_int64_t time = Time::msecNow(), bool retrans = false)
| sendRestart |
[protected]
Try to reserve a circuit for restarting if none. Send a restart request on it's behalf Start counting the restart interval if no circuit reserved This method is thread safe
Parameters:
| time | The time of the transmission |
| retrans | Retransmission flag (true if a previous request timed out) |
| void endRestart (bool restart, u_int64_t time, bool timeout = false)
| endRestart |
[protected]
End restart procedure on timeout or restart acknoledge This method is thread safe
Parameters:
| restart | True to try to send restart for the next circuit |
| time | The time of the transmission |
| timeout | True if a restart request timed out |
| bool sendStatus (const char* cause, u_int8_t callRefLen, u_int32_t callRef = 0,
u_int8_t tei = 0, bool initiator = false, ISDNQ931Call::State state = ISDNQ931Call::Null,
const char* display = 0, const char* diagnostic = 0)
| sendStatus |
[protected]
Send a STATUS message
Parameters:
| cause | Value for Cause IE |
| callRefLen | The call reference length parameter. |
| callRef | The call reference |
| tei | The TEI to send with the STATUS message |
| initiator | True if this is from the call initiator |
| state | The state for CallState IE |
| display | Optional value for Display IE |
| diagnostic | Optional value for cause diagnostic value |
Returns: The result of the operation (true if succesfully sent)
| bool sendRelease (bool release, u_int8_t callRefLen, u_int32_t callRef, u_int8_t tei,
bool initiator, const char* cause = 0, const char* diag = 0,
const char* display = 0, const char* signal = 0)
| sendRelease |
[protected]
Send a RELEASE or RELEASE COMPLETE message
Parameters:
| release | True to send RELEASE, false to send RELEASE COMPLETE |
| callRefLen | The call reference length parameter |
| callRef | The call reference |
| tei | The TEI of the Layer 2 associated with the call |
| initiator | The call initiator flag |
| cause | Value for Cause IE |
| diag | Optional hexified string for cause dignostic |
| display | Optional value for Display IE |
| signal | Optional value for Signal IE |
Returns: The result of the operation (true if succesfully sent)
| Generated by: paulc on bussard on Tue Apr 12 17:15:21 2011, using kdoc 2.0a54. |