|
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.