libisdn
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "Q921.h"
#include "Q921priv.h"
#include "mfifo.h"
Go to the source code of this file.
Data Structures | |
struct | Q921StateName |
Static array of state name / value mappings. | |
Defines | |
#define | MSG_PUTS(buf, off, lef, fmt) |
#define | MSG_SPRINTF(buf, off, lef, fmt,...) |
Functions | |
Q921_API int | Q921_InitTrunk (L2TRUNK trunk, L2UCHAR sapi, L2UCHAR tei, Q921NetUser_t NetUser, Q921NetType_t NetType, L2INT hsize, Q921Tx21CB_t cb21, Q921Tx23CB_t cb23, void *priv21, void *priv23) |
Q921_API void | Q921TimerTick (L2TRUNK trunk) |
Q921_API void | Q921SetGetTimeCB (L2ULONG(*callback)(void)) |
Q921_API int | Q921QueueHDLCFrame (L2TRUNK trunk, L2UCHAR *b, L2INT size) |
Q921_API int | Q921IsEstablished (L2TRUNK trunk, L2UCHAR tei) |
Q921_API int | Q921Establish (L2TRUNK trunk, L2UCHAR tei) |
Q921_API int | Q921Release (L2TRUNK trunk, L2UCHAR tei) |
Q921_API int | Q921Rx32 (L2TRUNK trunk, Q921DLMsg_t ind, L2UCHAR tei, L2UCHAR *Mes, L2INT Size) |
Q921_API int | Q921Start (L2TRUNK trunk) |
Start trunk. | |
Q921_API int | Q921Stop (L2TRUNK trunk) |
Stop trunk. | |
int | Q921Rx12 (L2TRUNK trunk) |
Process Q.921 frame that has been enqueued using Q921QueueHDLCFrame() | |
void | Q921SetLogCB (L2TRUNK trunk, Q921LogCB_t func, void *priv) |
Set logging callback. | |
void | Q921SetLogLevel (L2TRUNK trunk, Q921LogLevel_t level) |
Set loglevel of Q.921 logging functions. | |
Q921_API Q921LogLevel_t | Q921GetLogLevel (L2TRUNK trunk) |
Get Loglevel. | |
Q921_API const char * | Q921GetLogLevelName (L2TRUNK trunk) |
Get Loglevel Name. |
#define MSG_PUTS | ( | buf, | |
off, | |||
lef, | |||
fmt | |||
) |
#define MSG_SPRINTF | ( | buf, | |
off, | |||
lef, | |||
fmt, | |||
... | |||
) |
Q921_API int Q921_InitTrunk | ( | L2TRUNK | trunk, |
L2UCHAR | sapi, | ||
L2UCHAR | tei, | ||
Q921NetUser_t | NetUser, | ||
Q921NetType_t | NetType, | ||
L2INT | hsize, | ||
Q921Tx21CB_t | cb21, | ||
Q921Tx23CB_t | cb23, | ||
void * | priv21, | ||
void * | priv23 | ||
) |
Public functions Initialize Q.921 Trunk
[in] | trunk | Q.921 trunk |
[in] | sapi | SAPI |
[in] | tei | TEI (ignored in PTMP mode) |
[in] | NetUser | Mode (Network / User) |
[in] | NetType | Type (PTP / PTMP) |
[in] | hsize | |
[in] | cb21 | Layer1 TX callback, called to send Q.921 to Layer 1 |
[in] | cb23 | Layer3 RX callback, called to submit frames to Layer 3 |
[in] | priv21 | Custom data for Layer1 TX callback |
[in] | priv23 | Custom data for Layer3 RX callback |
Definition at line 366 of file Q921.c.
References INITIALIZED_MAGIC, MFIFOCreate(), Q921_IS_PTMP, Q921_IS_PTMP_NT, Q921_TEI_MAX, Q921MAXHDLCSPACE, and Q921_Link::tei.
Q921_API int Q921Establish | ( | L2TRUNK | trunk, |
L2UCHAR | tei | ||
) |
Establish Q.921 link
[in] | trunk | Q.921 trunk |
[in] | tei | TEI of link to establish |
Definition at line 1613 of file Q921.c.
References Q921_Link::IFrameQueue, MFIFOClear(), Q921_FLAG_L3_INITIATED, Q921_IS_NT, Q921_LINK_CONTEXT, Q921_LOG_DEBUG, Q921_SET_FLAG, Q921_STATE_AWAITING_ESTABLISHMENT, Q921_STATE_MULTIPLE_FRAME_ESTABLISHED, Q921_STATE_TEI_ASSIGNED, Q921_STATE_TIMER_RECOVERY, Q921_Link::state, and Q921_Link::tei.
Referenced by Q921Rx32().
Q921_API Q921LogLevel_t Q921GetLogLevel | ( | L2TRUNK | trunk | ) |
Get Loglevel.
Q921GetLogLevel
trunk | Q.921 trunk |
Definition at line 3328 of file Q921.c.
References Q921_LOG_NONE.
Q921_API const char* Q921GetLogLevelName | ( | L2TRUNK | trunk | ) |
Get Loglevel Name.
Q921GetLogLevelName
trunk | Q.921 trunk |
Definition at line 3356 of file Q921.c.
References Q921_LOG_NONE.
Q921_API int Q921IsEstablished | ( | L2TRUNK | trunk, |
L2UCHAR | tei | ||
) |
Is Q.921 link ready to transmit data?
[in] | trunk | Q.921 trunk |
[in] | tei | TEI of link to check |
Definition at line 1606 of file Q921.c.
References Q921_LINK_CONTEXT, Q921_STATE_MULTIPLE_FRAME_ESTABLISHED, and Q921_Link::state.
Q921_API int Q921QueueHDLCFrame | ( | L2TRUNK | trunk, |
L2UCHAR * | b, | ||
L2INT | size | ||
) |
Enqueue new incoming Q.921 frame from Layer 1
[in] | trunk | Q.921 trunk |
[in] | b | Buffer to incoming data |
[in] | size | Size of incoming data |
Definition at line 1377 of file Q921.c.
References MFIFOWriteMes().
Q921_API int Q921Release | ( | L2TRUNK | trunk, |
L2UCHAR | tei | ||
) |
Release Q.921 link
[in] | trunk | Q.921 trunk |
[in] | tei | TEI of link to release |
Definition at line 1667 of file Q921.c.
References Q921_Link::IFrameQueue, MFIFOClear(), Q921_Link::N200, Q921_COMMAND, Q921_DL_RELEASE, Q921_IS_NT, Q921_LINK_CONTEXT, Q921_LOG_DEBUG, Q921_STATE_AWAITING_RELEASE, Q921_STATE_MULTIPLE_FRAME_ESTABLISHED, Q921_STATE_TEI_ASSIGNED, Q921_STATE_TIMER_RECOVERY, Q921_Link::state, and Q921_Link::tei.
Referenced by Q921Rx32().
Process Q.921 frame that has been enqueued using Q921QueueHDLCFrame()
Receive incoming data from Layer 1
[in] | trunk | Q.921 trunk |
Definition at line 3222 of file Q921.c.
References L2INT, L2UCHAR, MFIFOGetMesPtr(), MFIFOKillNext(), Q921_IS_PTMP_TE, Q921_LINK_CONTEXT, Q921_LOG_DEBUG, Q921_LOG_ERROR, Q921_STATE_TEI_ASSIGNED, Q921_STATE_TEI_UNASSIGNED, Q921_TEI_BCAST, Q921_Link::state, and Q921_Link::tei.
TODO: NT mode handling? Need a way to get Link context from Q.931
Definition at line 1710 of file Q921.c.
References Q921_Link::IFrameQueue, L2INT, MFIFOClear(), Q921_Link::N200, Q921_COMMAND, Q921_DL_DATA, Q921_DL_ESTABLISH, Q921_DL_RELEASE, Q921_DL_UNIT_DATA, Q921_FLAG_L3_INITIATED, Q921_IS_NT, Q921_LINK_CONTEXT, Q921_LOG_DEBUG, Q921_SET_FLAG, Q921_STATE_AWAITING_ESTABLISHMENT, Q921_STATE_AWAITING_RELEASE, Q921_STATE_MULTIPLE_FRAME_ESTABLISHED, Q921_STATE_TEI_ASSIGNED, Q921_STATE_TIMER_RECOVERY, Q921_TEI_BCAST, Q921Establish(), Q921Release(), Q921_Link::state, and Q921_Link::tei.
Q921_API void Q921SetGetTimeCB | ( | L2ULONG(*)(void) | callback | ) |
void Q921SetLogCB | ( | L2TRUNK | trunk, |
Q921LogCB_t | func, | ||
void * | priv | ||
) |
void Q921SetLogLevel | ( | L2TRUNK | trunk, |
Q921LogLevel_t | level | ||
) |
Set loglevel of Q.921 logging functions.
Q921SetLogLevel
[in] | trunk | pointer to Q921 data struct |
[in] | level | new loglevel |
Definition at line 3305 of file Q921.c.
References Q921_LOG_DEBUG, and Q921_LOG_NONE.
Start trunk.
Q921Start
[in] | trunk | pointer to Q921 data struct |
Definition at line 1964 of file Q921.c.
References Q921_Link::IFrameQueue, Q921_Link::IFrameResendQueue, INITIALIZED_MAGIC, MFIFOCreate(), Q921_COMMAND, Q921_IS_PTMP, Q921_IS_PTMP_NT, Q921_IS_PTMP_TE, Q921_IS_PTP, Q921_IS_TE, Q921_LINK_CONTEXT, Q921_LOG_DEBUG, Q921_STATE_TEI_ASSIGNED, Q921_STATE_TEI_UNASSIGNED, Q921_TEI_BCAST, Q921_TEI_MAX, Q921_TRUNK_CONTEXT, Q921MAXHDLCSPACE, Q921_Link::state, Q921_Link::tei, and Q921_Link::UIFrameQueue.
Stop trunk.
Q921Stop
[in] | trunk | pointer to Q921 data struct |
Definition at line 2043 of file Q921.c.
References Q921_Link::IFrameQueue, Q921_Link::IFrameResendQueue, MFIFOClear(), Q921_IS_PTMP_NT, Q921_IS_PTMP_TE, Q921_IS_STOPPED, Q921_STATE_STOPPED, Q921_TEI_MAX, Q921_TRUNK_CONTEXT, Q921_Link::tei, and Q921_Link::UIFrameQueue.
Q921_API void Q921TimerTick | ( | L2TRUNK | trunk | ) |
Update internal timers
[in] | trunk | Q.921 trunk |
Definition at line 1311 of file Q921.c.
References L2ULONG, Q921_IS_PTMP_NT, Q921_LINK_CONTEXT, Q921_STATE_STOPPED, Q921_TEI_MAX, Q921_Link::state, Q921_Link::T200, Q921_Link::T201, Q921_Link::T203, and Q921_Link::tei.