ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/include/serial.h
Revision: 1.1
Committed: 1999-10-03T14:16:26Z (24 years, 8 months ago) by cebix
Content type: text/plain
Branch: MAIN
Branch point for: cebix
Log Message:
Initial revision

File Contents

# Content
1 /*
2 * serial.h - Serial device driver
3 *
4 * Basilisk II (C) 1997-1999 Christian Bauer
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef SERIAL_H
22 #define SERIAL_H
23
24 /*
25 * port:
26 * 0 - .AIn
27 * 1 - .AOut
28 * 2 - .BIn
29 * 3 - .BOut
30 */
31
32 extern int16 SerialOpen(uint32 pb, uint32 dce, int port);
33 extern int16 SerialPrime(uint32 pb, uint32 dce, int port);
34 extern int16 SerialControl(uint32 pb, uint32 dce, int port);
35 extern int16 SerialStatus(uint32 pb, uint32 dce, int port);
36 extern int16 SerialClose(uint32 pb, uint32 dce, int port);
37
38 extern void SerialInterrupt(void);
39
40 // System specific and internal functions/data
41 extern void SerialInit(void);
42 extern void SerialExit(void);
43
44 // Serial driver Deferred Task structure
45 enum {
46 serdtCode = 20, // DT code is stored here
47 serdtResult = 30,
48 serdtDCE = 34,
49 SIZEOF_serdt = 38
50 };
51
52 // Variables for one (In/Out combined) serial port
53 // To implement a serial driver, you create a subclass of SERDPort
54 class SERDPort {
55 public:
56 SERDPort()
57 {
58 is_open = false;
59 input_dt = output_dt = 0;
60 }
61
62 virtual int16 Open(uint16 config) = 0;
63 virtual int16 PrimeIn(uint32 pb, uint32 dce) = 0;
64 virtual int16 PrimeOut(uint32 pb, uint32 dce) = 0;
65 virtual int16 Control(uint32 pb, uint32 dce, uint16 code) = 0;
66 virtual int16 Status(uint32 pb, uint32 dce, uint16 code) = 0;
67 virtual int16 Close(void) = 0;
68
69 bool is_open; // Port has been opened
70 uint8 cum_errors; // Cumulative errors
71
72 bool read_pending; // Read operation pending
73 bool read_done; // Read operation complete
74 uint32 input_dt; // Mac address of Deferred Task for reading
75
76 bool write_pending; // Write operation pending
77 bool write_done; // Write operation complete
78 uint32 output_dt; // Mac address of Deferred Task for writing
79 };
80
81 extern SERDPort *the_serd_port[2];
82
83 #endif