1 //========================================================================== 2 // 3 // xyzModem.h 4 // 5 // RedBoot stream handler for xyzModem protocol 6 // 7 //========================================================================== 8 //####ECOSGPLCOPYRIGHTBEGIN#### 9 // ------------------------------------------- 10 // This file is part of eCos, the Embedded Configurable Operating System. 11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. 12 // Copyright (C) 2002 Gary Thomas 13 // 14 // eCos is free software; you can redistribute it and/or modify it under 15 // the terms of the GNU General Public License as published by the Free 16 // Software Foundation; either version 2 or (at your option) any later version. 17 // 18 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY 19 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 21 // for more details. 22 // 23 // You should have received a copy of the GNU General Public License along 24 // with eCos; if not, write to the Free Software Foundation, Inc., 25 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 26 // 27 // As a special exception, if other files instantiate templates or use macros 28 // or inline functions from this file, or you compile this file and link it 29 // with other works to produce a work based on this file, this file does not 30 // by itself cause the resulting work to be covered by the GNU General Public 31 // License. However the source code for this file must still be made available 32 // in accordance with section (3) of the GNU General Public License. 33 // 34 // This exception does not invalidate any other reasons why a work based on 35 // this file might be covered by the GNU General Public License. 36 // 37 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. 38 // at http://sources.redhat.com/ecos/ecos-license/ 39 // ------------------------------------------- 40 //####ECOSGPLCOPYRIGHTEND#### 41 //========================================================================== 42 //#####DESCRIPTIONBEGIN#### 43 // 44 // Author(s): gthomas 45 // Contributors: gthomas 46 // Date: 2000-07-14 47 // Purpose: 48 // Description: 49 // 50 // This code is part of RedBoot (tm). 51 // 52 //####DESCRIPTIONEND#### 53 // 54 //========================================================================== 55 56 #ifndef _XYZMODEM_H_ 57 #define _XYZMODEM_H_ 58 59 #define xyzModem_xmodem 1 60 #define xyzModem_ymodem 2 61 // Don't define this until the protocol support is in place 62 //#define xyzModem_zmodem 3 63 64 #define xyzModem_access -1 65 #define xyzModem_noZmodem -2 66 #define xyzModem_timeout -3 67 #define xyzModem_eof -4 68 #define xyzModem_cancel -5 69 #define xyzModem_frame -6 70 #define xyzModem_cksum -7 71 #define xyzModem_sequence -8 72 73 #define xyzModem_close 1 74 #define xyzModem_abort 2 75 76 77 #ifdef REDBOOT 78 extern getc_io_funcs_t xyzModem_io; 79 #else 80 #define CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT 81 #define CYGACC_CALL_IF_SET_CONSOLE_COMM(x) 82 83 #define diag_vprintf vprintf 84 #define diag_printf printf 85 #define diag_vsprintf vsprintf 86 87 #define CYGACC_CALL_IF_DELAY_US(x) udelay(x) 88 89 typedef struct { 90 char *filename; 91 int mode; 92 int chan; 93 #ifdef CYGPKG_REDBOOT_NETWORKING 94 struct sockaddr_in *server; 95 #endif 96 } connection_info_t; 97 98 typedef unsigned int bool; 99 100 #define false 0 101 #define true 1 102 103 #endif 104 105 106 int xyzModem_stream_open(connection_info_t *info, int *err); 107 void xyzModem_stream_close(int *err); 108 void xyzModem_stream_terminate(bool method, int (*getc)(void)); 109 int xyzModem_stream_read(char *buf, int size, int *err); 110 char *xyzModem_error(int err); 111 112 #endif // _XYZMODEM_H_ 113