mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 12:40:17 +00:00
add functions to initialize a trunk, and a public function to receive from layer 3 that sends an I frame.
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@86 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
f969341e86
commit
ca278fa2f1
@ -71,12 +71,36 @@ void Q921Init()
|
|||||||
for(x=0; x<Q921MAXTRUNK;x++)
|
for(x=0; x<Q921MAXTRUNK;x++)
|
||||||
{
|
{
|
||||||
MFIFOCreate(Q921DevSpace[x].HDLCInQueue, Q921MAXHDLCSPACE, 10);
|
MFIFOCreate(Q921DevSpace[x].HDLCInQueue, Q921MAXHDLCSPACE, 10);
|
||||||
Q921DevSpace[x].vr=0;
|
Q921DevSpace[x].vr = 0;
|
||||||
Q921DevSpace[x].vs=0;
|
Q921DevSpace[x].vs = 0;
|
||||||
Q921DevSpace[x].state=0;;
|
Q921DevSpace[x].state = 0;
|
||||||
|
Q921DevSpace[x].sapi = 0;
|
||||||
|
Q921DevSpace[x].tei = 0;
|
||||||
|
Q921DevSpace[x].NetUser = Q921_TE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
|
||||||
|
Function: Q921_InitTrunk
|
||||||
|
|
||||||
|
Decription: Initialize a Q.921 trunk so it is ready for use. This
|
||||||
|
function should be called before you call the rx functions
|
||||||
|
if your trunk will not use hardcoded tei and sapi of 0 or
|
||||||
|
if your trunk is not TE (user) mode (i.e. NET).
|
||||||
|
|
||||||
|
*****************************************************************************/
|
||||||
|
int Q921_InitTrunk(long trunk, int sapi, int tei, Q921NetUser_t NetUser)
|
||||||
|
{
|
||||||
|
if (trunk > Q921MAXTRUNK)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
Q921DevSpace[trunk].sapi = sapi;
|
||||||
|
Q921DevSpace[trunk].tei = tei;
|
||||||
|
Q921DevSpace[trunk].NetUser = NetUser;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void Q921SetHeaderSpace(int hspace)
|
void Q921SetHeaderSpace(int hspace)
|
||||||
{
|
{
|
||||||
Q921HeaderSpace=hspace;
|
Q921HeaderSpace=hspace;
|
||||||
@ -146,6 +170,16 @@ int Q921SendI(int trunk, L2UCHAR Sapi, char cr, L2UCHAR Tei, char pf, L2UCHAR *m
|
|||||||
return Q921Tx21Proc(trunk, mes, size);
|
return Q921Tx21Proc(trunk, mes, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Q921Rx32(long trunk, L2UCHAR * Mes, L2INT Size)
|
||||||
|
{
|
||||||
|
return Q921SendI(trunk,
|
||||||
|
Q921DevSpace[x].sapi,
|
||||||
|
Q921DevSpace[x].NetUser == Q921_TE ? 0 : 1;
|
||||||
|
Q921DevSpace[x].tei,
|
||||||
|
0,
|
||||||
|
Mes,
|
||||||
|
Size);
|
||||||
|
}
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Function: Q921SendRR
|
Function: Q921SendRR
|
||||||
|
@ -98,15 +98,26 @@
|
|||||||
#define L2UCHAR unsigned char /* Min 8 bit */
|
#define L2UCHAR unsigned char /* Min 8 bit */
|
||||||
#define L2INT int /* Min 16 bit signed */
|
#define L2INT int /* Min 16 bit signed */
|
||||||
|
|
||||||
|
typedef enum /* Network/User Mode. */
|
||||||
|
{
|
||||||
|
Q921_TE=0, /* 0 : User Mode */
|
||||||
|
Q921_NT=1 /* 1 : Network Mode */
|
||||||
|
} Q921NetUser_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
L2UCHAR HDLCInQueue[Q921MAXHDLCSPACE];
|
L2UCHAR HDLCInQueue[Q921MAXHDLCSPACE];
|
||||||
L2UCHAR vs;
|
L2UCHAR vs;
|
||||||
L2UCHAR vr;
|
L2UCHAR vr;
|
||||||
int state;
|
L2INT state;
|
||||||
|
L2INT sapi;
|
||||||
|
L2INT tei;
|
||||||
|
Q921NetUser_t NetUser;
|
||||||
|
|
||||||
}Q921Data;
|
}Q921Data;
|
||||||
|
|
||||||
void Q921Init();
|
void Q921Init();
|
||||||
|
int Q921_InitTrunk(long trunk, int sapi, int tei, Q921NetUser_t NetUser);
|
||||||
void Q921SetHeaderSpace(int hspace);
|
void Q921SetHeaderSpace(int hspace);
|
||||||
void Q921SetTx21CB(int (*callback)(int dev, L2UCHAR *, int));
|
void Q921SetTx21CB(int (*callback)(int dev, L2UCHAR *, int));
|
||||||
void Q921SetTx23CB(int (*callback)(int dev, L2UCHAR *, int));
|
void Q921SetTx23CB(int (*callback)(int dev, L2UCHAR *, int));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user