Files
zOS/common/umlibc/misc/xmodem.h

91 lines
2.4 KiB
C
Executable File

#include "stdconst.h"
// XMODEM constants
#define XMODEM_RETRIES (8)
#define XMODEM_TIMEOUT (8000)
#define XMODEM_TIMEINC (2000)
#define XMODEM_PKTSIZE (128)
#define XMODEM_CRCFLAG (1)
typedef struct xmodem_state_t {
UBYTE state;
UBYTE ready;
UBYTE response;
int input;
UBYTE flush;
UBYTE process;
UBYTE done;
UBYTE retries;
ULONG expiry;
UBYTE seqNum;
UBYTE pktBytes;
UBYTE buffer[XMODEM_PKTSIZE+6];
} xmodem_state;
extern int xmodem_recv( const char ** );
extern int xmodem_send( const char *, size_t );
// xmodem control characters
#define SOH (0x01)
#define STX (0x02)
#define EOT (0x04)
#define ACK (0x06)
#define NAK (0x15)
#define CAN (0x18)
#define CTRLZ (0x1A)
#define XMODEM_READY_DONE (0)
#define XMODEM_READY_IDLE (1)
#define XMODEM_READY_NEWRX (2)
#define XMODEM_READY_NEWTX (3)
#define XMODEM_READY_TX (4)
// error return codes
#define XMODEM_ERROR_NONE ( 0)
#define XMODEM_ERROR_REMOTECANCEL (-1)
#define XMODEM_ERROR_EXCEEDEDRETRY (-2)
#define XMODEM_ERROR_OUTOFSYNC (-3)
#define XMODEM_ERROR_NOMEMORY (-4)
#define XMODEM_ERROR_ALREADYTX (-5)
#define XMODEM_ERROR_ALREADYRX (-6)
// state masks
#define XMODEM_STATE_MASK (0x0F)
#define XMODEM_DIR (0x10)
#define XMODEM_FORCE (0x20)
#define XMODEM_IDLE (0x00)
#define XMODEM_ABORT (XMODEM_FORCE | 0x0F)
// receive states
#define XMODEM_RECV_QUERY (XMODEM_FORCE | 0x01)
#define XMODEM_RECV_REPLY ( 0x02)
#define XMODEM_RECV_PART ( 0x03)
#define XMODEM_RECV_PACKET (XMODEM_FORCE | 0x04)
#define XMODEM_RECV_CANCEL ( 0x05)
#define XMODEM_RECV_DONE (XMODEM_FORCE | 0x07)
// send states
#define XMODEM_SEND_QUERY ( 0x11)
#define XMODEM_SEND_PACKET (XMODEM_FORCE | 0x12)
#define XMODEM_SEND_WAIT ( 0x13)
#define XMODEM_SEND_CANCEL ( 0x14)
#define XMODEM_SEND_CLOSE (XMODEM_FORCE | 0x15)
#define XMODEM_SEND_ACK ( 0x16)
// #define XMODEM_ERROR_REMOTECANCEL (-1)
// #define XMODEM_ERROR_OUTOFSYNC (-2)
// #define XMODEM_ERROR_RETRYEXCEED (-3)
// #define XMODEM_ERROR_OUTOFMEM (-4)