Multiplexer Driver Developer’s Guide
7.3 Buffer Handling
s
7.3Buffer Handling
SerMux
SerPortN | Mulitplexer Control Port 0 |
Channel number |
|
|
|
|
Send |
| RCV |
| |
Priority with MaxSequence |
|
| ||
Timeouts (Request Timeouts and | Queue |
| Queue |
|
Scanning Timeouts) | Requests |
| Requests |
|
Statistics |
|
|
|
|
V24 Status from itself and the |
|
|
|
|
Modem | Circular |
| Circular |
|
Handshake Status |
|
| ||
Current Read and Write Status | buffer |
| buffer |
|
Circular Buffer Params | Send |
| RCV |
|
ScanSendRequest |
|
|
|
|
|
|
|
|
|
SerPort 0
Special control functions:
EstablishDLC
ReleaseDLC
CloseDown
SetModemStatus
SendVersionCommand
ConfirmCommand
Buffer
Circular
buffer
Send
CommandBuffer
GetFrameBufferPort0()
if receive a Control Command
SerPort0IndicateFrame()
Timer functions:
WrTimer()
OnTimerSerPort0()
OnTimerSerPort()
Control Timeouts for Send and Receive Queue Requests for repeating Control Commands and Timeouts for scanning the Escape Sequence
Send function:
while(GetWriteBuffer) { SerPort=GetNextSerPort();
}
Frame Assembly and check
state machine Demux
IndicateRead {
ProcessData(); // check frame, crc SerPortIndicateFrame()
//indicate frame to a SerPort instance
}
WrGetWriteBuffer(void *Buffer,ULONG &Length); | void WrIndicateReadBuffer(void *Buffer,ULONG Length); |
WrSubmitWriteBuffer(void *Buffer,ULONG |
|
Length); |
|
WrWriteComplete(); |
|
WrReturnWriteBuffer(); |
|
Write Buffer | Read Buffer |
Pool | Pool |
Wrapper
Figure 5: Driver internal buffer handling
Mux_Drv_DevGuide_v07 | Page 29 of 36 | |
Confidential / Released |
|
|