File indexing completed on 2025-05-11 08:23:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #define NO_BSP_INIT
0032
0033 #include <bsp.h>
0034 #include <rtems/libio.h>
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 rtems_device_driver console_initialize(
0048 rtems_device_major_number major,
0049 rtems_device_minor_number minor,
0050 void *arg
0051 )
0052 {
0053 rtems_status_code status;
0054
0055 status = rtems_io_register_name(
0056 "/dev/console",
0057 major,
0058 (rtems_device_minor_number) 0
0059 );
0060
0061 if (status != RTEMS_SUCCESSFUL)
0062 rtems_fatal_error_occurred(status);
0063
0064 return RTEMS_SUCCESSFUL;
0065 }
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078 bool is_character_ready(
0079 char *ch
0080 )
0081 {
0082 *ch = '\0';
0083 return true;
0084 }
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098 char inbyte( void )
0099 {
0100
0101
0102
0103
0104 return '\0';
0105 }
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118 void outbyte(
0119 char ch
0120 )
0121 {
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132 if ( ch == '\n' )
0133 outbyte( '\r' );
0134 }
0135
0136
0137
0138
0139
0140 rtems_device_driver console_open(
0141 rtems_device_major_number major,
0142 rtems_device_minor_number minor,
0143 void * arg
0144 )
0145 {
0146 return RTEMS_SUCCESSFUL;
0147 }
0148
0149
0150
0151
0152
0153 rtems_device_driver console_close(
0154 rtems_device_major_number major,
0155 rtems_device_minor_number minor,
0156 void * arg
0157 )
0158 {
0159 return RTEMS_SUCCESSFUL;
0160 }
0161
0162
0163
0164
0165
0166 rtems_device_driver console_read(
0167 rtems_device_major_number major,
0168 rtems_device_minor_number minor,
0169 void * arg
0170 )
0171 {
0172 rtems_libio_rw_args_t *rw_args;
0173 char *buffer;
0174 int maximum;
0175 int count = 0;
0176
0177 rw_args = (rtems_libio_rw_args_t *) arg;
0178
0179 buffer = rw_args->buffer;
0180 maximum = rw_args->count;
0181
0182 for (count = 0; count < maximum; count++) {
0183 buffer[ count ] = inbyte();
0184 if (buffer[ count ] == '\n' || buffer[ count ] == '\r') {
0185 buffer[ count++ ] = '\n';
0186 break;
0187 }
0188 }
0189
0190 rw_args->bytes_moved = count;
0191 return (count >= 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED;
0192 }
0193
0194
0195
0196
0197
0198 rtems_device_driver console_write(
0199 rtems_device_major_number major,
0200 rtems_device_minor_number minor,
0201 void * arg
0202 )
0203 {
0204 int count;
0205 int maximum;
0206 rtems_libio_rw_args_t *rw_args;
0207 char *buffer;
0208
0209 rw_args = (rtems_libio_rw_args_t *) arg;
0210
0211 buffer = rw_args->buffer;
0212 maximum = rw_args->count;
0213
0214 for (count = 0; count < maximum; count++) {
0215 if ( buffer[ count ] == '\n') {
0216 outbyte('\r');
0217 }
0218 outbyte( buffer[ count ] );
0219 }
0220
0221 rw_args->bytes_moved = maximum;
0222 return 0;
0223 }
0224
0225
0226
0227
0228
0229 rtems_device_driver console_control(
0230 rtems_device_major_number major,
0231 rtems_device_minor_number minor,
0232 void * arg
0233 )
0234 {
0235 return RTEMS_SUCCESSFUL;
0236 }