|
Yate
|
ISDN Q.931 implementation on top of Q.921. More...
#include <yatesig.h>
Public Types | |
| 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 } |
| 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 } |
Public Member Functions | |
| ISDNQ931 (const NamedList ¶ms, const char *name=0) | |
| virtual | ~ISDNQ931 () |
| virtual bool | initialize (const NamedList *config) |
| virtual const char * | statusName () const |
| const ISDNLayer2 * | layer2 () const |
| bool | primaryRate () const |
| bool | network () const |
| bool | transferModeCircuit () const |
| ISDNQ931ParserData & | parserData () |
| const String & | numPlan () const |
| const String & | numType () const |
| const String & | numPresentation () const |
| const String & | numScreening () const |
| const String & | format () const |
| bool | sendMessage (ISDNQ931Message *msg, u_int8_t tei, String *reason=0) |
| virtual void | multipleFrameEstablished (u_int8_t tei, bool confirm, bool timeout, ISDNLayer2 *layer2) |
| virtual void | multipleFrameReleased (u_int8_t tei, bool confirm, bool timeout, ISDNLayer2 *layer2) |
| virtual void | receiveData (const DataBlock &data, u_int8_t tei, ISDNLayer2 *layer2) |
| virtual ISDNLayer2 * | attach (ISDNLayer2 *q921) |
| SignallingCall * | call (SignallingMessage *msg, String &reason) |
| bool | restart (const char *circuits) |
| bool | sendStatus (ISDNQ931Call *call, const char *cause, u_int8_t tei=0, const char *display=0, const char *diagnostic=0) |
| 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) |
| virtual void | cleanup (const char *reason="offline") |
| void | setInterval (SignallingTimer &timer, int id) |
| void | manageTimeout () |
| void | setDebug (bool printMsg, bool extendedDebug) |
Static Public Attributes | |
| static const TokenDict | s_flags [] |
| static const TokenDict | s_swType [] |
Protected Member Functions | |
| virtual void | destroyed () |
| virtual void | timerTick (const Time &when) |
| ISDNQ931Call * | findCall (u_int32_t callRef, bool outgoing, u_int8_t tei=0) |
| ISDNQ931Call * | findCall (unsigned int circuit) |
| void | terminateCalls (ObjList *list, const char *reason) |
| bool | acceptNewCall (bool outgoing, String &reason) |
| ISDNQ931Message * | getMsg (const DataBlock &data) |
| ISDNQ931Message * | endReceiveSegment (const char *reason=0) |
| void | processGlobalMsg (ISDNQ931Message *msg, u_int8_t tei=0) |
| void | processMsgRestart (ISDNQ931Message *msg, u_int8_t tei=0) |
| void | processInvalidMsg (ISDNQ931Message *msg, u_int8_t tei=0) |
| void | sendRestart (u_int64_t time=Time::msecNow(), bool retrans=false) |
| void | endRestart (bool restart, u_int64_t time, bool timeout=false) |
| 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) |
| 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) |
Friends | |
| class | ISDNQ931Call |
ISDN Q.931 implementation on top of Q.921.
Q.931 ISDN Layer 3 implementation on top of a Layer 2
| enum BehaviourFlags |
Enumeration flags defining the behaviour of the ISDN call controller and any active calls managed by it
| enum SwitchType |
Call controller switch type. Each value is a mask of behaviour flags
Constructor Initialize this object and the component
| params | Layer's parameters and parser settings |
| name | Name of this component |
| virtual ~ISDNQ931 | ( | ) | [virtual] |
Destructor Destroy all calls
| bool acceptNewCall | ( | bool | outgoing, |
| String & | reason | ||
| ) | [protected] |
Check if this call control can accept new calls
| outgoing | Call direction (true for outgoing) |
| reason | String to be filled with the reason if not accepted |
| virtual ISDNLayer2* attach | ( | ISDNLayer2 * | q921 | ) | [virtual] |
Attach an ISDN Q.921 transport This method is thread safe
| q921 | Pointer to the Q.921 transport to attach |
Reimplemented from ISDNLayer3.
| SignallingCall* call | ( | SignallingMessage * | msg, |
| String & | reason | ||
| ) | [virtual] |
Create an outgoing call. Send a NewCall event with the given msg parameter
| msg | Call parameters |
| reason | Failure reason if any |
Reimplemented from SignallingCallControl.
| virtual void cleanup | ( | const char * | reason = "offline" | ) | [virtual] |
Set terminate to all calls This method is thread safe
| reason | Cleanup reason |
Reimplemented from SignallingCallControl.
| virtual void destroyed | ( | ) | [inline, protected, virtual] |
Detach links. Disposes memory
Reimplemented from SignallingComponent.
References SignallingCallControl::attach(), SignallingComponent::destroyed(), and TelEngine::destruct().
| ISDNQ931Message* endReceiveSegment | ( | const char * | reason = 0 | ) | [protected] |
End waiting for message segments If reason is 0 parse already received data for the segmented message This method is thread safe
| reason | Debug info reason. If non 0 drop the received segment(s) |
| void endRestart | ( | bool | restart, |
| u_int64_t | time, | ||
| bool | timeout = false |
||
| ) | [protected] |
End restart procedure on timeout or restart acknoledge This method is thread safe
| 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 |
| ISDNQ931Call* findCall | ( | u_int32_t | callRef, |
| bool | outgoing, | ||
| u_int8_t | tei = 0 |
||
| ) | [protected] |
Find a call given its call reference and direction
| 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 |
| ISDNQ931Call* findCall | ( | unsigned int | circuit | ) | [protected] |
Find a call given a circuit number
| circuit | The circuit number to find |
Get the default data format for outgoing calls
| ISDNQ931Message* getMsg | ( | const DataBlock & | data | ) | [protected] |
Process received data. Process received message segments if any
| data | The received data |
| virtual bool initialize | ( | const NamedList * | config | ) | [virtual] |
Configure and initialize Q.931 and its layer 2
| config | Optional configuration parameters override |
Reimplemented from SignallingComponent.
| const ISDNLayer2* layer2 | ( | ) | const [inline] |
Get the layer 2 attached to this object
| void manageTimeout | ( | ) |
Manage timeout for the call setup message
| virtual void multipleFrameEstablished | ( | u_int8_t | tei, |
| bool | confirm, | ||
| bool | timeout, | ||
| ISDNLayer2 * | layer2 | ||
| ) | [virtual] |
Notification of Layer 2 up state
| 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.
| virtual void multipleFrameReleased | ( | u_int8_t | tei, |
| bool | confirm, | ||
| bool | timeout, | ||
| ISDNLayer2 * | layer2 | ||
| ) | [virtual] |
Notification of Layer 2 down state
| 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.
| bool network | ( | ) | const [inline] |
Chech if this call controller is at the NET or CPE side of the link
Get the default numbering plan for outgoing calls
| const String& numPresentation | ( | ) | const [inline] |
Get the default number presentation for outgoing calls
| const String& numScreening | ( | ) | const [inline] |
Get the default number screening for outgoing calls
Get the default number type for outgoing calls
| ISDNQ931ParserData& parserData | ( | ) | [inline] |
Get the parser settings of this call control
| bool primaryRate | ( | ) | const [inline] |
Check if this call controller supports primary or basic rate transfer
| void processGlobalMsg | ( | ISDNQ931Message * | msg, |
| u_int8_t | tei = 0 |
||
| ) | [protected] |
Process messages with global call reference or should have one
| msg | The received message |
| tei | The TEI received with the message |
| void processInvalidMsg | ( | ISDNQ931Message * | msg, |
| u_int8_t | tei = 0 |
||
| ) | [protected] |
Process messages with invalid call reference
| msg | The received message |
| tei | The TEI received with the message |
| void processMsgRestart | ( | ISDNQ931Message * | msg, |
| u_int8_t | tei = 0 |
||
| ) | [protected] |
Process a restart request
| msg | The received message |
| tei | The TEI received with the message |
| virtual void receiveData | ( | const DataBlock & | data, |
| u_int8_t | tei, | ||
| ISDNLayer2 * | layer2 | ||
| ) | [virtual] |
Receive data from Layer 2
| data | Received data |
| tei | TEI received by the Layer 2 |
| layer2 | Pointer to the sender Layer 2 |
Implements ISDNLayer3.
| bool restart | ( | const char * | circuits | ) |
Restart one or more the circuits
| circuits | Comma separated list of circuits to be restarted |
| bool sendMessage | ( | ISDNQ931Message * | msg, |
| u_int8_t | tei, | ||
| String * | reason = 0 |
||
| ) |
Send a message
| msg | The message to be sent |
| tei | TEI value to use at Layer 2 |
| reason | Optional string to write the failure reason |
| 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 |
||
| ) | [inline] |
Send a RELEASE or RELEASE COMPLETE message for a given call
| 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 |
References ISDNQ931Call::callRef(), ISDNQ931Call::callRefLen(), and SignallingCall::outgoing().
| 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 |
||
| ) | [protected] |
Send a RELEASE or RELEASE COMPLETE message
| 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 |
| void sendRestart | ( | u_int64_t | time = Time::msecNow(), |
| bool | retrans = false |
||
| ) | [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
| time | The time of the transmission |
| retrans | Retransmission flag (true if a previous request timed out) |
| bool sendStatus | ( | ISDNQ931Call * | call, |
| const char * | cause, | ||
| u_int8_t | tei = 0, |
||
| const char * | display = 0, |
||
| const char * | diagnostic = 0 |
||
| ) | [inline] |
Send a STATUS message for a given call
| 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 |
References ISDNQ931Call::callRef(), ISDNQ931Call::callRefLen(), SignallingCall::outgoing(), and ISDNQ931State::state().
| 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 |
||
| ) | [protected] |
Send a STATUS message
| 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 |
| void setDebug | ( | bool | printMsg, |
| bool | extendedDebug | ||
| ) | [inline] |
Set debug data of this call controller
| printMsg | Enable/disable message printing on output |
| extendedDebug | Enable/disable hex data dump if print messages is enabled |
| void setInterval | ( | SignallingTimer & | timer, |
| int | id | ||
| ) |
Set the timeout interval for a given timer if implemented If the timer is not implemented the interval is set to 0
| timer | The destination timer |
| id | The timer number as defined in Q.931 |
| virtual const char* statusName | ( | ) | const [virtual] |
Get the controller's status as text
Implements SignallingCallControl.
| void terminateCalls | ( | ObjList * | list, |
| const char * | reason | ||
| ) | [protected] |
Terminate calls. If list is 0 terminate all calls
| list | Optional list of circuits (strings) to be released |
| reason | The reason to be passed to each terminated call |
Method called periodically to check timeouts This method is thread safe
| when | Time to use as computing base for events and timeouts |
Reimplemented from SignallingComponent.
| bool transferModeCircuit | ( | ) | const [inline] |
Check if this call controller supports circuit switch or packet mode transfer
1.7.6.1