annotate packages/io/serial/current/tests/ser_test_protocol.inl @ 10:d3fbcdfa1b2f ecos-sw-1999-05-29

Merge from eCos master repository on 1999-05-29-00:13:11-BST
author jlarmour
date Fri, 28 May 1999 16:43:09 +0000
parents d376b777e2ce
children 4f2df4ab82c8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // ser_test_protocol.c
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 // Serial device driver testing protocol
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
9 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
10 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Cygnus eCos Public License
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
12 // Version 1.0 (the "License"); you may not use this file except in
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
14 // http://sourceware.cygnus.com/ecos
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
15 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
19 // the License.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
20 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Cygnus Operating System, released
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
22 // September 30, 1998.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
23 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Cygnus. Portions created
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
25 // by Cygnus are Copyright (C) 1998, 1999 Cygnus Solutions.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
26 // All Rights Reserved.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
27 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
28 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
29 //####COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 //#####DESCRIPTIONBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 // Author(s): jskov
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 // Contributors: jskov
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 // Date: 1999-03-17
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 // Description: Protocol implementation used to test eCos serial devices.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37 // Relies on ser_filter to be present on the host side to
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 // respond to test requests.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40 // To Do:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 // o Clean up.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42 // o Clean up config change magic.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43 // o Figure out how to handle kernel dependency
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44 // : without kernel, no timeout. Without timeout, no filter auto detection.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46 //####DESCRIPTIONEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48 #include <pkgconf/system.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49 #include <pkgconf/io.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50 #include <pkgconf/io_serial.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52 #include <cyg/io/io.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 #include <cyg/io/devtab.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54 #include <cyg/io/ttyio.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55 #include <cyg/infra/diag.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
57 #include <cyg/hal/hal_intr.h> // for reclaiming interrup vector
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
59 #ifdef CYG_HAL_SPARCLITE_SLEB
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
60 #include <pkgconf/hal_sparclite_sleb.h> // CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
61 #endif
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
62
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
63 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
64 // Definition of which device to run tests on on various platforms.
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
65
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
66 #define NA_MSG "No test device specified"
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
67
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
68
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
69 #if defined(CYGPKG_HAL_POWERPC_COGENT) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT_SERIAL_B)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72 # define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_COGENT_SERIAL_B_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
73 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY2_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77 #if defined(CYGPKG_HAL_ARM_PID) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 && defined(CYGPKG_IO_SERIAL_ARM_PID) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
79 && defined(CYGPKG_IO_SERIAL_ARM_PID_SERIAL0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
80 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_PID_SERIAL0_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
81 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
82 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
83 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
84 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
85 #if defined(CYGPKG_HAL_ARM_AEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
86 && defined(CYGPKG_IO_SERIAL_ARM_AEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
87 && defined(CYGPKG_IO_SERIAL_ARM_AEB_SERIAL1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
88 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_AEB_SERIAL1_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
92 #endif
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
93 #if defined(CYGPKG_HAL_MIPS_TX39_JMR3904) \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 && defined(CYGPKG_IO_SERIAL_TX39_JMR3904) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95 && defined(CYGPKG_IO_SERIAL_TX39_JMR3904_SERIAL0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 # define TEST_SER_DEV CYGDAT_IO_SERIAL_TX39_JMR3904_SERIAL0_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
98 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
99 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
101 #if defined(CYGPKG_HAL_MN10300_STDEVAL1) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102 && defined(CYGPKG_IO_SERIAL_MN10300) \
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
103 && defined(CYGPKG_IO_SERIAL_MN10300_SERIAL2)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
104 # define TEST_SER_DEV CYGDAT_IO_SERIAL_MN10300_SERIAL2_NAME
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
105 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
107 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
108 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
109 #if defined(CYGPKG_HAL_SPARCLITE_SLEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
110 && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
111 && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB_CON1)
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
112 # undef NA_MSG
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
113 # define NA_MSG "CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT is unset"
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
114 # if !defined(CYG_HAL_STARTUP_RAM) \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
115 || defined(CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
116 # define TEST_SER_DEV CYGDAT_IO_SERIAL_SPARCLITE_SLEB_CON1_NAME
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
117 // The interrupt vectors are normally in CygMon's control. Steal them back,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
118 // but beware that this results in GDB acknowledge characters showing up in
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
119 // the serial driver if CygMon is used for hal_diag output.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
120 // Set CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT in hal_sparclite_sleb as a workaround.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
121 # define SER_OVERRIDE_INT_1 CYGNUM_HAL_INTERRUPT_9
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
122 # define SER_OVERRIDE_INT_2 CYGNUM_HAL_INTERRUPT_10
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
123 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
124 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
125 # endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
126 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
127 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
128
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
129 // We can't rely on haldiag for ser_filter detection - it may not define
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
130 // a working character reading function.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
131 #ifndef TEST_SER_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
132 # define SER_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
133 # define TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
134 # define TEST_SER_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
135 # define TEST_TTY_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
136 #else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
137 # ifndef TEST_TTY_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
138 # define TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
139 # define TEST_TTY_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
140 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
141 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
142
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
143 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
144 // The data in buffer and the cmd buffer
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
145 #define IN_BUFFER_SIZE 1024
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
146 cyg_uint8 in_buffer[IN_BUFFER_SIZE];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
147
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
148 cyg_int8 cmd_buffer[128];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
149
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
150 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
151 // Some types specific to the testing protocol.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
152 typedef enum {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
153 MODE_NO_ECHO = 0,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
154 MODE_EOP_ECHO,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
155 MODE_DUPLEX_ECHO
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
156 } cyg_mode_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
157
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
158 typedef enum {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
159 TEST_RETURN_OK = ENOERR,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
160 TEST_RETURN_NA
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
161 } cyg_test_return_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
162
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
163 typedef struct ser_cfg {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
164 cyg_serial_baud_rate_t baud_rate;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
165 cyg_serial_word_length_t data_bits;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
166 cyg_serial_stop_bits_t stop_bits;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
167 cyg_serial_parity_t parity;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
168 // etc...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
169 } cyg_ser_cfg_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
170
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
171 typedef enum {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
172 OPT_SERIAL_DEBUG = 0,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
173 OPT_VERBOSE_LEVEL
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
174 } cyg_option_t;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
175
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
176 typedef enum {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
177 NONE = 0,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
178 PROTOCOL_PROGRESS,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
179 PROTOCOL_DATA,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
180 } cyg_verbosity_level_t;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
181
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
182
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
183 // A few predifined option macros. Use after test_ping().
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
184 #define TEST_OPTIONS(__handle, __array) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
185 test_options(__handle, sizeof(__array)/8, __array)
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
186
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
187 #define TEST_HOST_DEBUG(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
188 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
189 cyg_uint32 __options[] = {OPT_SERIAL_DEBUG, 1}; \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
190 test_options((__handle), sizeof(__options)/8, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
191 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
192 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
193
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
194 #define TEST_HOST_PROGRESS(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
195 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
196 cyg_uint32 __options[] = \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
197 {OPT_SERIAL_DEBUG, 1, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
198 OPT_VERBOSE_LEVEL, PROTOCOL_PROGRESS}; \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
199 test_options((__handle), sizeof(__options)/8, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
200 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
201 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
202
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
203 #define TEST_HOST_DATA(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
204 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
205 cyg_uint32 __options[] = \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
206 {OPT_SERIAL_DEBUG, 1, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
207 OPT_VERBOSE_LEVEL, PROTOCOL_DATA}; \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
208 test_options((__handle), sizeof(__options)/8, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
209 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
210 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
211
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
212 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
213 // A few predefined configurations. These must all be valid for any
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
214 // given target until change_config is behaving correctly.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
215 cyg_ser_cfg_t test_configs[] = {
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
216
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
217 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && !defined(CYGPKG_HAL_ARM_PID)
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
218 { CYGNUM_SERIAL_BAUD_9600, CYGNUM_SERIAL_WORD_LENGTH_8,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
219 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
220 #endif
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
221
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
222 { CYGNUM_SERIAL_BAUD_14400, CYGNUM_SERIAL_WORD_LENGTH_8,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
223 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
224
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
225 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
226 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
227
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
228 #if !defined(CYGPKG_HAL_SPARCLITE_SLEB) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
229 !defined(CYGPKG_HAL_ARM_AEB)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
230 { CYGNUM_SERIAL_BAUD_38400, CYGNUM_SERIAL_WORD_LENGTH_8,
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
231 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
232 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
233
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
234 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
235 !defined(CYGPKG_HAL_ARM_AEB) && \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
236 !defined(CYGPKG_HAL_SPARCLITE_SLEB)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
237 { CYGNUM_SERIAL_BAUD_57600, CYGNUM_SERIAL_WORD_LENGTH_8,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
238 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
239 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
240
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
241 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
242 !defined(CYGPKG_HAL_ARM_PID) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
243 !defined(CYGPKG_HAL_ARM_AEB) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
244 !defined(CYGPKG_HAL_MN10300_STDEVAL1) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
245 !defined(CYGPKG_HAL_SPARCLITE_SLEB)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
246 { CYGNUM_SERIAL_BAUD_115200, CYGNUM_SERIAL_WORD_LENGTH_8,
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
247 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
248 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
249
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
250 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
251 !defined(CYGPKG_HAL_ARM_AEB) && \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
252 !defined(CYGPKG_HAL_ARM_PID)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
253 // One stop bit, even parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
254 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
255 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_EVEN },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
256 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
257
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
258 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
259 !defined(CYGPKG_HAL_ARM_AEB) && \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
260 !defined(CYGPKG_HAL_ARM_PID)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
261 // Two stop bits, even parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
262 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
263 CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_EVEN },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
264 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
265
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
266 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
267 // Two stop bits, no parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
268 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
269 CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_NONE },
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
270 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
271 };
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
272
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
273 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
274 // Macros to help extract values from the argument string.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
275 // Note: This is probably not an ideal solution, but it was easy to make :)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
276
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
277 #define INIT_VALUE(__args) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
278 unsigned int v; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
279 char *__ptr1, *__ptr2 = (__args)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
280
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
281 #define SET_VALUE(__slot) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
282 do { \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
283 __ptr1 = index(__ptr2, (int) ':'); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
284 if (__ptr1) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
285 *__ptr1 = 0; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
286 v = atoi(__ptr2); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
287 __ptr2 = __ptr1+1; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
288 (__slot) = v; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
289 } while (0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
290
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
291
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
292 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
293 // CRC magic - it's a bit of a hack for now.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
294 // FIXME: standard definition?
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
295 #define ADD_CRC_BYTE(__crc, __c) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
296 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
297 (__crc) = ((__crc) << 1) ^ (__c); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
298 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
299
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
300 // FIXME: Hack to allow easy ASCII transfer.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
301 #define FIX_CRC(__crc, __icrc) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
302 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
303 __icrc = (int) (__crc); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
304 if (__icrc < 0) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
305 __icrc = -__icrc; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
306 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
307
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
308 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
309 // Macros for read/write to serial with error cheking.
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
310 static volatile cyg_uint32 r_stamp;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
311 static volatile int aborted;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
312
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
313 // This routine will be called if the read "times out"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
314 static void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
315 do_abort(void *handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
316 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
317 cyg_io_handle_t io_handle = (cyg_io_handle_t)handle;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
318 cyg_int32 len = 1; // Need something here
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
319 cyg_io_get_config(io_handle, CYG_IO_GET_CONFIG_SERIAL_ABORT, 0, &len);
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
320 aborted = 1;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
321 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
322 #include "timeout.inl"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
323
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
324 // Read with timeout (__t = timeout in ticks, int* __r = result)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
325 #define Tcyg_io_read_timeout(__h, __d, __l, __t, __r) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
326 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
327 int __res; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
328 r_stamp = timeout((__t), do_abort, (__h)); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
329 __res = cyg_io_read((__h), (__d), (__l)); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
330 CYG_TEST_CHECK((ENOERR == __res || -EINTR == __res),"cyg_io_read failed");\
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
331 *(__r) = __res; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
332 untimeout(r_stamp); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
333 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
334
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
335 #define Tcyg_io_read(__h, __d, __l) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
336 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
337 int __res = cyg_io_read((__h), (__d), (__l)); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
338 CYG_TEST_CHECK(ENOERR == __res, "cyg_io_read failed"); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
339 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
340
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
341 #define Tcyg_io_write(__h, __d, __l) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
342 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
343 int __res; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
344 cyg_uint32 __len = 1; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
345 __res = cyg_io_write((__h), (__d), (__l)); \
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
346 if (ENOERR != __res) diag_printf("[%d]\n", __res); \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
347 CYG_TEST_CHECK(ENOERR == __res, "cyg_io_write failed"); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
348 __res = cyg_io_get_config((__h), \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
349 CYG_IO_GET_CONFIG_SERIAL_OUTPUT_DRAIN, \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
350 0, &__len); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
351 CYG_TEST_CHECK(ENOERR == __res, "DRAIN failed"); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
352 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
353
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
354
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
355 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
356 // Some libc like functions that are handy to have around.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
357 static int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
358 strlen(const char *c)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
359 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
360 int l = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
361 while (*c++) l++;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
362 return l;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
363 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
364
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
365 static char*
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
366 strcpy(char* dest, const char* src)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
367 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
368 char c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
369 while ((c = *src++)) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
370 *dest++ = c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
371 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
372 *dest = c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
373
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
374 return dest;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
375 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
376
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
377 static char*
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
378 itoa(char* dest, int v)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
379 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
380 char b[16];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
381 char* p = &b[16];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
382
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
383 *--p = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
384 if (v) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
385 while (v){
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
386 *--p = (v % 10) + '0';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
387 v = v / 10;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
388 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
389 } else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
390 *--p = '0';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
391
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
392 return strcpy(dest, p);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
393 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
394
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
395 #define min(_a, _b) ((_a) < (_b)) ? (_a) : (_b)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
396
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
397 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
398 hang(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
399 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
400 while (1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
401 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
402
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
403 //-----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
404 // Configuration changing function.
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
405 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
406 // First change to the new config and back again to determine if the driver
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
407 // can handle the config.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
408 // If not, return error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
409 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
410 // Then query the host for its capability to use the config:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
411 // Format out:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
412 // "@CONFIG:<baud rate code>:<#data bits>:<#stop bits>:<parity on/off>!"
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
413 // Format in:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
414 // OK/ER
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
415 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
416 // On ER, return error.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
417 //
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
418 // On OK, change to the new configuration. Resynchronize with the host:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
419 // Write 'T'-chars to the host.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
420 // The host will echo anything it reads until it sees a 'O' character.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
421 // Continue until four 'T'-chars has been read back.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
422 // Then send a single 'O'-character. This will signal success to the host.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
423 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
424 // If the synchronization has not succeeded within 100 ticks
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
425 // (configurable in the protocol), both host and target will revert to
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
426 // the previous configuration and attempt to synchronize again. If
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
427 // this fails, this call will hang and the host will consider the test
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
428 // a failure.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
429 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
430 // To Do:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
431 // Host&protocol currently only supports:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
432 // - no/even parity
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
433 int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
434 change_config(cyg_io_handle_t handle, cyg_ser_cfg_t* cfg)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
435 {
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
436 cyg_serial_info_t old_cfg, new_cfg;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
437 const char cmd[] = "@CONFIG:";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
438 char reply[2];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
439 int msglen;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
440 int res, len;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
441 cyg_uint8 *p1;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
442
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
443 // Prepare the command.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
444 p1 = &cmd_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
445 p1 = strcpy(p1, &cmd[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
446 p1 = itoa(p1, cfg->baud_rate);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
447 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
448 p1 = itoa(p1, cfg->data_bits);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
449 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
450 p1 = itoa(p1, cfg->stop_bits);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
451 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
452 p1 = itoa(p1, cfg->parity);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
453 *p1++ = '!';
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
454 *p1 = 0; // note: we may append to this later
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
455
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
456 // Tell user what we're up to.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
457 CYG_TEST_INFO(&cmd_buffer[1]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
458
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
459 // Change to new config and then back to determine if the driver likes it.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
460 len = sizeof(old_cfg);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
461 res = cyg_io_get_config(handle, CYG_IO_GET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
462 &old_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
463 res = cyg_io_get_config(handle, CYG_IO_GET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
464 &new_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
465 if (res != ENOERR) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
466 diag_printf("Can't get serial config - DEVIO error: %d\n", res);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
467 hang();
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
468 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
469
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
470 new_cfg.baud = cfg->baud_rate;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
471 new_cfg.word_length = cfg->data_bits;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
472 new_cfg.stop = cfg->stop_bits;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
473 new_cfg.parity = cfg->parity;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
474
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
475 res = cyg_io_set_config(handle, CYG_IO_SET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
476 &new_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
477
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
478 // Driver didn't like it. It will not have changed anything, so it's
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
479 // safe to return now.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
480 if (ENOERR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
481 // Let user know that the config was skipped due to the target.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
482 const char txt_tskipped[] = "- skipped by target!";
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
483 p1 = strcpy(p1, txt_tskipped);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
484 *p1 = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
485 CYG_TEST_INFO(&cmd_buffer[1]);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
486 return res;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
487 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
488
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
489 // Succeeded. Change back to the original config so we can communicate
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
490 // with the host.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
491 res = cyg_io_set_config(handle, CYG_IO_SET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
492 &old_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
493 if (ENOERR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
494 diag_printf("change_config: set_config failed/1 (%d)\n", res);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
495 hang();
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
496 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
497
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
498 // Send command to host and read host's reply.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
499 msglen = strlen(&cmd_buffer[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
500 Tcyg_io_write(handle, &cmd_buffer[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
501 msglen = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
502 Tcyg_io_read(handle, &reply[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
503
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
504 // Did host accept configuration?
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
505 if ('O' != reply[0] || 'K' != reply[1]) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
506 // Let user know that the config was skipped due to the host.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
507 const char txt_hskipped[] = "- skipped by host!";
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
508 p1 = strcpy(p1, txt_hskipped);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
509 *p1 = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
510 CYG_TEST_INFO(&cmd_buffer[1]);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
511 diag_printf("Host didn't accept config (%02x, %02x).\n",
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
512 reply[0], reply[1]);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
513
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
514 res = ENOSUPP;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
515 return res;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
516 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
517
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
518 // Now test the new configuration: Loop until we read what we
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
519 // write. This may hang (as seen from the host), but only when we
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
520 // get totally lost, in which case there's not much else to do
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
521 // really. In this case the host will consider the test a FAIL.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
522 len = sizeof(new_cfg);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
523 res = cyg_io_set_config(handle, CYG_IO_SET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
524 &new_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
525 if (ENOERR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
526 diag_printf("change_config: set_config failed/2 (%d)\n", res);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
527 hang();
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
528 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
529
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
530 // Note: Only sends a single char - a string wuld be safer, but if
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
531 // there's not a 1-1 relationship between outgoing and incoming
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
532 // chars, the reader needs to be smarter. Compensate by
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
533 // requirering the char to be read 4 times in succession.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
534 for (;;) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
535 int change_succeeded = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
536 int using_old_config = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
537 int matches = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
538 char in_buf[1];
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
539 int len;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
540 char out_buf[1];
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
541
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
542 out_buf[0] = 'a';
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
543
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
544 aborted = 0; // global abort flag
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
545 // FIXME: Timeout time needs to be configurable, and needs to
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
546 // be sent to the host before getting here. That would allow
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
547 // changing the timeout by just rebuilding the test - without
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
548 // changing the host software.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
549 r_stamp = timeout(100, do_abort, handle);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
550 while (!aborted) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
551 len = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
552 res = cyg_io_write(handle, out_buf, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
553 if (ENOERR != res && -EINTR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
554 // We may have to reset the driver here if the fail
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
555 // was due to a framing or parity error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
556 break;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
557 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
558
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
559 len = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
560 res = cyg_io_read(handle, in_buf, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
561 if (ENOERR != res && -EINTR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
562 // We may have to reset the driver here if the fail
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
563 // was due to a framing or parity error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
564 break;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
565 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
566
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
567 // Check for match.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
568 if (out_buf[0] == in_buf[0]) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
569 matches++;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
570 // We want 4 in succession before we accept it.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
571 if (4 == matches) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
572 change_succeeded = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
573 break;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
574 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
575 } else
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
576 matches = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
577 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
578 untimeout(r_stamp);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
579
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
580 // Did we succeed?
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
581 if (change_succeeded) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
582 // Yup! Send 'O' to host so it knows we're OK.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
583 const char ok_str[1] = "O";
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
584 len = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
585 res = cyg_io_write(handle, ok_str, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
586 if (res != ENOERR) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
587 diag_printf("write failed - DEVIO error: %d\n", res);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
588 hang();
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
589 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
590
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
591 // Now wait for the 'O' to be echoed so we know both lines
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
592 // have been emptied.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
593 r_stamp = timeout(100, do_abort, handle);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
594 do {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
595 len = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
596 res = cyg_io_read(handle, in_buf, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
597 CYG_ASSERT(ENOERR == res, "Failed when waiting for 'O'");
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
598 } while ('O' != in_buf[0]);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
599 untimeout(r_stamp);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
600
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
601 // If we had to revert to the old configuration, return error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
602 if (using_old_config)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
603 return -EIO;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
604 else
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
605 return ENOERR;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
606 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
607
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
608 // We didn't. Due to an IO error?
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
609 if (ENOERR != res && -EINTR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
610 // We may have to reset the driver if the fail was due to
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
611 // a framing or parity error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
612 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
613
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
614 // Revert to the old configuration and try again.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
615 len = sizeof(old_cfg);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
616 res = cyg_io_set_config(handle, CYG_IO_SET_CONFIG_SERIAL_INFO,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
617 &old_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
618 if (res != ENOERR) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
619 diag_printf("change_config: set_config failed/3 (%d)\n", res);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
620 hang();
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
621 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
622 out_buf[0] = 't'; // change the char so a developer can
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
623 // see this has happened by the chars
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
624 // being written.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
625 using_old_config = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
626 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
627 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
628
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
629
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
630 //-----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
631 // Host sends CRC in decimal ASCII, terminated with !
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
632 int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
633 read_host_crc(cyg_io_handle_t handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
634 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
635 int crc, len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
636 cyg_uint8 ch;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
637
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
638 crc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
639 while (1) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
640 len = 1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
641 Tcyg_io_read(handle, &ch, &len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
642 if ('!' == ch)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
643 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
644
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
645 #ifdef __DEVELOPER__
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
646 if (!((ch >= '0' && ch <= '9'))){
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
647 diag_printf("CHAR: %02x\n", ch);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
648 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
649 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
650
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
651 CYG_TEST_CHECK((ch >= '0' && ch <= '9'),
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
652 "Illegal CRC format from host");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
653
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
654 crc = crc*10 + (ch - '0');
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
655 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
656
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
657 return crc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
658 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
659
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
660 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
661 // Test binary data transmission.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
662 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
663 // "@BINARY:<byte size>:<mode>!"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
664 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
665 // <checksum>!<#size bytes data>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
666 // For echo modes, also:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
667 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
668 // <#size bytes data>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
669 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
670 // OK/ER
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
671 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
672 // DONE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
673 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
674 // The last DONE allows the host to eat bytes if target is sending too many.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
675 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
676 // Mode:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
677 // MODE_NO_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
678 // Just receive data and verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
679 // MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
680 // Receive data, verify CRC, resend data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
681 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
682 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
683 // Receive data, echo data, verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
684 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
685 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
686 // Note:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
687 // Using diag_printf while talking with the host may cause some funky
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
688 // errors (bytes from the host side being lost!?!?)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
689 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
690 // To Do:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
691 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
692 // The current implementation is simple and may not stress the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
693 // driver enough. Also, it's command packet format doesn't match
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
694 // that of the other modes.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
695 cyg_test_return_t
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
696 test_binary(cyg_io_handle_t handle, int size, cyg_mode_t mode)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
697 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
698 const char cmd[] = "@BINARY:";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
699 int msglen;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
700 cyg_uint32 xcrc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
701 int icrc, host_crc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
702 cyg_uint8 *p1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
703 cyg_int8 host_status = 'O'; // host is happy by default
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
704
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
705 // Verify that the test can be run with available ressources.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
706 if (MODE_EOP_ECHO == mode && size > IN_BUFFER_SIZE)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
707 return TEST_RETURN_NA;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
708
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
709 // Prepare and send the command.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
710 p1 = &cmd_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
711 p1 = strcpy(p1, &cmd[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
712 p1 = itoa(p1, size);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
713 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
714 p1 = itoa(p1, mode);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
715 *p1++ = '!';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
716 *p1++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
717
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
718 CYG_TEST_INFO(&cmd_buffer[1]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
719
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
720 msglen = strlen(&cmd_buffer[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
721 Tcyg_io_write(handle, &cmd_buffer[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
722
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
723 // Get CRC back.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
724 host_crc = read_host_crc(handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
725
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
726 // Depending on mode, start reading data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
727 xcrc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
728 switch (mode) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
729 case MODE_NO_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
730 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
731 // Break transfers into chunks no larger than the buffer size.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
732 int tx_len, chunk_len, i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
733 while (size > 0) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
734 chunk_len = min(IN_BUFFER_SIZE, size);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
735 tx_len = chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
736 size -= chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
737
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
738 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
739
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
740 for (i = 0; i < tx_len; i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
741 ADD_CRC_BYTE(xcrc, in_buffer[i]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
742 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
743 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
744
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
745 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
746 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
747 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
748
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
749 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
750 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
751 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
752
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
753 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
754 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
755 case MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
756 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
757 // We have already checked that the in buffer is large enough.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
758 int i, tx_len, chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
759 chunk_len = tx_len = size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
760 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
761
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
762 for (i = 0; i < tx_len; i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
763 ADD_CRC_BYTE(xcrc, in_buffer[i]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
764 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
765
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
766 // Echo data back.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
767 chunk_len = size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
768 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
769
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
770 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
771 chunk_len = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
772 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
773 host_status = in_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
774
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
775 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
776 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
777 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
778
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
779 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
780 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
781 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
782 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
783 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
784 case MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
785 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
786 int chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
787 int block_size = 64;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
788
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
789 // This is a simple implementation (maybe too simple).
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
790 // Host sends 4 packets with the same size (64 bytes atm).
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
791 // Target echoes in this way:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
792 // packet1 -> packet1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
793 // packet2 -> packet2, packet2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
794 // packet3 -> packet3
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
795 // packet4 -> /dev/null
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
796 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
797 // The reads/writes are interleaved in a way that should ensure
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
798 // the target out buffer to be full before the target starts to read
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
799 // packet3. That is, the target should be both receiving (packet3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
800 // and sending (packet2) at the same time.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
801
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
802 while (size--) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
803 // block_size -> block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
804 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
805 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
806 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
807 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
808
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
809 // block_size -> 2 x block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
810 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
811 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
812 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
813 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
814 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
815 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
816
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
817 // block_size -> block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
818 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
819 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
820 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
821 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
822
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
823 // block_size -> 0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
824 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
825 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
826 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
827
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
828 // Kill the CRC. Leave packet verification to the host for now.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
829 xcrc = host_crc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
830
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
831 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
832 chunk_len = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
833 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
834 host_status = in_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
835
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
836 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
837 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
838 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
839
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
840 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
841 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
842 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
843 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
844 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
845 default:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
846 CYG_TEST_CHECK(0, "unknown mode");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
847 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
848
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
849
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
850 // Verify that the CRC matches the one from the host.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
851 FIX_CRC(xcrc, icrc);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
852 #ifdef __DEVELOPER__
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
853 if (host_crc != icrc)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
854 diag_printf("%d != %d\n", icrc, host_crc);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
855 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
856 CYG_TEST_CHECK(host_crc == icrc, "CRC failed!");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
857
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
858 // Verify that the host is happy with the data we echoed.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
859 CYG_TEST_CHECK('O' == host_status, "Host failed checksum on echoed data");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
860
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
861 CYG_TEST_PASS("Binary test completed");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
862 return TEST_RETURN_OK;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
863 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
864
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
865 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
866 // Test transformations on text transmissions
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
867 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
868 // "@TEXT:<mode>!<4 bytes binary checksum><C string>"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
869 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
870 // "<C string>"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
871 // OK/ER
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
872 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
873 // Mode:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
874 // MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
875 // Receive data, verify CRC, resend data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
876 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
877 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
878 // Receive data, echo data, verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
879 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
880 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
881 cyg_test_return_t
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
882 test_text(cyg_io_handle_t handle, cyg_mode_t mode, const char* s_base,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
883 const char* s_out, const char* s_in)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
884 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
885 return TEST_RETURN_NA;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
886 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
887
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
888 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
889 // Send PING to host, verifying the filter's presence.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
890 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
891 // "@PING!"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
892 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
893 // "OK"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
894 // or
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
895 // No response if directly connected to GDB.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
896 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
897 // This call only returns if the ser_filter is listening. Otherwise it
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
898 // sends N/A and hangs.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
899 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
900 test_ping(cyg_io_handle_t handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
901 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
902 char msg[] = "@PING:!";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
903 char msg2[] = "\n";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
904 int msglen = strlen(msg);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
905 int res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
906
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
907 msglen = strlen(msg);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
908 Tcyg_io_write(handle, msg, &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
909
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
910 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
911 msglen = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
912 Tcyg_io_read_timeout(handle, &in_buffer[0], &msglen, 100, &res);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
913 if (ENOERR == res && 'O' == in_buffer[0] && 'K' == in_buffer[1])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
914 return;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
915
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
916 msglen = strlen(msg2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
917 Tcyg_io_write(handle, msg2, &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
918
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
919 CYG_TEST_NA("No host side testing harness detected.");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
920 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
921
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
922
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
923 //---------------------------------------------------------------------------
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
924 // Send OPT to host, setting options in the filter.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
925 // Format out:
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
926 // "@OPT:option1,value1:...:optionN,valueN!"
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
927 // Format in:
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
928 // "OK"
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
929 //
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
930 // Only integer values can be used. Any option not recognized by the
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
931 // filter will be silently ignored.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
932 void
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
933 test_options(cyg_io_handle_t handle, int count, cyg_uint32* options)
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
934 {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
935 const char cmd[] = "@OPT:";
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
936 int msglen;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
937 cyg_uint8 *p1;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
938
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
939 // Prepare and send the command.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
940 p1 = &cmd_buffer[0];
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
941 p1 = strcpy(p1, &cmd[0]);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
942 while(count--) {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
943 p1 = itoa(p1, *options++); // option
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
944 *p1++ = ':';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
945 p1 = itoa(p1, *options++); // value
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
946 *p1++ = ':';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
947 }
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
948 *(p1-1) = '!';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
949 *p1++ = 0;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
950
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
951 CYG_TEST_INFO(&cmd_buffer[1]);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
952
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
953 msglen = strlen(&cmd_buffer[0]);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
954 Tcyg_io_write(handle, &cmd_buffer[0], &msglen);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
955
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
956 // Now read host side's status
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
957 msglen = 2;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
958 Tcyg_io_read(handle, &in_buffer[0], &msglen);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
959 }
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
960
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
961
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
962 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
963 // Some helper functions to get a test started.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
964 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
965 test_open_ser( cyg_io_handle_t* handle )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
966 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
967 #ifndef SER_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
968 Cyg_ErrNo res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
969
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
970 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
971 CYG_TEST_NA("Cannot run from simulator");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
972
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
973 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
974 # if defined(SER_OVERRIDE_INT_1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
975 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
976 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
977 # if defined(SER_OVERRIDE_INT_2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
978 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
979 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
980 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
981
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
982 res = cyg_io_lookup(TEST_SER_DEV, handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
983 if (res != ENOERR) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
984 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_SER_DEV);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
985 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
986 #else
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
987 CYG_TEST_NA(NA_MSG);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
988 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
989 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
990
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
991 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
992 test_open_tty( cyg_io_handle_t* handle )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
993 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
994 #ifndef TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
995 Cyg_ErrNo res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
996
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
997 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
998 CYG_TEST_NA("Cannot run from simulator");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
999
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1000 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1001 # if defined(SER_OVERRIDE_INT_1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1002 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1003 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1004 # if defined(SER_OVERRIDE_INT_2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1005 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1006 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1007 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1008
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1009 res = cyg_io_lookup(TEST_TTY_DEV, handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1010 if (res != ENOERR) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1011 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_TTY_DEV);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1012 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1013 #else
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
1014 CYG_TEST_NA(NA_MSG);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1015 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1016 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1017
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1018 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1019 // end of ser_test_protocol.inl