bintec-capi-isdnlogin/xmodem.h

94 lines
3.2 KiB
C

/************************************************************************
* (C)opyright 1991-1999 BinTec Communications AG, All Rights Reserved
*
* Title: <one line description>
* Author: <username>
* $RCSfile: xmodem.h,v $
* $Revision: 74 $
* $Date: 2005-12-22 01:06:50 +0100 (Thu, 22 Dec 2005) $
* $State: Exp $
*
* Type: include file for ..
* Products: ALL | XS,XM,XL,XP,BGO,BGP,XCM
* Description: --
*-----------------------------------------------------------------------
* Current Log:
***********************************************************************/
#ifndef _xmodem_h
#define _xmodem_h
#ifdef USE_RCSID_H
static const char _rcsid_xmodem_h[] __UNUSED = "$Id: xmodem.h,v 1.1 2002/12/19 12:53:33 shoki Exp $";
#endif
/* ASCII Constants */
#define SOH 001
#define STX 002
#define ETX 003
#define EOT 004
#define ENQ 005
#define ACK 006
#define LF 012 /* Unix LF/NL */
#define CR 015
#define NAK 025
#define SYN 026
#define CAN 030
#define ESC 033
/* XMODEM Constants */
#define TIMEOUT -1
#define ERRORMAX 10 /* maximum errors tolerated */
#define CRCSWMAX 4 /* maximum time to try CRC mode before switching */
#define KSWMAX 5 /* maximum errors before switching to 128 byte packets */
#define NAKMAX 2 /* maximum times to wait for initial NAK when sending */
#define RETRYMAX 5 /* maximum retries to be made */
#define CRCCHR 'C' /* CRC request character */
#define CTRLZ 032 /* CP/M EOF for text (usually!) */
#undef DEBUG
/* the CRC polynomial. */
#define P 0x1021
/* number of bits in CRC */
#define W 16
/* this the number of bits per char */
#define B 8
#define XMODEM_EOT 0 /* End of transmission */
#define XMODEM_ERROR 1 /* Too many errors */
#define XMODEM_RCVPKT 2 /* Received Packet */
#define BBUFSIZ 1024 /* buffer size */
typedef struct {
int rd; /* read path */
int wr; /* write path */
unsigned long ident; /* for capi ident */
unsigned short handle; /* for capi data handle */
} rwfd_t;
typedef struct {
CONST char *filename; /* filename of file to send */
FILE *sendfp; /* filepointer to opened file to be sent */
time_t starttime; /* when did the transfer start */
int sectnum; /* number of last packet (modulo 128) */
int errors; /* running cnt of errors(reset when 1st packet starts */
int recvsectcnt; /* running sector count (128 byte sectors) */
int sentsectcnt;
rwfd_t fd; /* i/o pathes */
int ldsav; /* saved ld mode */
char rcvstartch; /* char to request next packet */
unsigned char buf[BBUFSIZ + 6];
unsigned one_kb:1; /* 1024 byte mode configured (only sender) */
unsigned got_ack:1;
unsigned crcmode:1;
unsigned failed:1;
unsigned got_eot:1; /* end-of-transmission was received */
unsigned conmode:1; /* i/o via console */
} xmodem_t;
#endif