blob: a62a174b378c341af3617c25d50831f2f851d61c [file] [log] [blame]
Markus Klotzbuecherf2841d32006-03-30 13:40:55 +02001//==========================================================================
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
78extern 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
89typedef 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
98typedef unsigned int bool;
99
100#define false 0
101#define true 1
102
103#endif
104
105
106int xyzModem_stream_open(connection_info_t *info, int *err);
107void xyzModem_stream_close(int *err);
108void xyzModem_stream_terminate(bool method, int (*getc)(void));
109int xyzModem_stream_read(char *buf, int size, int *err);
110char *xyzModem_error(int err);
111
112#endif // _XYZMODEM_H_