Mercurial > flash_v2
annotate packages/io/serial/current/tests/ser_test_protocol.inl @ 1777:c16341b1bac6 default tip
* Added execute permissions to files missed in conversion from CVS
| author | alexs |
|---|---|
| date | Mon, 12 Oct 2009 02:26:09 +0100 |
| parents | d2c90368aeef |
| children |
| rev | line source |
|---|---|
| 2 | 1 //========================================================================== |
| 2 // | |
| 3 // ser_test_protocol.c | |
| 4 // | |
| 5 // Serial device driver testing protocol | |
| 6 // | |
| 7 //========================================================================== | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
9 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
12 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
16 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
20 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
21 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
22 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
23 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
25 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
26 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
27 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
28 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
29 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
30 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
31 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
32 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
33 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
34 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
35 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
37 // at http://sources.redhat.com/ecos/ecos-license/ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
38 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
179
diff
changeset
|
39 //####ECOSGPLCOPYRIGHTEND#### |
| 2 | 40 //========================================================================== |
| 41 //#####DESCRIPTIONBEGIN#### | |
| 42 // | |
| 43 // Author(s): jskov | |
|
149
52c99470ec11
Merge from eCos master repository on 2001-01-19-06:43:03-GMT
jlarmour
parents:
130
diff
changeset
|
44 // Contributors: jskov, gthomas |
| 2 | 45 // Date: 1999-03-17 |
| 46 // Description: Protocol implementation used to test eCos serial devices. | |
| 47 // Relies on ser_filter to be present on the host side to | |
| 48 // respond to test requests. | |
| 49 // | |
| 50 // To Do: | |
| 51 // o Clean up. | |
| 52 // o Clean up config change magic. | |
| 53 // o Figure out how to handle kernel dependency | |
| 54 // : without kernel, no timeout. Without timeout, no filter auto detection. | |
| 55 // | |
| 56 //####DESCRIPTIONEND#### | |
| 57 | |
| 58 #include <pkgconf/system.h> | |
| 59 #include <pkgconf/io.h> | |
| 60 #include <pkgconf/io_serial.h> | |
| 61 | |
| 62 #include <cyg/io/io.h> | |
| 63 #include <cyg/io/devtab.h> | |
| 64 #include <cyg/io/ttyio.h> | |
| 65 #include <cyg/infra/diag.h> | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
66 #include <cyg/infra/cyg_ass.h> |
| 2 | 67 |
|
149
52c99470ec11
Merge from eCos master repository on 2001-01-19-06:43:03-GMT
jlarmour
parents:
130
diff
changeset
|
68 #include <cyg/hal/hal_intr.h> // for reclaiming interrupt vector |
| 2 | 69 |
| 70 //---------------------------------------------------------------------------- | |
| 71 // 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
|
72 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
73 #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
|
74 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
75 // Cleaned up drivers will export the testing parameters via CDL. |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
76 // When all drivers are changed, replace the TEST_ macros throughout |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
77 // with the CYGPRI_ equivalents. |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
78 #ifdef CYGPRI_SER_TEST_CRASH_ID |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
79 # define TEST_CRASH_ID CYGPRI_SER_TEST_CRASH_ID |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
80 # define TEST_SER_DEV CYGPRI_SER_TEST_SER_DEV |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
81 # define TEST_TTY_DEV CYGPRI_SER_TEST_TTY_DEV |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
82 #endif |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
83 |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
84 // Note that CYGPRI_SER_TEST_OVERRIDE_INT_1 and CYGPRI_SER_TEST_OVERRIDE_INT_2 |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
85 // may also be exported. These identify interrupts that should be reclaimed |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
86 // from the ROM monitor before the test is started. |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
87 |
|
32
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
88 #if defined(CYGPKG_HAL_POWERPC_MBX) \ |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
89 && defined(CYGPKG_HAL_QUICC) \ |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
90 && defined(CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC) \ |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
91 && defined(CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC_SMC1) |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
92 # define TEST_CRASH_ID "ppcmbx" |
|
32
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
93 # define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_QUICC_SMC_SMC1_NAME |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
94 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1) |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
95 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
96 # endif |
|
5af43b635655
Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
30
diff
changeset
|
97 #endif |
|
30
641b639be825
Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents:
22
diff
changeset
|
98 #if defined(CYGPKG_HAL_MN10300_AM31_STDEVAL1) \ |
| 2 | 99 && 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
|
100 && defined(CYGPKG_IO_SERIAL_MN10300_SERIAL2) |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
101 # define TEST_CRASH_ID "am31st" |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
102 # 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
|
103 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2) |
| 2 | 104 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV |
| 105 # endif | |
| 106 #endif | |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
107 #if defined(CYGPKG_HAL_MN10300_AM33_STB) \ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
108 && defined(CYGPKG_IO_SERIAL_MN10300) \ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
109 && defined(CYGPKG_IO_SERIAL_MN10300_SERIAL0) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
110 # define TEST_CRASH_ID "am33st" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
111 # define TEST_SER_DEV CYGDAT_IO_SERIAL_MN10300_SERIAL0_NAME |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
112 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
113 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
114 # endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
72
diff
changeset
|
115 #endif |
| 2 | 116 |
| 117 // We can't rely on haldiag for ser_filter detection - it may not define | |
| 118 // a working character reading function. | |
| 119 #ifndef TEST_SER_DEV | |
| 120 # define SER_NOP_TEST | |
| 121 # define TTY_NOP_TEST | |
| 122 # define TEST_SER_DEV "/dev/null" | |
| 123 # define TEST_TTY_DEV "/dev/null" | |
| 124 #else | |
| 125 # ifndef TEST_TTY_DEV | |
| 126 # define TTY_NOP_TEST | |
| 127 # define TEST_TTY_DEV "/dev/null" | |
| 128 # endif | |
| 129 #endif | |
| 130 | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
131 #ifndef TEST_CRASH_ID |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
132 #define TEST_CRASH_ID "......" |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
133 #endif |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
134 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
135 //---------------------------------------------------------------------------- |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
136 // Crash types |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
137 // Eventually this will be moved into a separate header file so a script |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
138 // can read the definitions and use the output formats/codes to analyze |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
139 // test results. For now we just keep it here... |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
140 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
141 // FAILCODE:<tttttt:cccc:[optional data, separated by :]!> |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
142 // tttttt: 6 letter target code |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
143 // cccc: crash code (16bit hex value) |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
144 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
145 #define TEST_CRASH(__h, __code, __msg, args...) \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
146 CYG_MACRO_START \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
147 int __len = 1; \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
148 /* Try to flush remaining input */ \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
149 cyg_thread_delay(50); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
150 cyg_io_get_config(__h, CYG_IO_GET_CONFIG_SERIAL_INPUT_FLUSH, \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
151 0, &__len); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
152 diag_printf("FAILCODE:<" TEST_CRASH_ID ":%04x:" __code, ## args); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
153 diag_printf("!>\n"); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
154 CYG_FAIL(__msg); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
155 hang(); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
156 CYG_MACRO_END |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
157 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
158 // Target IO |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
159 #define TEST_CRASH_IO 0x0000 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
160 #define TEST_CRASH_IO_READ "%d", 0x0001 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
161 #define TEST_CRASH_IO_WRITE "%d", 0x0002 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
162 #define TEST_CRASH_IO_DRAIN "%d", 0x0003 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
163 #define TEST_CRASH_IO_GET_CFG "%d", 0x0004 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
164 #define TEST_CRASH_IO_SET_CFG "%d", 0x0005 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
165 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
166 // Target |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
167 #define TEST_CRASH_CRC 0x0010 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
168 #define TEST_CRASH_CRC_CHAR "%02x", 0x0011 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
169 #define TEST_CRASH_CRC_BAD "%08x:%08x", 0x0012 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
170 #define TEST_CRASH_CRC_HOST "", 0x0013 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
171 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
172 // Protocol errors |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
173 #define TEST_CRASH_PROT 0x1000 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
174 #define TEST_CRASH_PROT_BIN_MODE "%d", 0x1080 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
175 #define TEST_CRASH_PROT_TEXT "%d", 0x1100 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
176 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
177 #define TEST_CRASH_HOST_xx 0xf000 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
178 #define TEST_CRASH_HOST_TIMEOUT "%d:%d:%d:%d", 0xf000 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
179 // command#, read invocation#, expected, actual |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
180 #define TEST_CRASH_HOST_CRC_BAD "%d:%08x:%08x:%d:%02x:%02x", 0xf010 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
181 // command#, expected CRC, actual, index, expected char, actual |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
182 #define TEST_CRASH_HOST_DUPLEX_BAD "%d:%d:%02x:%02x", 0xf020 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
183 // command#, index, expected char, actual |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
184 |
| 2 | 185 //---------------------------------------------------------------------------- |
| 186 // The data in buffer and the cmd buffer | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
187 #ifndef IN_BUFFER_SIZE |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
188 # define IN_BUFFER_SIZE 1024 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
189 #endif |
| 2 | 190 cyg_uint8 in_buffer[IN_BUFFER_SIZE]; |
| 191 | |
| 192 cyg_int8 cmd_buffer[128]; | |
| 193 | |
| 194 //---------------------------------------------------------------------------- | |
| 195 // Some types specific to the testing protocol. | |
| 196 typedef enum { | |
| 197 MODE_NO_ECHO = 0, | |
| 198 MODE_EOP_ECHO, | |
| 199 MODE_DUPLEX_ECHO | |
| 200 } cyg_mode_t; | |
| 201 | |
| 202 typedef enum { | |
| 203 TEST_RETURN_OK = ENOERR, | |
| 204 TEST_RETURN_NA | |
| 205 } cyg_test_return_t; | |
| 206 | |
| 207 typedef struct ser_cfg { | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
208 cyg_serial_baud_rate_t baud_rate; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
209 cyg_serial_word_length_t data_bits; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
210 cyg_serial_stop_bits_t stop_bits; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
211 cyg_serial_parity_t parity; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
212 cyg_uint32 flags; |
| 2 | 213 // etc... |
| 214 } cyg_ser_cfg_t; | |
| 215 | |
|
10
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
216 typedef enum { |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
217 OPT_SERIAL_DEBUG = 0, |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
218 OPT_VERBOSE_LEVEL |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
219 } cyg_option_t; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
220 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
221 typedef enum { |
|
179
391299f9e541
Merge from eCos master repository on 2001-08-17-16:31:54-BST
jlarmour
parents:
149
diff
changeset
|
222 _NONE = 0, |
|
10
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
223 PROTOCOL_PROGRESS, |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
224 PROTOCOL_DATA, |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
225 } cyg_verbosity_level_t; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
226 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
227 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
228 // 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
|
229 #define TEST_OPTIONS(__handle, __array) \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
230 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
|
231 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
232 #define TEST_HOST_DEBUG(__handle) \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
233 CYG_MACRO_START \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
234 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
|
235 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
|
236 __options); \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
237 CYG_MACRO_END |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
238 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
239 #define TEST_HOST_PROGRESS(__handle) \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
240 CYG_MACRO_START \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
241 cyg_uint32 __options[] = \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
242 {OPT_SERIAL_DEBUG, 1, \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
243 OPT_VERBOSE_LEVEL, PROTOCOL_PROGRESS}; \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
244 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
|
245 __options); \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
246 CYG_MACRO_END |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
247 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
248 #define TEST_HOST_DATA(__handle) \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
249 CYG_MACRO_START \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
250 cyg_uint32 __options[] = \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
251 {OPT_SERIAL_DEBUG, 1, \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
252 OPT_VERBOSE_LEVEL, PROTOCOL_DATA}; \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
253 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
|
254 __options); \ |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
255 CYG_MACRO_END |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
256 |
| 2 | 257 //---------------------------------------------------------------------------- |
| 258 // A few predefined configurations. These must all be valid for any | |
| 259 // given target until change_config is behaving correctly. | |
| 260 cyg_ser_cfg_t test_configs[] = { | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
261 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_9600) |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
262 { CYGNUM_SERIAL_BAUD_9600, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
263 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
264 CYGNUM_SERIAL_FLOW_NONE }, |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
265 #endif |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
266 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
267 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_14400) |
|
30
641b639be825
Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents:
22
diff
changeset
|
268 #if !defined(CYGPKG_HAL_MN10300_AM31) && \ |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
269 !defined(CYGPKG_HAL_MN10300_AM33) |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
270 { CYGNUM_SERIAL_BAUD_14400, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
271 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
272 CYGNUM_SERIAL_FLOW_NONE }, |
|
30
641b639be825
Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents:
22
diff
changeset
|
273 #endif |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
274 #endif |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
275 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
276 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
277 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
278 CYGNUM_SERIAL_FLOW_NONE }, |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
279 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
280 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_38400) |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
281 { CYGNUM_SERIAL_BAUD_38400, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
282 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
283 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 284 #endif |
| 285 | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
286 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_57600) |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
287 #if !defined(CYGPKG_HAL_MN10300_AM33) |
| 2 | 288 { CYGNUM_SERIAL_BAUD_57600, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
289 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
290 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 291 #endif |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
292 #endif |
| 2 | 293 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
294 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_115200) |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
295 #if !defined(CYGPKG_HAL_MN10300_STDEVAL1) |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
296 { CYGNUM_SERIAL_BAUD_115200, CYGNUM_SERIAL_WORD_LENGTH_8, |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
297 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
298 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 299 #endif |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
300 #endif |
| 2 | 301 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
302 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN) |
| 2 | 303 // One stop bit, even parity |
| 304 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
305 CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_EVEN, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
306 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 307 #endif |
| 308 | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
309 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN) |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
310 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_STOP_2) |
| 2 | 311 // Two stop bits, even parity |
| 312 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
313 CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_EVEN, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
314 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 315 #endif |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
316 #endif |
| 2 | 317 |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
318 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_STOP_2) |
| 2 | 319 // Two stop bits, no parity |
| 320 { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
321 CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_NONE, |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
322 CYGNUM_SERIAL_FLOW_NONE }, |
| 2 | 323 #endif |
| 324 }; | |
| 325 | |
| 326 //---------------------------------------------------------------------------- | |
| 327 // Macros to help extract values from the argument string. | |
| 328 // Note: This is probably not an ideal solution, but it was easy to make :) | |
| 329 | |
| 330 #define INIT_VALUE(__args) \ | |
| 331 unsigned int v; \ | |
| 332 char *__ptr1, *__ptr2 = (__args) | |
| 333 | |
| 334 #define SET_VALUE(__slot) \ | |
| 335 do { \ | |
| 336 __ptr1 = index(__ptr2, (int) ':'); \ | |
| 337 if (__ptr1) \ | |
| 338 *__ptr1 = 0; \ | |
| 339 v = atoi(__ptr2); \ | |
| 340 __ptr2 = __ptr1+1; \ | |
| 341 (__slot) = v; \ | |
| 342 } while (0) | |
| 343 | |
| 344 | |
| 345 //---------------------------------------------------------------------------- | |
| 346 // CRC magic - it's a bit of a hack for now. | |
| 347 // FIXME: standard definition? | |
| 348 #define ADD_CRC_BYTE(__crc, __c) \ | |
| 349 CYG_MACRO_START \ | |
| 350 (__crc) = ((__crc) << 1) ^ (__c); \ | |
| 351 CYG_MACRO_END | |
| 352 | |
| 353 // FIXME: Hack to allow easy ASCII transfer. | |
| 354 #define FIX_CRC(__crc, __icrc) \ | |
| 355 CYG_MACRO_START \ | |
| 356 __icrc = (int) (__crc); \ | |
| 357 if (__icrc < 0) \ | |
| 358 __icrc = -__icrc; \ | |
| 359 CYG_MACRO_END | |
| 360 | |
| 361 //---------------------------------------------------------------------------- | |
| 362 // 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
|
363 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
|
364 static volatile int aborted; |
| 2 | 365 |
| 366 // This routine will be called if the read "times out" | |
| 367 static void | |
| 368 do_abort(void *handle) | |
| 369 { | |
| 370 cyg_io_handle_t io_handle = (cyg_io_handle_t)handle; | |
| 371 cyg_int32 len = 1; // Need something here | |
| 372 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
|
373 aborted = 1; |
| 2 | 374 } |
| 375 #include "timeout.inl" | |
| 376 | |
| 377 // Read with timeout (__t = timeout in ticks, int* __r = result) | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
378 #define Tcyg_io_read_timeout(__h, __d, __l, __t, __r) \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
379 CYG_MACRO_START \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
380 int __res; \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
381 r_stamp = timeout((__t), do_abort, (__h)); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
382 __res = cyg_io_read((__h), (__d), (__l)); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
383 if (ENOERR != __res && -EINTR != __res) { \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
384 TEST_CRASH(__h, TEST_CRASH_IO_READ, \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
385 "cyg_io_read/timeout failed", __res); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
386 } \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
387 *(__r) = __res; \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
388 untimeout(r_stamp); \ |
| 2 | 389 CYG_MACRO_END |
| 390 | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
391 #define Tcyg_io_read(__h, __d, __l) \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
392 CYG_MACRO_START \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
393 int __res = cyg_io_read((__h), (__d), (__l)); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
394 if (ENOERR != __res) { \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
395 TEST_CRASH(__h, TEST_CRASH_IO_READ, \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
396 "cyg_io_read failed", __res); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
397 } \ |
| 2 | 398 CYG_MACRO_END |
| 399 | |
| 400 #define Tcyg_io_write(__h, __d, __l) \ | |
| 401 CYG_MACRO_START \ | |
| 402 int __res; \ | |
| 403 cyg_uint32 __len = 1; \ | |
| 404 __res = cyg_io_write((__h), (__d), (__l)); \ | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
405 if (ENOERR != __res) { \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
406 TEST_CRASH(__h, TEST_CRASH_IO_WRITE, \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
407 "cyg_io_write failed", __res); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
408 } \ |
| 2 | 409 __res = cyg_io_get_config((__h), \ |
| 410 CYG_IO_GET_CONFIG_SERIAL_OUTPUT_DRAIN, \ | |
| 411 0, &__len); \ | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
412 if (ENOERR != __res) { \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
413 TEST_CRASH(__h, TEST_CRASH_IO_DRAIN, \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
414 "DRAIN failed", __res); \ |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
415 } \ |
| 2 | 416 CYG_MACRO_END |
| 417 | |
| 418 | |
| 419 //---------------------------------------------------------------------------- | |
| 420 // Some libc like functions that are handy to have around. | |
| 421 static int | |
| 422 strlen(const char *c) | |
| 423 { | |
| 424 int l = 0; | |
| 425 while (*c++) l++; | |
| 426 return l; | |
| 427 } | |
| 428 | |
| 429 static char* | |
| 430 strcpy(char* dest, const char* src) | |
| 431 { | |
| 432 char c; | |
| 433 while ((c = *src++)) { | |
| 434 *dest++ = c; | |
| 435 } | |
| 436 *dest = c; | |
| 437 | |
| 438 return dest; | |
| 439 } | |
| 440 | |
| 441 static char* | |
| 442 itoa(char* dest, int v) | |
| 443 { | |
| 444 char b[16]; | |
| 445 char* p = &b[16]; | |
| 446 | |
| 447 *--p = 0; | |
| 448 if (v) { | |
| 449 while (v){ | |
| 450 *--p = (v % 10) + '0'; | |
| 451 v = v / 10; | |
| 452 } | |
| 453 } else | |
| 454 *--p = '0'; | |
| 455 | |
| 456 return strcpy(dest, p); | |
| 457 } | |
| 458 | |
| 459 #define min(_a, _b) ((_a) < (_b)) ? (_a) : (_b) | |
| 460 | |
| 461 void | |
| 462 hang(void) | |
| 463 { | |
| 464 while (1); | |
| 465 } | |
| 466 | |
| 467 //----------------------------------------------------------------------------- | |
| 468 // Configuration changing function. | |
|
4
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 // 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
|
471 // can handle the config. |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
472 // If not, return error. |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
473 // |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
474 // 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
|
475 // Format out: |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
476 // "@CONFIG:<baud rate code>:<#data bits>:<#stop bits>:<parity on/off>:<flow control code>!" |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
477 // Format in: |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
478 // OK/ER |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
479 // |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
480 // On ER, return error. |
| 2 | 481 // |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
482 // On OK, change to the new configuration. Resynchronize with the host: |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
483 // Target waits for host to send S(ync) |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
484 // [host will delay at least .1 secs after changing baud rate so the |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
485 // line has time to settle.] |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
486 // |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
487 // When receiving S(ync), target replies OK to the host which then |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
488 // acknowledges with D(one). |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
489 // |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
490 // Host can also send R(esync) which means it didn't receieve the OK. If |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
491 // so the target resends its S(ync) message. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
492 // |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
493 // If the synchronization has not succeeded within 1 second |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
494 // (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
|
495 // 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
|
496 // 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
|
497 // a failure. |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
498 // |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
499 // To Do: |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
500 // Host&protocol currently only supports: |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
501 // - no/even parity |
| 2 | 502 int |
| 503 change_config(cyg_io_handle_t handle, cyg_ser_cfg_t* cfg) | |
| 504 { | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
505 cyg_serial_info_t old_cfg, new_cfg; |
| 2 | 506 const char cmd[] = "@CONFIG:"; |
| 507 char reply[2]; | |
| 508 int msglen; | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
509 int res, len; |
| 2 | 510 cyg_uint8 *p1; |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
511 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
512 // Prepare the command. |
| 2 | 513 p1 = &cmd_buffer[0]; |
| 514 p1 = strcpy(p1, &cmd[0]); | |
| 515 p1 = itoa(p1, cfg->baud_rate); | |
| 516 *p1++ = ':'; | |
| 517 p1 = itoa(p1, cfg->data_bits); | |
| 518 *p1++ = ':'; | |
| 519 p1 = itoa(p1, cfg->stop_bits); | |
| 520 *p1++ = ':'; | |
| 521 p1 = itoa(p1, cfg->parity); | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
522 *p1++ = ':'; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
523 p1 = itoa(p1, cfg->flags); |
| 2 | 524 *p1++ = '!'; |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
525 *p1 = 0; // note: we may append to this later |
| 2 | 526 |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
527 // Tell user what we're up to. |
| 2 | 528 CYG_TEST_INFO(&cmd_buffer[1]); |
| 529 | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
530 // 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
|
531 len = sizeof(old_cfg); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
532 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
|
533 &old_cfg, &len); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
534 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
|
535 &new_cfg, &len); |
|
30
641b639be825
Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents:
22
diff
changeset
|
536 |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
537 if (res != ENOERR) { |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
538 TEST_CRASH(handle, TEST_CRASH_IO_GET_CFG, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
539 "Can't get serial config", res); |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
540 } |
|
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 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
|
543 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
|
544 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
|
545 new_cfg.parity = cfg->parity; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
546 new_cfg.flags = cfg->flags; |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
547 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
548 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
|
549 &new_cfg, &len); |
|
20
5f5102441818
Merge from eCos master repository on 1999-07-02-23:17:07-BST
jlarmour
parents:
16
diff
changeset
|
550 cyg_thread_delay(10); // Some chips don't like changes to happen to fast... |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
551 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
552 // 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
|
553 // safe to return now. |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
554 if (ENOERR != res) { |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
555 // 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
|
556 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
|
557 p1 = strcpy(p1, txt_tskipped); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
558 *p1 = 0; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
559 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
|
560 return res; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
561 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
562 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
563 // 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
|
564 // with the host. |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
565 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
|
566 &old_cfg, &len); |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
567 cyg_thread_delay(10); // Some chips don't like changes to happen to fast... |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
568 |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
569 if (res != ENOERR) { |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
570 TEST_CRASH(handle, TEST_CRASH_IO_SET_CFG, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
571 "Can't set serial config", res); |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
572 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
573 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
574 // Send command to host and read host's reply. |
| 2 | 575 msglen = strlen(&cmd_buffer[0]); |
| 576 Tcyg_io_write(handle, &cmd_buffer[0], &msglen); | |
| 577 msglen = 2; | |
| 578 Tcyg_io_read(handle, &reply[0], &msglen); | |
| 579 | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
580 // Did host accept configuration? |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
581 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
|
582 // 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
|
583 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
|
584 p1 = strcpy(p1, txt_hskipped); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
585 *p1 = 0; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
586 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
|
587 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
|
588 reply[0], reply[1]); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
589 |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
590 res = ENOSUPP; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
591 return res; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
592 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
593 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
594 // Now change config and wait for host to send us a S(ync) |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
595 // character. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
596 // Loop until protocol exchange completed. This may hang (as seen |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
597 // from the host), but only when we get totally lost, in which |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
598 // case there's not much else to do really. In this case the host |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
599 // will consider the test a FAIL. |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
600 len = sizeof(new_cfg); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
601 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
|
602 &new_cfg, &len); |
|
20
5f5102441818
Merge from eCos master repository on 1999-07-02-23:17:07-BST
jlarmour
parents:
16
diff
changeset
|
603 cyg_thread_delay(10); // Some chips don't like changes to happen to fast... |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
604 if (res != ENOERR) { |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
605 TEST_CRASH(handle, TEST_CRASH_IO_SET_CFG, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
606 "Can't set serial config/2", res); |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
607 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
608 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
609 { |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
610 int change_succeeded = 0; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
611 int using_old_config = 0; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
612 char in_buf[1]; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
613 int len; |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
614 int saw_host_sync; |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
615 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
616 for (;;) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
617 aborted = 0; // global abort flag |
| 2 | 618 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
619 // FIXME: Timeout time needs to be configurable, and needs to |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
620 // be sent to the host before getting here. That would allow |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
621 // changing the timeout by just rebuilding the test - without |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
622 // changing the host software. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
623 saw_host_sync = 0; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
624 r_stamp = timeout(100, do_abort, handle); |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
625 while(!aborted) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
626 len = 1; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
627 in_buf[0] = 0; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
628 res = cyg_io_read(handle, in_buf, &len); |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
629 if (ENOERR != res && -EINTR != res) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
630 // We may have to reset the driver here if the fail |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
631 // was due to a framing or parity error. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
632 break; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
633 } |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
634 if ('R' == in_buf[0]) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
635 // Resync - host didn't see our message. Try again. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
636 saw_host_sync = 0; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
637 } else if ('S' == in_buf[0] && !saw_host_sync) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
638 // In sync - reply to host if we haven't already |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
639 char ok_msg[2] = "OK"; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
640 int ok_len = 2; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
641 Tcyg_io_write(handle, ok_msg, &ok_len); |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
642 saw_host_sync = 1; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
643 } else if ('D' == in_buf[0] && saw_host_sync) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
644 // Done - exchange completed. |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
645 change_succeeded = 1; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
646 break; |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
647 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
648 } |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
649 untimeout(r_stamp); |
|
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
650 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
651 if (change_succeeded) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
652 // If we had to revert to the old configuration, return error. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
653 if (using_old_config) |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
654 return -EIO; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
655 else |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
656 return ENOERR; |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
657 } |
| 2 | 658 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
659 // We didn't synchronize with the host. Due to an IO error? |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
660 if (ENOERR != res && -EINTR != res) { |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
661 // We may have to reset the driver if the fail was due to |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
662 // a framing or parity error. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
663 } |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
664 |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
665 // Revert to the old configuration and try again. |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
666 len = sizeof(old_cfg); |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
667 res = cyg_io_set_config(handle, CYG_IO_SET_CONFIG_SERIAL_INFO, |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
668 &old_cfg, &len); |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
669 cyg_thread_delay(10); // Some chips don't like changes to happen to fast... |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
670 if (res != ENOERR) { |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
671 TEST_CRASH(handle, TEST_CRASH_IO_SET_CFG, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
672 "Can't set serial config/3", res); |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
673 } |
|
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
674 using_old_config = 1; |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
675 } |
| 2 | 676 |
|
22
53104bbd5f99
Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents:
20
diff
changeset
|
677 } |
| 2 | 678 } |
| 679 | |
| 680 | |
| 681 //----------------------------------------------------------------------------- | |
| 682 // Host sends CRC in decimal ASCII, terminated with ! | |
| 683 int | |
| 684 read_host_crc(cyg_io_handle_t handle) | |
| 685 { | |
| 686 int crc, len; | |
| 687 cyg_uint8 ch; | |
| 688 | |
| 689 crc = 0; | |
| 690 while (1) { | |
| 691 len = 1; | |
| 692 Tcyg_io_read(handle, &ch, &len); | |
| 693 if ('!' == ch) | |
| 694 break; | |
| 695 | |
| 696 if (!((ch >= '0' && ch <= '9'))){ | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
697 TEST_CRASH(handle, TEST_CRASH_CRC_CHAR, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
698 "Illegal CRC format from host", ch); |
| 2 | 699 } |
| 700 | |
| 701 crc = crc*10 + (ch - '0'); | |
| 702 } | |
| 703 | |
| 704 return crc; | |
| 705 } | |
| 706 | |
| 707 //--------------------------------------------------------------------------- | |
| 708 // Test binary data transmission. | |
| 709 // Format out: | |
| 710 // "@BINARY:<byte size>:<mode>!" | |
| 711 // Format in: | |
| 712 // <checksum>!<#size bytes data> | |
| 713 // For echo modes, also: | |
| 714 // Format out: | |
| 715 // <#size bytes data> | |
| 716 // Format in: | |
| 717 // OK/ER | |
| 718 // Format out: | |
| 719 // DONE | |
| 720 // | |
| 721 // The last DONE allows the host to eat bytes if target is sending too many. | |
| 722 // | |
| 723 // Mode: | |
| 724 // MODE_NO_ECHO: | |
| 725 // Just receive data and verify CRC. | |
| 726 // MODE_EOP_ECHO: | |
| 727 // Receive data, verify CRC, resend data. | |
| 728 // Expect OK/ER reply from host when done. | |
| 729 // MODE_DUPLEX_ECHO: | |
| 730 // Receive data, echo data, verify CRC. | |
| 731 // Expect OK/ER reply from host when done. | |
| 732 // | |
| 733 // Note: | |
| 734 // Using diag_printf while talking with the host may cause some funky | |
| 735 // errors (bytes from the host side being lost!?!?) | |
| 736 // | |
| 737 // To Do: | |
| 738 // MODE_DUPLEX_ECHO: | |
| 739 // The current implementation is simple and may not stress the | |
| 740 // driver enough. Also, it's command packet format doesn't match | |
| 741 // that of the other modes. | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
742 |
| 2 | 743 cyg_test_return_t |
| 744 test_binary(cyg_io_handle_t handle, int size, cyg_mode_t mode) | |
| 745 { | |
| 746 const char cmd[] = "@BINARY:"; | |
| 747 int msglen; | |
| 748 cyg_uint32 xcrc; | |
| 749 int icrc, host_crc; | |
| 750 cyg_uint8 *p1; | |
| 751 cyg_int8 host_status = 'O'; // host is happy by default | |
| 752 | |
| 753 // Verify that the test can be run with available ressources. | |
| 754 if (MODE_EOP_ECHO == mode && size > IN_BUFFER_SIZE) | |
| 755 return TEST_RETURN_NA; | |
| 756 | |
| 757 // Prepare and send the command. | |
| 758 p1 = &cmd_buffer[0]; | |
| 759 p1 = strcpy(p1, &cmd[0]); | |
| 760 p1 = itoa(p1, size); | |
| 761 *p1++ = ':'; | |
| 762 p1 = itoa(p1, mode); | |
| 763 *p1++ = '!'; | |
| 764 *p1++ = 0; | |
| 765 | |
| 766 CYG_TEST_INFO(&cmd_buffer[1]); | |
| 767 | |
| 768 msglen = strlen(&cmd_buffer[0]); | |
| 769 Tcyg_io_write(handle, &cmd_buffer[0], &msglen); | |
| 770 | |
| 771 // Get CRC back. | |
| 772 host_crc = read_host_crc(handle); | |
| 773 | |
| 774 // Depending on mode, start reading data. | |
| 775 xcrc = 0; | |
| 776 switch (mode) { | |
| 777 case MODE_NO_ECHO: | |
| 778 { | |
| 779 // Break transfers into chunks no larger than the buffer size. | |
| 780 int tx_len, chunk_len, i; | |
| 781 while (size > 0) { | |
| 782 chunk_len = min(IN_BUFFER_SIZE, size); | |
| 783 tx_len = chunk_len; | |
| 784 size -= chunk_len; | |
| 785 | |
| 786 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 787 | |
| 788 for (i = 0; i < tx_len; i++) { | |
| 789 ADD_CRC_BYTE(xcrc, in_buffer[i]); | |
| 790 } | |
| 791 } | |
| 792 | |
| 793 // Reply that we have completed the test. | |
| 794 { | |
| 795 const char msg_done[] = "DONE"; | |
| 796 | |
| 797 chunk_len = strlen(&msg_done[0]); | |
| 798 Tcyg_io_write(handle, &msg_done[0], &chunk_len); | |
| 799 } | |
| 800 | |
| 801 } | |
| 802 break; | |
| 803 case MODE_EOP_ECHO: | |
| 804 { | |
| 805 // We have already checked that the in buffer is large enough. | |
| 806 int i, tx_len, chunk_len; | |
| 807 chunk_len = tx_len = size; | |
| 808 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 809 | |
| 810 for (i = 0; i < tx_len; i++) { | |
| 811 ADD_CRC_BYTE(xcrc, in_buffer[i]); | |
| 812 } | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
108
diff
changeset
|
813 |
| 2 | 814 // Echo data back. |
| 815 chunk_len = size; | |
| 816 Tcyg_io_write(handle, &in_buffer[0], &chunk_len); | |
| 817 | |
| 818 // Now read host side's status | |
| 819 chunk_len = 2; | |
| 820 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 821 host_status = in_buffer[0]; | |
| 822 | |
| 823 // Reply that we have completed the test. | |
| 824 { | |
| 825 const char msg_done[] = "DONE"; | |
| 826 | |
| 827 chunk_len = strlen(&msg_done[0]); | |
| 828 Tcyg_io_write(handle, &msg_done[0], &chunk_len); | |
| 829 } | |
| 830 } | |
| 831 break; | |
| 832 case MODE_DUPLEX_ECHO: | |
| 833 { | |
| 834 int chunk_len; | |
| 835 int block_size = 64; | |
| 836 | |
| 837 // This is a simple implementation (maybe too simple). | |
| 838 // Host sends 4 packets with the same size (64 bytes atm). | |
| 839 // Target echoes in this way: | |
| 840 // packet1 -> packet1 | |
| 841 // packet2 -> packet2, packet2 | |
| 842 // packet3 -> packet3 | |
| 843 // packet4 -> /dev/null | |
| 844 // | |
| 845 // The reads/writes are interleaved in a way that should ensure | |
| 846 // the target out buffer to be full before the target starts to read | |
| 847 // packet3. That is, the target should be both receiving (packet3) | |
| 848 // and sending (packet2) at the same time. | |
| 849 | |
| 850 while (size--) { | |
| 851 // block_size -> block_size | |
| 852 chunk_len = block_size; | |
| 853 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 854 chunk_len = block_size; | |
| 855 Tcyg_io_write(handle, &in_buffer[0], &chunk_len); | |
| 856 | |
| 857 // block_size -> 2 x block_size | |
| 858 chunk_len = block_size; | |
| 859 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 860 chunk_len = block_size; | |
| 861 Tcyg_io_write(handle, &in_buffer[0], &chunk_len); | |
| 862 chunk_len = block_size; | |
| 863 Tcyg_io_write(handle, &in_buffer[0], &chunk_len); | |
| 864 | |
| 865 // block_size -> block_size | |
| 866 chunk_len = block_size; | |
| 867 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 868 chunk_len = block_size; | |
| 869 Tcyg_io_write(handle, &in_buffer[0], &chunk_len); | |
| 870 | |
| 871 // block_size -> 0 | |
| 872 chunk_len = block_size; | |
| 873 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 874 } | |
| 875 | |
| 876 // Kill the CRC. Leave packet verification to the host for now. | |
| 877 xcrc = host_crc = 0; | |
| 878 | |
| 879 // Now read host side's status | |
| 880 chunk_len = 2; | |
| 881 Tcyg_io_read(handle, &in_buffer[0], &chunk_len); | |
| 882 host_status = in_buffer[0]; | |
| 883 | |
| 884 // Reply that we have completed the test. | |
| 885 { | |
| 886 const char msg_done[] = "DONE"; | |
| 887 | |
| 888 chunk_len = strlen(&msg_done[0]); | |
| 889 Tcyg_io_write(handle, &msg_done[0], &chunk_len); | |
| 890 } | |
| 891 } | |
| 892 break; | |
| 893 default: | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
894 TEST_CRASH(handle, TEST_CRASH_PROT_BIN_MODE, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
895 "Unknown mode", mode); |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
896 break; |
| 2 | 897 } |
| 898 | |
| 899 | |
| 900 // Verify that the CRC matches the one from the host. | |
| 901 FIX_CRC(xcrc, icrc); | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
902 if (host_crc != icrc) { |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
903 TEST_CRASH(handle, TEST_CRASH_CRC_BAD, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
904 "Input CRC failed", icrc, host_crc); |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
905 } |
| 2 | 906 |
| 907 // Verify that the host is happy with the data we echoed. | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
908 if ('O' != host_status) { |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
909 TEST_CRASH(handle, TEST_CRASH_CRC_HOST, |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
910 "Output CRC failed"); |
|
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
911 } |
| 2 | 912 |
| 913 CYG_TEST_PASS("Binary test completed"); | |
| 914 return TEST_RETURN_OK; | |
| 915 } | |
| 916 | |
| 917 //--------------------------------------------------------------------------- | |
| 918 // Test transformations on text transmissions | |
| 919 // Format out: | |
| 920 // "@TEXT:<mode>!<4 bytes binary checksum><C string>" | |
| 921 // Format in: | |
| 922 // "<C string>" | |
| 923 // OK/ER | |
| 924 // | |
| 925 // Mode: | |
| 926 // MODE_EOP_ECHO: | |
| 927 // Receive data, verify CRC, resend data. | |
| 928 // Expect OK/ER reply from host when done. | |
| 929 // MODE_DUPLEX_ECHO: | |
| 930 // Receive data, echo data, verify CRC. | |
| 931 // Expect OK/ER reply from host when done. | |
| 932 // | |
| 933 cyg_test_return_t | |
| 934 test_text(cyg_io_handle_t handle, cyg_mode_t mode, const char* s_base, | |
| 935 const char* s_out, const char* s_in) | |
| 936 { | |
| 937 return TEST_RETURN_NA; | |
| 938 } | |
| 939 | |
| 940 //--------------------------------------------------------------------------- | |
| 941 // Send PING to host, verifying the filter's presence. | |
| 942 // Format out: | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
943 // "@PING:<crash id>!" |
| 2 | 944 // Format in: |
| 945 // "OK" | |
| 946 // or | |
| 947 // No response if directly connected to GDB. | |
| 948 // | |
| 949 // This call only returns if the ser_filter is listening. Otherwise it | |
| 950 // sends N/A and hangs. | |
| 951 void | |
| 952 test_ping(cyg_io_handle_t handle) | |
| 953 { | |
|
34
29bc183297e1
Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
32
diff
changeset
|
954 char msg[] = "@PING:" TEST_CRASH_ID "!"; |
| 2 | 955 char msg2[] = "\n"; |
| 956 int msglen = strlen(msg); | |
| 957 int res; | |
| 958 | |
| 959 msglen = strlen(msg); | |
| 960 Tcyg_io_write(handle, msg, &msglen); | |
| 961 | |
| 962 // Now read host side's status | |
| 963 msglen = 2; | |
| 964 Tcyg_io_read_timeout(handle, &in_buffer[0], &msglen, 100, &res); | |
| 965 if (ENOERR == res && 'O' == in_buffer[0] && 'K' == in_buffer[1]) | |
| 966 return; | |
| 967 | |
| 968 msglen = strlen(msg2); | |
| 969 Tcyg_io_write(handle, msg2, &msglen); | |
| 970 | |
| 971 CYG_TEST_NA("No host side testing harness detected."); | |
| 972 } | |
| 973 | |
|
10
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
974 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
975 //--------------------------------------------------------------------------- |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
976 // 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
|
977 // Format out: |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
978 // "@OPT:option1,value1:...:optionN,valueN!" |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
979 // Format in: |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
980 // "OK" |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
981 // |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
982 // 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
|
983 // filter will be silently ignored. |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
984 void |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
985 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
|
986 { |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
987 const char cmd[] = "@OPT:"; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
988 int msglen; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
989 cyg_uint8 *p1; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
990 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
991 // Prepare and send the command. |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
992 p1 = &cmd_buffer[0]; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
993 p1 = strcpy(p1, &cmd[0]); |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
994 while(count--) { |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
995 p1 = itoa(p1, *options++); // option |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
996 *p1++ = ':'; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
997 p1 = itoa(p1, *options++); // value |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
998 *p1++ = ':'; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
999 } |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1000 *(p1-1) = '!'; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1001 *p1++ = 0; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1002 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1003 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
|
1004 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1005 msglen = strlen(&cmd_buffer[0]); |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1006 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
|
1007 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1008 // 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
|
1009 msglen = 2; |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1010 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
|
1011 } |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1012 |
|
d3fbcdfa1b2f
Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents:
6
diff
changeset
|
1013 |
| 2 | 1014 //--------------------------------------------------------------------------- |
| 1015 // Some helper functions to get a test started. | |
| 1016 void | |
| 1017 test_open_ser( cyg_io_handle_t* handle ) | |
| 1018 { | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
1019 #if defined(CYGPKG_IO_SERIAL_DEVICES) && !defined(SER_NOP_TEST) |
| 2 | 1020 Cyg_ErrNo res; |
| 1021 | |
| 1022 if (cyg_test_is_simulator) | |
| 1023 CYG_TEST_NA("Cannot run from simulator"); | |
| 1024 | |
| 1025 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER) | |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1026 # if defined(CYGPRI_SER_TEST_OVERRIDE_INT_1) |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1027 HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_1, NULL); |
| 2 | 1028 # endif |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1029 # if defined(CYGPRI_SER_TEST_OVERRIDE_INT_2) |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1030 HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_2, NULL); |
| 2 | 1031 # endif |
| 1032 #endif | |
| 1033 | |
| 1034 res = cyg_io_lookup(TEST_SER_DEV, handle); | |
| 1035 if (res != ENOERR) { | |
| 1036 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_SER_DEV); | |
| 1037 } | |
| 1038 #else | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
1039 CYG_TEST_NA(NA_MSG); |
| 2 | 1040 #endif |
| 1041 } | |
| 1042 | |
| 1043 void | |
| 1044 test_open_tty( cyg_io_handle_t* handle ) | |
| 1045 { | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
1046 #if defined(CYGPKG_IO_SERIAL_TTY) && !defined(TTY_NOP_TEST) |
| 2 | 1047 Cyg_ErrNo res; |
| 1048 | |
| 1049 if (cyg_test_is_simulator) | |
| 1050 CYG_TEST_NA("Cannot run from simulator"); | |
| 1051 | |
| 1052 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER) | |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1053 # if defined(CYGPRI_SER_TEST_OVERRIDE_INT_1) |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1054 HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_1, NULL); |
| 2 | 1055 # endif |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1056 # if defined(CYGPRI_SER_TEST_OVERRIDE_INT_2) |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
1057 HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_2, NULL); |
| 2 | 1058 # endif |
| 1059 #endif | |
| 1060 | |
| 1061 res = cyg_io_lookup(TEST_TTY_DEV, handle); | |
| 1062 if (res != ENOERR) { | |
| 1063 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_TTY_DEV); | |
| 1064 } | |
| 1065 #else | |
|
4
1d7f19c9e4d1
Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents:
2
diff
changeset
|
1066 CYG_TEST_NA(NA_MSG); |
| 2 | 1067 #endif |
| 1068 } | |
| 1069 | |
| 1070 //--------------------------------------------------------------------------- | |
| 1071 // end of ser_test_protocol.inl |
