|
0
|
1 #ifndef CYGONCE_DEVS_COMMON_TABLE_H |
|
|
2 #define CYGONCE_DEVS_COMMON_TABLE_H |
|
|
3 |
|
|
4 //========================================================================== |
|
|
5 // |
|
|
6 // table.h |
|
|
7 // |
|
|
8 // Header file for the device table |
|
|
9 // |
|
|
10 //========================================================================== |
|
|
11 //####COPYRIGHTBEGIN#### |
|
|
12 // |
|
|
13 // ------------------------------------------- |
|
|
14 // The contents of this file are subject to the Cygnus eCos Public License |
|
|
15 // Version 1.0 (the "License"); you may not use this file except in |
|
|
16 // compliance with the License. You may obtain a copy of the License at |
|
|
17 // http://sourceware.cygnus.com/ecos |
|
|
18 // |
|
|
19 // Software distributed under the License is distributed on an "AS IS" |
|
|
20 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
|
21 // License for the specific language governing rights and limitations under |
|
|
22 // the License. |
|
|
23 // |
|
|
24 // The Original Code is eCos - Embedded Cygnus Operating System, released |
|
|
25 // September 30, 1998. |
|
|
26 // |
|
|
27 // The Initial Developer of the Original Code is Cygnus. Portions created |
|
|
28 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. |
|
|
29 // ------------------------------------------- |
|
|
30 // |
|
|
31 //####COPYRIGHTEND#### |
|
|
32 //========================================================================== |
|
|
33 //#####DESCRIPTIONBEGIN#### |
|
|
34 // |
|
|
35 // Author(s): proven |
|
|
36 // Contributors: proven |
|
|
37 // Date: 1998-04-20 |
|
|
38 // Purpose: Define Device Table |
|
|
39 // Description: This file contains the device table structure |
|
|
40 // Usage: #include <cyg/devs/common/table.h> |
|
|
41 // |
|
|
42 //####DESCRIPTIONEND#### |
|
|
43 // |
|
|
44 //========================================================================== |
|
|
45 |
|
|
46 /* |
|
|
47 * devs.h should be replaced by an appropriate ECC Hardy package. |
|
|
48 * and this file should mostly be auto generated -- proven 19980625 |
|
|
49 */ |
|
|
50 #include <pkgconf/devs.h> // What devices do we need. |
|
|
51 |
|
|
52 #include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
|
53 #include <cyg/devs/common/iorb.h> // Cyg_IORB definition |
|
|
54 #include <cyg/error/codes.h> // Standard error codes |
|
|
55 |
|
|
56 // Handles to some of the device entries. |
|
|
57 // These shouldn't go here and should be generated by ECC-Hardy |
|
|
58 // --proven 19980625 |
|
|
59 #ifdef CYG_DEVICE_SERIAL_RS232_MN10300_1 |
|
|
60 extern CYG_ADDRWORD stdeval1_serial1; |
|
|
61 #ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2 |
|
|
62 extern CYG_ADDRWORD stdeval1_serial2; |
|
|
63 #endif |
|
|
64 #else |
|
|
65 #ifdef CYG_DEVICE_SERIAL_RS232_MN10300_2 |
|
|
66 extern CYG_ADDRWORD stdeval1_serial2; |
|
|
67 #endif |
|
|
68 #endif |
|
|
69 |
|
|
70 #ifdef CYG_DEVICE_SERIAL_RS232_TX39 |
|
|
71 extern CYG_ADDRWORD jmr3904_serial; |
|
|
72 #endif |
|
|
73 |
|
|
74 // Mode for opening |
|
|
75 |
|
|
76 typedef enum { |
|
|
77 CYG_DEVICE_OPEN_MODE_TEXT, |
|
|
78 CYG_DEVICE_OPEN_MODE_RAW |
|
|
79 } Cyg_DeviceOpenMode; |
|
|
80 |
|
|
81 // ------------------------------------------------------------------------- |
|
|
82 // Cyg_Device_Table_t |
|
|
83 |
|
|
84 /* |
|
|
85 * Device table. |
|
|
86 */ |
|
|
87 struct Cyg_Device_Table_t |
|
|
88 { |
|
|
89 char * name; |
|
|
90 CYG_ADDRWORD cookie; |
|
|
91 // cyg_off_t seek_position; // Not implemented yet |
|
|
92 |
|
|
93 /* |
|
|
94 * Note: The cookie is necessary for the function to differentiate |
|
|
95 * between various instantiations of the same device type. |
|
|
96 * |
|
|
97 * Also note that open() will be called before the kernel scheduler |
|
|
98 * (and hence the interrupt system) starts, so it must be safe for this |
|
|
99 */ |
|
|
100 Cyg_ErrNo (*open) (CYG_ADDRWORD cookie, Cyg_DeviceOpenMode); |
|
|
101 Cyg_ErrNo (*read_cancel) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
102 Cyg_ErrNo (*write_cancel) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
103 Cyg_ErrNo (*read_blocking) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
104 Cyg_ErrNo (*write_blocking) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
105 Cyg_ErrNo (*read_asynchronous) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
106 Cyg_ErrNo (*write_asynchronous) (CYG_ADDRWORD cookie, Cyg_IORB *); |
|
|
107 Cyg_ErrNo (*close) (CYG_ADDRWORD cookie); |
|
|
108 |
|
|
109 CYG_ADDRWORD ioctl; |
|
|
110 }; |
|
|
111 |
|
|
112 externC struct Cyg_Device_Table_t Cyg_Device_Table[]; |
|
|
113 |
|
|
114 struct Cyg_Device_Serial_RS232_Table_t |
|
|
115 { |
|
|
116 Cyg_ErrNo (*set_kmode) (CYG_ADDRWORD cookie, cyg_uint32); |
|
|
117 Cyg_ErrNo (*get_baud_rate) (CYG_ADDRWORD cookie, cyg_int32 * ); |
|
|
118 Cyg_ErrNo (*set_baud_rate) (CYG_ADDRWORD cookie, cyg_int32, cyg_int32 *); |
|
|
119 Cyg_ErrNo (*get_line_mode) (CYG_ADDRWORD cookie, cyg_int32 * ); |
|
|
120 Cyg_ErrNo (*set_line_mode) (CYG_ADDRWORD cookie, cyg_int32, cyg_int32 *); |
|
|
121 |
|
|
122 Cyg_ErrNo (*get_read_mode) (CYG_ADDRWORD cookie, cyg_int32 * ); |
|
|
123 Cyg_ErrNo (*set_read_mode) (CYG_ADDRWORD cookie, cyg_int32, cyg_int32 *); |
|
|
124 Cyg_ErrNo (*set_read_data) (CYG_ADDRWORD cookie, cyg_int32, char *, cyg_uint32); |
|
|
125 }; |
|
|
126 |
|
|
127 /* |
|
|
128 * C API is just a set of macros |
|
|
129 */ |
|
|
130 #define cyg_read_cancel(x, y) \ |
|
|
131 ((struct Cyg_Device_Table_t *)x)->read_cancel(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
132 |
|
|
133 #define cyg_write_cancel(x, y) \ |
|
|
134 ((struct Cyg_Device_Table_t *)x)->write_cancel(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
135 |
|
|
136 #define cyg_read_blocking(x, y) \ |
|
|
137 ((struct Cyg_Device_Table_t *)x)->read_blocking(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
138 |
|
|
139 #define cyg_write_blocking(x, y) \ |
|
|
140 ((struct Cyg_Device_Table_t *)x)->write_blocking(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
141 |
|
|
142 #define cyg_read_asynchronous(x, y) \ |
|
|
143 ((struct Cyg_Device_Table_t *)x)->read_asynchronous(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
144 |
|
|
145 #define cyg_write_asynchronous(x, y) \ |
|
|
146 ((struct Cyg_Device_Table_t *)x)->write_asynchronous(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
147 |
|
|
148 /* |
|
|
149 * C API for Serial RS232 devices |
|
|
150 */ |
|
|
151 #define cyg_serial_rs232_set_kmode(x, y) \ |
|
|
152 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->set_kmode(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
153 |
|
|
154 #define cyg_serial_rs232_get_baud_rate(x, y) \ |
|
|
155 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->get_baud_rate(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
156 |
|
|
157 #define cyg_serial_rs232_set_baud_rate(x, y, z) \ |
|
|
158 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->set_baud_rate(((struct Cyg_Device_Table_t *)x)->cookie, y, z) |
|
|
159 |
|
|
160 #define cyg_serial_rs232_get_line_mode(x, y) \ |
|
|
161 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->get_line_mode(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
162 |
|
|
163 #define cyg_serial_rs232_set_line_mode(x, y, z) \ |
|
|
164 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->set_line_mode(((struct Cyg_Device_Table_t *)x)->cookie, y, z) |
|
|
165 |
|
|
166 #define cyg_serial_rs232_get_read_mode(x, y) \ |
|
|
167 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->get_read_mode(((struct Cyg_Device_Table_t *)x)->cookie, y) |
|
|
168 |
|
|
169 #define cyg_serial_rs232_set_read_mode(x, y, z) \ |
|
|
170 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->set_read_mode(((struct Cyg_Device_Table_t *)x)->cookie, y, z) |
|
|
171 |
|
|
172 #define cyg_serial_rs232_set_read_data(x, y, z, a) \ |
|
|
173 ((struct Cyg_Device_Serial_RS232_Table_t *)((struct Cyg_Device_Table_t *)x)->ioctl)->set_read_data(((struct Cyg_Device_Table_t *)x)->cookie, y, z, a) |
|
|
174 |
|
|
175 |
|
|
176 |
|
|
177 #endif // CYGONCE_DEVS_COMMON_TABLE_H |
|
|
178 // End of table.h |
|
|
179 |