|
|
3.15b
/* xmodem.h */
/* Synchronet X/YMODEM Functions */
/* $Id: xmodem.h,v 1.1.1.2 2018/04/24 16:42:43 root Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
* *
* Copyright 2010 Rob Swindell - http://www.synchro.net/copyright.html *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:[email protected]:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to [email protected] *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
#ifndef _XMODEM_H_
#define _XMODEM_H_
#include "gen_defs.h"
#define CPMEOF CTRL_Z /* CP/M End of file (^Z) */
#define XMODEM_MIN_BLOCK_SIZE 128
#define XMODEM_MAX_BLOCK_SIZE 1024
typedef struct {
void* cbdata;
long* mode;
BOOL cancelled;
BOOL crc_mode_supported; /* for send */
BOOL g_mode_supported; /* for send */
unsigned block_size;
unsigned max_block_size; /* for recv */
unsigned ack_timeout;
unsigned byte_timeout;
unsigned send_timeout;
unsigned recv_timeout;
unsigned errors;
unsigned max_errors;
unsigned fallback_to_xmodem; /* fallback to Xmodem after this many Ymodem send attempts */
unsigned g_delay;
ulong total_files;
int64_t total_bytes;
unsigned sent_files;
int64_t sent_bytes;
int *log_level;
int (*lputs)(void*, int level, const char* str);
void (*progress)(void*, unsigned block_num, int64_t offset, int64_t fsize, time_t t);
int (*send_byte)(void*, uchar ch, unsigned timeout);
int (*recv_byte)(void*, unsigned timeout);
BOOL (*is_connected)(void*);
BOOL (*is_cancelled)(void*);
void (*flush)(void*);
} xmodem_t;
void xmodem_init(xmodem_t*, void* cbdata, long* mode
,int (*lputs)(void*, int level, const char* str)
,void (*progress)(void* unused, unsigned block_num, int64_t offset, int64_t fsize, time_t t)
,int (*send_byte)(void*, uchar ch, unsigned timeout)
,int (*recv_byte)(void*, unsigned timeout)
,BOOL (*is_connected)(void*)
,BOOL (*is_cancelled)(void*)
,void (*flush)(void*)
);
char* xmodem_ver(char *buf);
const char* xmodem_source(void);
int xmodem_cancel(xmodem_t*);
int xmodem_get_ack(xmodem_t*, unsigned tries, unsigned block_num);
BOOL xmodem_get_mode(xmodem_t*);
BOOL xmodem_put_eot(xmodem_t*);
int xmodem_put_ack(xmodem_t*);
int xmodem_put_nak(xmodem_t*, unsigned block_num);
int xmodem_get_block(xmodem_t*, uchar* block, unsigned block_num);
int xmodem_put_block(xmodem_t*, uchar* block, unsigned block_size, unsigned block_num);
BOOL xmodem_send_file(xmodem_t* xm, const char* fname, FILE* fp, time_t* start, int64_t* sent);
#endif /* Don't add anything after this line */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.