1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- MODULE XYModem;
- IMPORT SYSTEM, Objects, Kernel, Streams, Files, Serials, Strings, Commands;
- CONST
- SOH = 1X;
- STX = 2X;
- EOT = 4X;
- ACK = 6X;
- EOF = 1AX;
- NAK = 15X;
- CAN = 18X;
- C = 43X;
- XModem* = 0;
- XModem1K* = 1;
- YModem* = 2;
- DoYield = TRUE;
- TYPE
- Modem* = OBJECT {EXCLUSIVE}
- VAR
- W: Streams.Writer;
- R: Streams.Reader;
- F: Files.File;
- mode: LONGINT;
- timeout: LONGINT;
- data: ARRAY 1024 OF CHAR;
- error: ARRAY 64 OF CHAR;
- done, fail: BOOLEAN;
- bytesProcessed-, totalBytes-: LONGINT;
- PROCEDURE ^ & Init*(W: Streams.Writer; R: Streams.Reader; F: Files.File; mode: LONGINT);
- PROCEDURE ^ IsDone*(): BOOLEAN;
- PROCEDURE ^ Await*(VAR err: ARRAY OF CHAR);
- PROCEDURE ^ AwaitF*(VAR F: Files.File; VAR err: ARRAY OF CHAR);
- PROCEDURE ^ Stop;
- PROCEDURE ^ Read(VAR ch: CHAR): BOOLEAN;
- END Modem;
- Sender* = OBJECT {EXCLUSIVE} (Modem)
- PROCEDURE ^ YHeader(): LONGINT;
- PROCEDURE ^ SendFile;
- BEGIN{ACTIVE}
- END Sender;
- Receiver* = OBJECT {EXCLUSIVE} (Modem)
- PROCEDURE ^ YHeader(len: LONGINT; VAR name: ARRAY OF CHAR; VAR size: LONGINT);
- PROCEDURE ^ ReceiveFile;
- BEGIN{ACTIVE}
- END Receiver;
- PROCEDURE ^ IsDigit(ch: CHAR): BOOLEAN;
- PROCEDURE ^ CRC16(VAR buf: ARRAY OF CHAR; len: LONGINT): LONGINT;
- PROCEDURE ^ GetPars(context: Commands.Context; VAR name: ARRAY OF CHAR; VAR port, bps, parity, stop: LONGINT): BOOLEAN;
- PROCEDURE ^ xySend(context: Commands.Context; mode: LONGINT);
- PROCEDURE ^ XSend*(context: Commands.Context);
- PROCEDURE ^ XSend1K*(context: Commands.Context);
- PROCEDURE ^ YSend*(context: Commands.Context);
- PROCEDURE ^ xyReceive(context: Commands.Context; mode: LONGINT);
- PROCEDURE ^ XReceive*(context: Commands.Context);
- PROCEDURE ^ YReceive*(context: Commands.Context);
- BEGIN
- END XYModem.
|