|
|
/* File: C:\WACKER\xfer\mdmx.hh (Created: 17-Jan-1994)
* created from HAWIN source file * mdmx.hh -- Internal definitions for xmodem file transfer routines * * Copyright 1989,1994 by Hilgraeve Inc. -- Monroe, MI * All rights reserved * * $Revision: 2 $ * $Date: 4/12/02 5:00p $ */
/* Various constants */ #define SMALL_PACKET 128
#define LARGE_PACKET 1024
#define SMALL_WAIT 50
#define MEDIUM_WAIT 200
#define LARGE_WAIT 400
/* Block results */ #define UNDEFINED 0
#define GOOD_PCKT 1
#define ALT_PCKT 2
#define NOBATCH_PCKT 3
#define END_PCKT 4
#define REPEAT_PCKT 5
#define WRONG_PCKT 6
#define SHORT_PCKT 7
#define BAD_FORMAT 8
#define BAD_CHECK 9
#define NO_PCKT 10
#define BLK_ABORTED 11
#define CARRIER_LOST 12
#define CANNED 13
/* Responses include any character plus the following: */ #define NO_RESPONSE -1
#define ABORTED -2 /* also used as BlockReceive status */
#define CARR_LOST -3
/* transfer status codes */ #define XS_OK 0
#define XS_ABORTED 1
#define XS_CANCELLED 2
#define XS_NO_RESPONSE 3
#define XS_COMMERR 4
#define XS_FILEERR 5
#define XS_SYNCHERR 6
#define XS_NOSPACE 7
#define XS_CANTOPEN 8
#define XS_COMPLETE 9
#define XS_SHORTFILE 10
#define XS_BATCH_EXPECTED 11
/* Status codes for mdmx_progress */ #define FILE_DONE 1
#define TRANSFER_DONE 2
/* Control structure, allocated during transfers to hold control variables */ typedef struct s_mdmx_cntrl ST_MDMX; struct s_mdmx_cntrl { HSESSION hSession; HCOM hCom; /* derived from the above */
int nProto; /* The current protocol */
long file_bytes; long total_bytes; void *flagkey; ST_IOBUF *fh; long basesize; long xfertimer; long xfertime; unsigned nfiles; unsigned filen; long filesize; long nbytes; long mdmx_byte_cnt; /* count of bytes transferred */ long displayed_time; /* = -1L; */
struct s_mdmx_pckt *next_pckt; unsigned this_pckt;
int check_type; int batch; int streaming;
const unsigned short *p_crc_tbl; /* pointer to the CRC-16 table */
int mdmx_chkt; int mdmx_tries; int mdmx_chartime; int mdmx_pckttime;
stFB stP; /* Used in ComSend functions */
int (*p_getc)(ST_MDMX *); int (*p_putc)(ST_MDMX *, int); };
// typedef struct s_mdmx_cntrl ST_MDMX;
/* Global control variables */ // extern struct s_mdmx_cntrl *xc;
// extern metachar (NEAR *p_getc)(VOID); // for snd
// extern metachar (NEAR *p_putc)(metachar); // for rcv
/* Packet structure: allocated during transfers to hold packet contents */ struct s_mdmx_pckt { int result; int expected; int pcktsize; long byte_count; BYTE start_char; BYTE pcktnum; BYTE npcktnum; BYTE bdata[1]; };
/* function prototypes : */ extern void mdmx_progress(ST_MDMX *pX, int status);
// extern unsigned calc_crc(unsigned startval, BYTE *pntr, int count);
extern unsigned short calc_crc(ST_MDMX *pX, unsigned short startval, LPSTR pntr, int cnt);
int load_pckt(ST_MDMX *pX, struct s_mdmx_pckt *p, unsigned pcktnum, int kpckt, int chktype);
int xm_getc(ST_MDMX *pX);
int xs_unload(ST_MDMX *pX, BYTE *cp, int size);
int xm_putc(ST_MDMX *pX, int c);
/*
* the following were added for HA5G */
#define ComSendInit(h,p) fooComSendClear(h,p)
#define ComSendWait(h,p) fooComSendPush(h,p)
#define ComSendPush(h,p) fooComSendPush(h,p)
#define ComSendChar(h,p,c) fooComSendChar(h,p,c)
#define ComSendCharNow(h,p,c) fooComSendCharNow(h,p,c)
// #define RemoteGet(h) mComRcvChar(mGetComHdl(h))
// #define RemoteClear(h) mComRcvBufrClear(mGetComHdl(h))
#define SOH 1
#define STX 2
#define EOT 4
#define ACK 6
#define CAN 0x18
#define NAK 025
#define ESC 0x1B
#define CPMEOF 032
extern void mdmxXferInit(ST_MDMX *pX, int method);
/*
* The following are display functions, some of which might be removed and * replaced with MACROS. */
extern void mdmxdspFilecnt(ST_MDMX *pX, int cnt);
extern void mdmxdspErrorcnt(ST_MDMX *pX, int cnt);
extern void mdmxdspPacketErrorcnt(ST_MDMX *pX, int cnt);
extern void mdmxdspTotalsize(ST_MDMX *pX, long bytes);
extern void mdmxdspFilesize(ST_MDMX *pX, long fsize);
extern void mdmxdspNewfile(ST_MDMX *pX, int filen, LPSTR theirname, LPTSTR ourname);
extern void mdmxdspProgress(ST_MDMX *pX, long stime, long ttime, long cps, long file_so_far, long total_so_far);
extern void mdmxdspChecktype(ST_MDMX *pX, int ctype);
extern void mdmxdspPacketnumber(ST_MDMX *pX, long number);
extern void mdmxdspLastError(ST_MDMX *pX, int errcode);
extern void mdmxdspCloseDisplay(ST_MDMX *pX);
/* end of mdmx.hh */
|