|
|
Implementation of SS7 ISDN User Part
enum { SlsAuto = -1, SlsLatest = -2, SlsCircuit = -3, SlsDefault = -4 } |
Special SLS values
enum ChargeProcess { Confusion, Ignore, Raw, Parsed } | ChargeProcess |
SS7ISUP (const NamedList& params, unsigned char sio = SS7MSU::ISUP|SS7MSU::National)
| SS7ISUP |
Constructor
Parameters:
params | Call controller's parameters |
sio | The default Service Information Octet |
~SS7ISUP ()
| ~SS7ISUP |
[virtual]
Destructor
bool initialize (const NamedList* config)
| initialize |
[virtual]
Configure and initialize the call controller and user part
Parameters:
config | Optional configuration parameters override |
Returns: True if ISUP was initialized properly
Reimplemented from SS7Layer4.
const char* statusName ()
| statusName |
[const virtual]
Get the controller's status as text
Returns: Controller status name
Reimplemented from SignallingCallControl.
void attach (SS7Layer3* network)
| attach |
[virtual]
Attach a SS7 network or router to this service. Detach itself from the old one
Parameters:
network | Pointer to network or router to attach |
Reimplemented from SignallingCallControl.
unsigned int cicLen ()
| cicLen |
[const]
Get the length of the Circuit Identification Code for this user part
Returns: Length of the CIC field in octets
const String& format ()
| format |
[const]
Get the default data format
Returns: The default data format
inline bool ignoreUnknownAddrSignals ()
| ignoreUnknownAddrSignals |
[const]
Check if the message parser of this controller should ignore unknown digits encoding
Returns: True if unknown digits are ignored
bool setPointCode (SS7PointCode* pc, bool def)
| setPointCode |
Append a point code to the list of point codes serviced by this controller if not already there. Set default point code if requested. If the list is empty, the default point code is set to the first point code added
Parameters:
pc | The point code to append |
def | True if this point code is the default for outgoing calls |
Returns: False if the point code is invalid for this call controller type. If true is returned, don't reuse the pointer
unsigned int setPointCode (const NamedList& params)
| setPointCode |
Append all point codes from a parameter list, use "pointcode" and "defaultpointcode" parameters
Parameters:
params | List of parameters to take point codes from |
Returns: Count of point codes added
SS7PointCode* hasPointCode (const SS7PointCode& pc)
| hasPointCode |
Check if the given point code is serviced by this controller
Parameters:
pc | The point code to check |
Returns: SS7PointCode pointer or 0 if not found
inline bool handlesRemotePC (const SS7PointCode& pc)
| handlesRemotePC |
[const]
Check if this controller should handle a remote point code
Parameters:
pc | The remote point code to check |
Returns: True if pc matches the remote or there is no remote set
inline void setLabel (SS7Label& label, const SS7PointCode& opc, const SS7PointCode& dpc,
unsigned char sls = 255)
| setLabel |
Set a routing label to be used for outgoing messages
Parameters:
label | Routing label to set |
opc | Originating point code |
dpc | Destination point code |
sls | Signalling Link Selection |
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 |
SS7MSU* createMSU (SS7MsgISUP::Type type, unsigned char ssf,
const SS7Label& label, unsigned int cic, const NamedList* params = 0)
| createMSU |
[const virtual]
Create a new MSU populated with type, routing label and space for fixed part
Parameters:
type | Type of ISUP message |
ssf | Subservice Field |
label | Routing label for the new MSU |
cic | Circuit Identification Code |
params | Optional parameter list |
Returns: Pointer to the new MSU or NULL if an error occured
SignallingCall* call (SignallingMessage* msg, String& reason)
| call |
[virtual]
Create an outgoing call. Send a NewCall event with the given msg parameter This method is thread safe
Parameters:
msg | Call parameters |
reason | Failure reason if any |
Returns: Referenced SignallingCall pointer on success or 0 on failure
Reimplemented from SignallingCallControl.
int transmitMessage (SS7MsgISUP* msg, const SS7Label& label, bool recvLbl, int sls = SlsDefault)
| transmitMessage |
Converts an ISUP message to a Message Signal Unit and push it down the protocol stack. The given message is consumed
Parameters:
msg | The message to send |
label | The routing label for the message |
recvLbl | True if the given label is from a received message. If true, a new routing label will be created from the received one |
sls | Signalling Link to use for the new routing label. Ignored if recvLbl is false |
Returns: Link the message was successfully queued to, negative for error
void cleanup (const char* reason = "net-out-of-order")
| cleanup |
[virtual]
Cleanup calls This method is thread safe
Parameters:
reason | Cleanup reason |
Reimplemented from SignallingCallControl.
bool control (NamedList& params)
| control |
[virtual]
Query or modify ISUP's settings or operational parameters
Parameters:
params | The list of parameters to query or change |
Returns: True if the control operation was executed
Reimplemented from SignallingComponent.
bool decodeMessage (NamedList& msg, SS7MsgISUP::Type msgType, SS7PointCode::Type pcType,
const unsigned char* paramPtr, unsigned int paramLen)
| decodeMessage |
Decode an ISUP message buffer to a list of parameters
Parameters:
msg | Destination list of parameters |
msgType | The message type |
pcType | The point code type (message version) |
paramPtr | Pointer to the Parameter area (just after the message type) |
paramLen | Length of the Parameter area |
Returns: True if the mesage was successfully parsed
bool encodeMessage (DataBlock& buf, SS7MsgISUP::Type msgType, SS7PointCode::Type pcType,
const NamedList& params, unsigned int* cic = 0)
| encodeMessage |
Encode an ISUP list of parameters to a buffer. The input list may contain a 'message-prefix' parameter to override this controller's prefix
Parameters:
buf | Destination buffer |
msgType | The message type |
pcType | The point code type (message version) |
params | Message list of parameters |
cic | Optional cic to be added before mesage |
Returns: True if the mesage was successfully encoded
bool processParamCompat (const NamedList& list, unsigned int cic, bool* callReleased = 0)
| processParamCompat |
Process parameter compatibility lists. Terminate an existing call if a non emtpy release call parameter(s) list is found. Send CNF if non emtpy cnf parameter(s) list is found
Parameters:
list | Message parameter list |
cic | The circuit code |
callReleased | Optional pointer to boolean value to be set if a call was released |
Returns: True if any parameter compatibility was handled
inline ChargeProcess getChargeProcessType ()
| getChargeProcessType |
[const]
Obtain the way that charge message should be processed
Returns: The way that charge message should be processed
void destroyed ()
| destroyed |
[protected virtual]
Remove all links with other layers. Disposes the memory
Reimplemented from SS7Layer4.
void timerTick (const Time& when)
| timerTick |
[protected virtual]
Send CGU if not already done. Check timeouts
Parameters:
when | Time to use as computing base for timeouts |
Reimplemented from SignallingComponent.
void notify (SS7Layer3* link, int sls)
| notify |
[protected virtual]
Process a notification generated by the attached network layer
Parameters:
link | Network or linkset that generated the notification |
sls | Signalling Link that generated the notification, negative if none |
Reimplemented from SS7L3User.
SS7MSU* buildMSU (SS7MsgISUP::Type type, unsigned char sio,
const SS7Label& label, unsigned int cic, const NamedList* params)
| buildMSU |
[protected const]
Create a new MSU populated with type, routing label and space for fixed part
Parameters:
type | Type of ISUP message |
sio | Service Information Octet |
label | Routing label for the new MSU |
cic | Circuit Identification Code |
params | Parameter list |
Returns: Pointer to the new MSU or NULL if an error occured
HandledMSU receivedMSU (const SS7MSU& msu, const SS7Label& label, SS7Layer3* network, int sls)
| receivedMSU |
[protected virtual]
Process a MSU received from a Layer 3 component
Parameters:
msu | Message data, starting with Service Indicator Octet |
label | Routing label of the received MSU |
network | Network layer that delivered the MSU |
sls | Signalling Link the MSU was received from |
Returns: Result of MSU processing
Reimplemented from SS7L3User.
bool processMSU (SS7MsgISUP::Type type, unsigned int cic,
const unsigned char* paramPtr, unsigned int paramLen,
const SS7Label& label, SS7Layer3* network, int sls)
| processMSU |
[protected virtual]
Process a MSU received from a Layer 3 component
Parameters:
type | Type of ISUP message |
cic | Circuit Identification Code |
paramPtr | Pointer to the Parameter area |
paramLen | Length of the Parameter area |
label | Routing label of the received MSU |
network | Network layer that delivered the MSU |
sls | Signalling Link the MSU was received from |
Returns: True if the MSU was processed
void receivedUPU (SS7PointCode::Type type, const SS7PointCode node,
SS7MSU::Services part, unsigned char cause, const SS7Label& label, int sls)
| receivedUPU |
[protected virtual]
Notification for receiving User Part Unavailable
Parameters:
type | Type of Point Code |
node | Node on which the User Part is unavailable |
part | User Part (service) reported unavailable |
cause | Unavailability cause - Q.704 15.17.5 |
label | Routing label of the UPU message |
sls | Signaling link the UPU was received on |
Reimplemented from SS7L3User.
SignallingEvent* processCircuitEvent (SignallingCircuitEvent*& event,
SignallingCall* call = 0)
| processCircuitEvent |
[protected virtual]
Process an event received from a non-reserved circuit
Parameters:
event | The event, will be consumed and zeroed |
call | Optional signalling call whose circuit generated the event |
Returns: Signalling event pointer or 0
Reimplemented from SignallingCallControl.
bool startCircuitReset (SignallingCircuit*& cic, const String& timer)
| startCircuitReset |
[protected]
Initiate circuit reset. The circuit must be already reserved This method is thread safe
Parameters:
cic | The circuit to reset. Its referrence counter will be decreased and the pointer will be zeroed |
timer | Ellapsed timer |
Returns: True if the circuit reset was initiated
unsigned int m_cicLen | m_cicLen |
[protected]
Generated by: paulc on bussard on Thu Jul 24 18:41:02 2014, using kdoc 2.0a54. |