mirror of
https://github.com/brazilofmux/tinymux
synced 2026-08-13 00:23:11 -04:00
Add decoder tables.
This commit is contained in:
parent
fe5a1df4fb
commit
5c952d04b0
2 changed files with 104 additions and 7 deletions
|
|
@ -31,8 +31,16 @@ typedef struct
|
|||
QUEUE_BLOCK *pTail;
|
||||
} QUEUE_INFO;
|
||||
|
||||
QUEUE_INFO *pQueue_In = NULL;
|
||||
QUEUE_INFO *pQueue_Out = NULL;
|
||||
QUEUE_INFO Queue_In;
|
||||
QUEUE_INFO Queue_Out;
|
||||
QUEUE_INFO Queue_Frame;
|
||||
|
||||
// Decoder
|
||||
//
|
||||
int iState = 0;
|
||||
size_t nLength = 0;
|
||||
UINT32 nChannel = 0;
|
||||
size_t nLengthRemaining = 0;
|
||||
|
||||
CHANNEL_INFO *aChannels = NULL;
|
||||
int nChannels = 0;
|
||||
|
|
@ -69,6 +77,12 @@ MUX_RESULT Channel0_Call(CHANNEL_INFO *pci, size_t nBuffer, void *pBuffer)
|
|||
return MUX_E_NOTIMPLEMENTED;
|
||||
}
|
||||
|
||||
void Pipe_InitializeQueueInfo(QUEUE_INFO *pqi)
|
||||
{
|
||||
pqi->pHead = NULL;
|
||||
pqi->pTail = NULL;
|
||||
}
|
||||
|
||||
void Pipe_AppendToQueue(QUEUE_INFO *pqi, size_t n, const char *p)
|
||||
{
|
||||
if ( 0 != n
|
||||
|
|
@ -138,7 +152,86 @@ void Pipe_AppendToQueue(QUEUE_INFO *pqi, size_t n, const char *p)
|
|||
}
|
||||
}
|
||||
|
||||
void Pipe_ParseQueue(QUEUE_INFO *pqi)
|
||||
void Pipe_FreeQueue(QUEUE_INFO *pqi)
|
||||
{
|
||||
if (NULL != pqi)
|
||||
{
|
||||
QUEUE_BLOCK *pBlock = pqi->pHead;
|
||||
|
||||
// Free all the QUEUE_BLOCKs finally the owning QUEUE_INFO structure.
|
||||
//
|
||||
while (NULL != pBlock)
|
||||
{
|
||||
QUEUE_BLOCK *qBlock = pBlock->pNext;
|
||||
delete pBlock;
|
||||
pBlock = qBlock;
|
||||
}
|
||||
delete pqi;
|
||||
}
|
||||
}
|
||||
|
||||
// CallMagic 0xC39B71F9 - 17, 14, 9, 20
|
||||
// ReturnMagic 0x35972DD0 - 7, 13, 6, 18
|
||||
// MsgMagic 0xF69E1836 - 19, 15, 3, 8
|
||||
// DiscMagic 0x960AA381 - 12, 1, 16, 10
|
||||
// EndMagic 0x27118B26 - 5, 2, 11, 4
|
||||
//
|
||||
|
||||
const UINT8 decoder_itt[256] =
|
||||
{
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
//
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, // 0
|
||||
0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, // 1
|
||||
0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 6, 0, 0, // 2
|
||||
0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6
|
||||
0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7
|
||||
|
||||
0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, // 8
|
||||
0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, 0, 15, 0, // 9
|
||||
0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
|
||||
0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
|
||||
18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
|
||||
0, 0, 0, 0, 0, 0, 19, 0, 0, 20, 0, 0, 0, 0, 0, 0 // F
|
||||
};
|
||||
|
||||
const UINT8 decoder_stt[21][23] =
|
||||
{
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
//
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 17, 0 }, // 0 Start
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, // 1 Call0
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 2 Call1
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 }, // 3 Call2
|
||||
{ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, // 4 Call3/Return3/Msg3/Disc3
|
||||
{ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, // 5 Length0
|
||||
{ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }, // 6 Length1
|
||||
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 }, // 7 Length2
|
||||
{ 12, 12, 12, 12, 12, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 }, // 8 Length3
|
||||
{ 12, 12, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 }, // 9 End0
|
||||
{ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12 }, // 10 End1
|
||||
{ 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 }, // 11 End2
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 17, 0 }, // 12 Cleanup
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 0, 17, 0 }, // 13 Accept
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0 }, // 14 Return0
|
||||
{ 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 15 Return1
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 }, // 16 Return2
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0 }, // 17 Msg0
|
||||
{ 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 18 Msg1
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 19 Msg2
|
||||
{ 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 20 Disc0
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0 }, // 21 Disc1
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } // 22 Disc2
|
||||
};
|
||||
|
||||
// Decode bytes out of Queue_In to Queue_Frame.
|
||||
//
|
||||
void Pipe_DecodeFrames(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -146,6 +239,10 @@ void Pipe_ParseQueue(QUEUE_INFO *pqi)
|
|||
|
||||
void Stub_ShoveChars(int fdServer)
|
||||
{
|
||||
Pipe_InitializeQueueInfo(Queue_In);
|
||||
Pipe_InitializeQueueInfo(Queue_Out);
|
||||
Pipe_InitializeQueueInfo(Queue_Frame);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char arg[MAX_STRING];
|
||||
|
|
@ -165,8 +262,8 @@ void Stub_ShoveChars(int fdServer)
|
|||
break;
|
||||
}
|
||||
|
||||
Pipe_AppendToQueue(pQueue_In, len, arg);
|
||||
Pipe_ParseQueue(pQueue_In);
|
||||
Pipe_AppendToQueue(Queue_In, len, arg);
|
||||
Pipe_DecodeFrames(Queue_In);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ III. Packet Format.
|
|||
|
||||
A. Call Frame.
|
||||
|
||||
CallMagic 0x359771F9
|
||||
CallMagic 0xC39B71F9
|
||||
Length 0x--------
|
||||
ToChannel 0x--------
|
||||
Data..................
|
||||
|
|
@ -130,7 +130,7 @@ III. Packet Format.
|
|||
|
||||
C. Message Frame (non-blocking).
|
||||
|
||||
ReturnMagic 0x35971836
|
||||
MsgMagic 0xF69E1836
|
||||
Length 0x--------
|
||||
ToChannel 0x--------
|
||||
Data..................
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue