ISDNFrame Class Reference

An ISDN frame. More...

#include <yatesig.h>

Inheritance diagram for ISDNFrame:
RefObject GenObject

List of all members.

Public Types

enum  Type {
  DISC = 1, DM = 2, FRMR = 3, I = 4,
  REJ = 5, RNR = 6, RR = 7, SABME = 8,
  UA = 9, UI = 10, XID = 11, Invalid = 100,
  ErrUnknownCR = 101, ErrHdrLength = 102, ErrDataLength = 103, ErrRxSeqNo = 104,
  ErrTxSeqNo = 105, ErrInvalidEA = 106, ErrInvalidAddress = 107, ErrUnsupported = 108,
  ErrInvalidCR = 109
}
enum  TeiManagement {
  TeiReq = 1, TeiAssigned = 2, TeiDenied = 3, TeiCheckReq = 4,
  TeiCheckRsp = 5, TeiRemove = 6, TeiVerify = 7
}
enum  Category { Data, Supervisory, Unnumbered, Error }

Public Member Functions

virtual ~ISDNFrame ()
Type type () const
Type error () const
Category category () const
bool command () const
u_int8_t sapi () const
u_int8_t tei () const
bool poll () const
u_int8_t ns () const
u_int8_t nr () const
u_int8_t headerLength () const
u_int32_t dataLength () const
const DataBlockbuffer () const
bool sent () const
void sent (bool value)
const char * name () const
void update (u_int8_t *ns=0, u_int8_t *nr=0)
void getData (DataBlock &dest) const
void toString (String &dest, bool extendedDebug) const
bool checkTeiManagement () const

Static Public Member Functions

static u_int16_t getRi (const DataBlock &data)
static u_int8_t getType (const DataBlock &data)
static u_int8_t getAi (const DataBlock &data)
static ISDNFrameparse (const DataBlock &data, ISDNLayer2 *receiver)
static bool buildTeiManagement (DataBlock &data, u_int8_t type, u_int16_t ri, u_int8_t ai)
static bool commandBit (bool network)
static bool responseBit (bool network)
static bool isCommand (u_int8_t cr, bool sentByNetwork)
static const char * typeName (Type type)

Static Public Attributes

static TokenDict s_types []

Protected Member Functions

 ISDNFrame (Type type=Invalid)
 ISDNFrame (Type type, bool command, bool senderNetwork, u_int8_t sapi, u_int8_t tei, bool pf, u_int8_t nr=0)
 ISDNFrame (bool ack, bool senderNetwork, u_int8_t sapi, u_int8_t tei, bool pf, const DataBlock &data)

Friends

class ISDNQ921
class ISDNQ921Management

Detailed Description

An ISDN frame.

Encapsulates an ISDN (Q.921) frame exchanged over a hardware HDLC interface


Member Enumeration Documentation

enum Category

Frame category

Codes used for TEI management procedures (Q.921 Table 8)

enum Type

Frame type according to Q.921 3.6


Constructor & Destructor Documentation

virtual ~ISDNFrame (  )  [virtual]

Destructor

ISDNFrame ( Type  type = Invalid  )  [protected]

Constructor Used by the parser

Parameters:
type Frame type
ISDNFrame ( Type  type,
bool  command,
bool  senderNetwork,
u_int8_t  sapi,
u_int8_t  tei,
bool  pf,
u_int8_t  nr = 0 
) [protected]

Constructor Create U/S frames: SABME/DM/DISC/UA/FRMR/XID/RR/RNR/REJ Set data members. Encode frame in buffer according to Q.921 Used by ISDNLayer2 to create outgoing frames

Parameters:
type Frame type
command Frame command/response's flag
senderNetwork True if the sender is the network side of the data link
sapi SAPI value
tei TEI value
pf Poll/final flag
nr Optional transmitter receive sequence number
ISDNFrame ( bool  ack,
bool  senderNetwork,
u_int8_t  sapi,
u_int8_t  tei,
bool  pf,
const DataBlock data 
) [protected]

Constructor Create I/UI frames Set data members. Encode frame in buffer according to Q.921 Used by ISDNLayer2 to create outgoing frames

Parameters:
ack True to create an I frame. False to create an UI frame
senderNetwork True if the sender is the network side of the data link
sapi SAPI value
tei TEI value
pf Poll/final flag
data Transmitted data

Member Function Documentation

const DataBlock& buffer (  )  const [inline]

Get the frame's buffer

Returns:
The frame's buffer
static bool buildTeiManagement ( DataBlock data,
u_int8_t  type,
u_int16_t  ri,
u_int8_t  ai 
) [static]

Build a TEI management message buffer

Parameters:
data Destination buffer to fill
type The message type
ri The reference number
ai The action indicator
Returns:
True on succes
Category category (  )  const [inline]

Get the category of this frame

Returns:
The category of this frame as enumeration
bool checkTeiManagement (  )  const

Check if the received frame is a TEI management frame

Returns:
True if the frame is a TEI management one, false if it's not
bool command (  )  const [inline]

Check if this frame is a command

Returns:
True if this frame is a command. False if it is a response
static bool commandBit ( bool  network  )  [inline, static]

Get the command bit value for a given side of a data link

Parameters:
network True for the network side, false for the user side of a data link
Returns:
The appropriate command bit value
u_int32_t dataLength (  )  const [inline]

Get the length of the data carried by this frame

Returns:
The length of the data carried by this frame
Type error (  )  const [inline]

Get the error type

Returns:
The error type of this frame as enumeration
static u_int8_t getAi ( const DataBlock data  )  [inline, static]

Get action indicator

Parameters:
data Data block which contains it
Returns:
Action indicator value

References DataBlock::at().

void getData ( DataBlock dest  )  const [inline]

Get the data transferred with this frame

Parameters:
dest The destination buffer

References DataBlock::assign().

static u_int16_t getRi ( const DataBlock data  )  [static]

Get reference number from frame

Parameters:
data The data block which contains it
Returns:
Reference number
static u_int8_t getType ( const DataBlock data  )  [inline, static]

Get frame message type

Parameters:
data The data block which contains it
Returns:
Message type

References DataBlock::at().

u_int8_t headerLength (  )  const [inline]

Get the length of the frame's header

Returns:
The length of the frame's header
static bool isCommand ( u_int8_t  cr,
bool  sentByNetwork 
) [inline, static]

Get the command/response type from C/R bit value and sender type

Parameters:
cr The value of the C/R bit
sentByNetwork True if the sender is the network side of the data link
Returns:
True if it is a command
const char* name (  )  const [inline]

Get the text associated with the frame's type

Returns:
The text associated with the frame's type
u_int8_t nr (  )  const [inline]

Get the transmitter receive sequence number

Returns:
The transmitter receive sequence number
u_int8_t ns (  )  const [inline]

Get the transmitter send sequence number

Returns:
The transmitter send sequence number
static ISDNFrame* parse ( const DataBlock data,
ISDNLayer2 receiver 
) [static]

Parse a received data block

Parameters:
data Data to parse
receiver The receiver of the data
Returns:
ISDNFrame pointer or 0 (no control field)
bool poll (  )  const [inline]

Check if this frame is a poll (expect response) or a final one

Returns:
True if this a poll frame. False if it is a final one
static bool responseBit ( bool  network  )  [inline, static]

Get the response bit value for a given side of a data link

Parameters:
network True for the network side, false for the user side of a data link
Returns:
The appropriate response bit value
u_int8_t sapi (  )  const [inline]

Get the SAPI of this frame

Returns:
The SAPI of this frame
void sent ( bool  value  )  [inline]

Set transmitted flag

bool sent (  )  const [inline]

Check if the frame was sent

Returns:
True if the frame was sent
u_int8_t tei (  )  const [inline]

Get the TEI of this frame

Returns:
The TEI of this frame
void toString ( String dest,
bool  extendedDebug 
) const

Write this frame to a string for debug purposes

Parameters:
dest The destination string
extendedDebug True to dump message header and data
Type type (  )  const [inline]

Get the type of this frame

Returns:
The type of this frame as enumeration
static const char* typeName ( Type  type  )  [inline, static]

Get the text associated with the given frame type

Parameters:
type Frame type to get the text for
Returns:
The text associated with the given frame type

References TelEngine::lookup().

void update ( u_int8_t *  ns = 0,
u_int8_t *  nr = 0 
)

Update sequence numbers for I frames

Parameters:
ns Optional update send sequence number
nr Optional update receive sequence number

Member Data Documentation

TokenDict s_types[] [static]

Keep the association between frame types and texts


The documentation for this class was generated from the following file:
Generated on Thu Apr 8 18:19:46 2010 for Yate by  doxygen 1.6.3