91 lines
2.4 KiB
C
Executable File
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)
|
|
|