annotate packages/io/serial/current/tests/ser_test_protocol.inl @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents ff3f181b64bd
children 0ec04793409a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // ser_test_protocol.c
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 // Serial device driver testing protocol
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
18 // License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
25 // Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 54
diff changeset
29 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 // Author(s): jskov
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 // Contributors: jskov
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 // Date: 1999-03-17
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37 // Description: Protocol implementation used to test eCos serial devices.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 // Relies on ser_filter to be present on the host side to
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 // respond to test requests.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 // To Do:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42 // o Clean up.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43 // o Clean up config change magic.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44 // o Figure out how to handle kernel dependency
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45 // : without kernel, no timeout. Without timeout, no filter auto detection.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47 //####DESCRIPTIONEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49 #include <pkgconf/system.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50 #include <pkgconf/io.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51 #include <pkgconf/io_serial.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 #include <cyg/io/io.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54 #include <cyg/io/devtab.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55 #include <cyg/io/ttyio.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56 #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
57 #include <cyg/infra/cyg_ass.h>
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
59 #include <cyg/hal/hal_intr.h> // for reclaiming interrup vector
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
60
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
61 #ifdef CYG_HAL_SPARCLITE_SLEB
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
62 #include <pkgconf/hal_sparclite_sleb.h> // CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
63 #endif
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
64
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
65 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
66 // 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
67
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
68 #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
69
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70 #if defined(CYGPKG_HAL_POWERPC_COGENT) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT_SERIAL_B)
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
73 # define TEST_CRASH_ID "ppccog"
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74 # define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_COGENT_SERIAL_B_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY2_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 #endif
32
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents: 30
diff changeset
79 #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
80 && defined(CYGPKG_HAL_QUICC) \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents: 30
diff changeset
81 && 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
82 && 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
83 # 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
84 # 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
85 # 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
86 # 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
87 # endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents: 30
diff changeset
88 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89 #if defined(CYGPKG_HAL_ARM_PID) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90 && defined(CYGPKG_IO_SERIAL_ARM_PID) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 && defined(CYGPKG_IO_SERIAL_ARM_PID_SERIAL0)
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 "armpid"
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
93 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_PID_SERIAL0_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97 #endif
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
98 #if defined(CYGPKG_HAL_ARM_AEB) \
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
99 && defined(CYGPKG_IO_SERIAL_ARM_AEB) \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 && defined(CYGPKG_IO_SERIAL_ARM_AEB_SERIAL1)
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 "armaeb"
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_AEB_SERIAL1_NAME
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
103 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
104 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
105 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106 #endif
54
f10165814f1e Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents: 46
diff changeset
107 #if defined(CYGPKG_HAL_ARM_EDB7XXX) \
f10165814f1e Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents: 46
diff changeset
108 && defined(CYGPKG_IO_SERIAL_ARM_EDB7XXX) \
f10165814f1e Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents: 46
diff changeset
109 && defined(CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1)
f10165814f1e Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents: 46
diff changeset
110 # define TEST_CRASH_ID "armedb7xxx"
f10165814f1e Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents: 46
diff changeset
111 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL1_NAME
32
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents: 30
diff changeset
112 # 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
113 # 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
114 # endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents: 30
diff changeset
115 #endif
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
116 #if defined(CYGPKG_HAL_ARM_CMA230) \
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
117 && defined(CYGPKG_IO_SERIAL_ARM_CMA230) \
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
118 && defined(CYGPKG_IO_SERIAL_ARM_CMA230_SERIAL_A)
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
119 # define TEST_CRASH_ID "armcma"
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
120 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_CMA230_SERIAL_A_NAME
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
121 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
122 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
123 # endif
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
124 #endif
82
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 76
diff changeset
125 #if defined(CYGPKG_HAL_ARM_EBSA285) \
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 76
diff changeset
126 && defined(CYGPKG_IO_SERIAL_ARM_EBSA285) \
6736c52df507 Merge from eCos master repository on 2000-04-14-13:35:46-BST
jlarmour
parents: 76
diff changeset
127 && defined(CYGPKG_IO_SERIAL_ARM_EBSA285_SERIAL)
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
128 # define TEST_CRASH_ID "arm285"
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
129 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_EBSA285_SERIAL_NAME
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
130 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
131 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
132 # endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
133 #endif
108
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
134 #if defined(CYGPKG_HAL_ARM_SA11X0_ASSABET) \
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
135 && defined(CYGPKG_IO_SERIAL_ARM_SA11X0) \
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
136 && defined(CYGPKG_IO_SERIAL_ARM_SA11X0_SERIAL1)
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
137 # define TEST_CRASH_ID "assabet"
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
138 # define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_SA11X0_SERIAL1_NAME
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
139 # if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
140 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
141 # endif
ff3f181b64bd Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents: 105
diff changeset
142 #endif
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
143 #if defined(CYGPKG_HAL_MIPS_TX39_JMR3904) \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
144 && defined(CYGPKG_IO_SERIAL_TX39_JMR3904) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
145 && defined(CYGPKG_IO_SERIAL_TX39_JMR3904_SERIAL0)
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
146 # define TEST_CRASH_ID "tx3jmr"
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
147 # define TEST_SER_DEV CYGDAT_IO_SERIAL_TX39_JMR3904_SERIAL0_NAME
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
148 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
149 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
150 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
151 #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
152 #if defined(CYGPKG_HAL_MIPS_VR4300_VRC4373) \
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
153 && defined(CYGPKG_IO_SERIAL_MIPS_VRC4373) \
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
154 && defined(CYGPKG_IO_SERIAL_MIPS_VRC4373_SERIAL0)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
155 # define TEST_CRASH_ID "vrc4373"
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
156 # define TEST_SER_DEV CYGDAT_IO_SERIAL_MIPS_VRC4373_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
157 # 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
158 # 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
159 # endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
160 #endif
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 22
diff changeset
161 #if defined(CYGPKG_HAL_MN10300_AM31_STDEVAL1) \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
162 && 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
163 && 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
164 # 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
165 # 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
166 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
167 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
168 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
169 #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
170 #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
171 && 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
172 && 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
173 # 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
174 # 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
175 # 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
176 # 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
177 # endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
178 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
179 #if defined(CYGPKG_HAL_SPARCLITE_SLEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
180 && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
181 && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB_CON1)
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
182 # undef NA_MSG
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
183 # define NA_MSG "CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT is unset"
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
184 # if !defined(CYG_HAL_STARTUP_RAM) \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
185 || defined(CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT)
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
186 # define TEST_CRASH_ID "sparcl"
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
187 # define TEST_SER_DEV CYGDAT_IO_SERIAL_SPARCLITE_SLEB_CON1_NAME
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
188 // The interrupt vectors are normally in CygMon's control. Steal them back,
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
189 // but beware that this results in GDB acknowledge characters showing up in
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
190 // the serial driver if CygMon is used for hal_diag output.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
191 // Set CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT in hal_sparclite_sleb as a workaround.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
192 # define SER_OVERRIDE_INT_1 CYGNUM_HAL_INTERRUPT_9
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
193 # define SER_OVERRIDE_INT_2 CYGNUM_HAL_INTERRUPT_10
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
194 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
195 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
196 # endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
197 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
198 #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
199 #if defined(CYGPKG_HAL_SH) \
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
200 && defined(CYGPKG_IO_SERIAL_SH_EDK7708) \
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
201 && defined(CYGPKG_IO_SERIAL_SH_EDK7708_SCI)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
202 # define TEST_CRASH_ID "sh7708"
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
203 # define TEST_SER_DEV CYGDAT_IO_SERIAL_SH_EDK7708_SCI_NAME
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
204 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
205 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
206 # endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
207 #endif
105
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
208 #if defined(CYGPKG_HAL_SH) \
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
209 && defined(CYGPKG_IO_SERIAL_SH_CQ7708) \
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
210 && defined(CYGPKG_IO_SERIAL_SH_CQ7708_SCI)
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
211 # define TEST_CRASH_ID "cq7708"
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
212 # define TEST_SER_DEV CYGDAT_IO_SERIAL_SH_CQ7708_SCI_NAME
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
213 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
214 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
215 # endif
5a0cc6c243a9 Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents: 96
diff changeset
216 #endif
72
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
217 #if defined(CYGPKG_HAL_I386_PC) \
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
218 && defined(CYGPKG_IO_SERIAL_I386_PC) \
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
219 && defined(CYGPKG_IO_SERIAL_I386_PC_SERIAL0)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
220 # define TEST_CRASH_ID "i386pc"
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
221 # define TEST_SER_DEV CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
222 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
223 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
224 # endif
da3908c9cd10 Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents: 66
diff changeset
225 #endif
96
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
226 #if defined(CYGPKG_HAL_V85X_V850) \
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
227 && defined(CYGPKG_IO_SERIAL_V85X_V850) \
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
228 && defined(CYGPKG_IO_SERIAL_V85X_V850_SERIAL0)
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
229 # define TEST_CRASH_ID "v85x/v850"
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
230 # define TEST_SER_DEV CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
231 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
232 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
233 # endif
b15c60e34c84 Merge from eCos master repository on 2000-06-06-05:24:42-BST
jlarmour
parents: 82
diff changeset
234 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
235 #if defined(CYGPKG_IO_SERIAL_LOOP) \
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
236 && defined(CYGPKG_IO_SERIAL_LOOP_SERIAL0)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
237 # define TEST_CRASH_ID "loop"
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
238 # define TEST_SER_DEV CYGDAT_IO_SERIAL_LOOP_SERIAL0_NAME
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
239 # if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
240 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
241 # endif
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
242 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
243
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
244 // We can't rely on haldiag for ser_filter detection - it may not define
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
245 // a working character reading function.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
246 #ifndef TEST_SER_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
247 # define SER_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
248 # define TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
249 # define TEST_SER_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
250 # define TEST_TTY_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
251 #else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
252 # ifndef TEST_TTY_DEV
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
253 # define TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
254 # define TEST_TTY_DEV "/dev/null"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
255 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
256 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
257
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
258 #ifndef TEST_CRASH_ID
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
259 #define TEST_CRASH_ID "......"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
260 #endif
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
261
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
262 //----------------------------------------------------------------------------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
263 // Crash types
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
264 // 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
265 // 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
266 // 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
267
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
268 // 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
269 // tttttt: 6 letter target code
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
270 // 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
271
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
272 #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
273 CYG_MACRO_START \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
274 int __len = 1; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
275 /* Try to flush remaining input */ \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
276 cyg_thread_delay(50); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
277 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
278 0, &__len); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
279 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
280 diag_printf("!>\n"); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
281 CYG_FAIL(__msg); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
282 hang(); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
283 CYG_MACRO_END
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
284
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
285 // Target IO
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
286 #define TEST_CRASH_IO 0x0000
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
287 #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
288 #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
289 #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
290 #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
291 #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
292
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
293 // Target
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
294 #define TEST_CRASH_CRC 0x0010
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
295 #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
296 #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
297 #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
298
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
299 // Protocol errors
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
300 #define TEST_CRASH_PROT 0x1000
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
301 #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
302 #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
303
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
304 #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
305 #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
306 // command#, read invocation#, expected, actual
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
307 #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
308 // 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
309 #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
310 // command#, index, expected char, actual
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
311
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
312 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
313 // 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
314 #ifndef IN_BUFFER_SIZE
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
315 # define IN_BUFFER_SIZE 1024
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
316 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
317 cyg_uint8 in_buffer[IN_BUFFER_SIZE];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
318
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
319 cyg_int8 cmd_buffer[128];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
320
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
321 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
322 // Some types specific to the testing protocol.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
323 typedef enum {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
324 MODE_NO_ECHO = 0,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
325 MODE_EOP_ECHO,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
326 MODE_DUPLEX_ECHO
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
327 } cyg_mode_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
328
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
329 typedef enum {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
330 TEST_RETURN_OK = ENOERR,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
331 TEST_RETURN_NA
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
332 } cyg_test_return_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
333
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
334 typedef struct ser_cfg {
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
335 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
336 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
337 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
338 cyg_serial_parity_t parity;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
339 cyg_uint32 flags;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
340 // etc...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
341 } cyg_ser_cfg_t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
342
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
343 typedef enum {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
344 OPT_SERIAL_DEBUG = 0,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
345 OPT_VERBOSE_LEVEL
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
346 } cyg_option_t;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
347
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
348 typedef enum {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
349 NONE = 0,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
350 PROTOCOL_PROGRESS,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
351 PROTOCOL_DATA,
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
352 } cyg_verbosity_level_t;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
353
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
354
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
355 // 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
356 #define TEST_OPTIONS(__handle, __array) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
357 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
358
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
359 #define TEST_HOST_DEBUG(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
360 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
361 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
362 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
363 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
364 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
365
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
366 #define TEST_HOST_PROGRESS(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
367 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
368 cyg_uint32 __options[] = \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
369 {OPT_SERIAL_DEBUG, 1, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
370 OPT_VERBOSE_LEVEL, PROTOCOL_PROGRESS}; \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
371 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
372 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
373 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
374
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
375 #define TEST_HOST_DATA(__handle) \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
376 CYG_MACRO_START \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
377 cyg_uint32 __options[] = \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
378 {OPT_SERIAL_DEBUG, 1, \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
379 OPT_VERBOSE_LEVEL, PROTOCOL_DATA}; \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
380 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
381 __options); \
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
382 CYG_MACRO_END
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
383
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
384 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
385 // A few predefined configurations. These must all be valid for any
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
386 // given target until change_config is behaving correctly.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
387 cyg_ser_cfg_t test_configs[] = {
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
388 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && !defined(CYGPKG_HAL_ARM_PID)
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
389 { 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
390 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
391 CYGNUM_SERIAL_FLOW_NONE },
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
392 #endif
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
393
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 22
diff changeset
394 #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
395 !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
396 { 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
397 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
398 CYGNUM_SERIAL_FLOW_NONE },
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 22
diff changeset
399 #endif
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
400
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
401 { 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
402 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
403 CYGNUM_SERIAL_FLOW_NONE },
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
404
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
405 #if !defined(CYGPKG_HAL_SPARCLITE_SLEB) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
406 !defined(CYGPKG_HAL_ARM_AEB)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
407 { 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
408 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
409 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
410 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
411
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
412 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
413 !defined(CYGPKG_HAL_ARM_AEB) && \
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 22
diff changeset
414 !defined(CYGPKG_HAL_SPARCLITE_SLEB) && \
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
415 !defined(CYGPKG_HAL_MN10300_AM33)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
416 { 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
417 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
418 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
419 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
420
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
421 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
422 !defined(CYGPKG_HAL_ARM_PID) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
423 !defined(CYGPKG_HAL_ARM_AEB) && \
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
424 !defined(CYGPKG_HAL_MN10300_STDEVAL1) && \
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
425 !defined(CYGPKG_HAL_ARM_CMA230) && \
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 72
diff changeset
426 !defined(CYGPKG_HAL_ARM_EDB7XXX) && \
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
427 !defined(CYGPKG_HAL_SPARCLITE_SLEB)
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
428 { 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
429 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
430 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
431 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
432
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
433 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
434 !defined(CYGPKG_HAL_ARM_AEB) && \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
435 !defined(CYGPKG_HAL_ARM_PID)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
436 // One stop bit, even parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
437 { 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
438 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
439 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
440 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
441
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
442 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) && \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
443 !defined(CYGPKG_HAL_ARM_AEB) && \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
444 !defined(CYGPKG_HAL_ARM_PID)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
445 // Two stop bits, even parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
446 { 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
447 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
448 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
449 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
450
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
451 #if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
452 // Two stop bits, no parity
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
453 { 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
454 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
455 CYGNUM_SERIAL_FLOW_NONE },
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
456 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
457 };
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
458
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
459 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
460 // Macros to help extract values from the argument string.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
461 // Note: This is probably not an ideal solution, but it was easy to make :)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
462
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
463 #define INIT_VALUE(__args) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
464 unsigned int v; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
465 char *__ptr1, *__ptr2 = (__args)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
466
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
467 #define SET_VALUE(__slot) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
468 do { \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
469 __ptr1 = index(__ptr2, (int) ':'); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
470 if (__ptr1) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
471 *__ptr1 = 0; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
472 v = atoi(__ptr2); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
473 __ptr2 = __ptr1+1; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
474 (__slot) = v; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
475 } while (0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
476
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
477
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
478 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
479 // CRC magic - it's a bit of a hack for now.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
480 // FIXME: standard definition?
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
481 #define ADD_CRC_BYTE(__crc, __c) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
482 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
483 (__crc) = ((__crc) << 1) ^ (__c); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
484 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
485
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
486 // FIXME: Hack to allow easy ASCII transfer.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
487 #define FIX_CRC(__crc, __icrc) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
488 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
489 __icrc = (int) (__crc); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
490 if (__icrc < 0) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
491 __icrc = -__icrc; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
492 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
493
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
494 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
495 // 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
496 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
497 static volatile int aborted;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
498
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
499 // This routine will be called if the read "times out"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
500 static void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
501 do_abort(void *handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
502 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
503 cyg_io_handle_t io_handle = (cyg_io_handle_t)handle;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
504 cyg_int32 len = 1; // Need something here
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
505 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
506 aborted = 1;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
507 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
508 #include "timeout.inl"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
509
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
510 // 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
511 #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
512 CYG_MACRO_START \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
513 int __res; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
514 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
515 __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
516 if (ENOERR != __res && -EINTR != __res) { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
517 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
518 "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
519 } \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
520 *(__r) = __res; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
521 untimeout(r_stamp); \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
522 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
523
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
524 #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
525 CYG_MACRO_START \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
526 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
527 if (ENOERR != __res) { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
528 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
529 "cyg_io_read failed", __res); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
530 } \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
531 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
532
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
533 #define Tcyg_io_write(__h, __d, __l) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
534 CYG_MACRO_START \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
535 int __res; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
536 cyg_uint32 __len = 1; \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
537 __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
538 if (ENOERR != __res) { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
539 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
540 "cyg_io_write failed", __res); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
541 } \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
542 __res = cyg_io_get_config((__h), \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
543 CYG_IO_GET_CONFIG_SERIAL_OUTPUT_DRAIN, \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
544 0, &__len); \
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
545 if (ENOERR != __res) { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
546 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
547 "DRAIN failed", __res); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
548 } \
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
549 CYG_MACRO_END
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
550
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
551
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
552 //----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
553 // Some libc like functions that are handy to have around.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
554 static int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
555 strlen(const char *c)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
556 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
557 int l = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
558 while (*c++) l++;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
559 return l;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
560 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
561
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
562 static char*
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
563 strcpy(char* dest, const char* src)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
564 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
565 char c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
566 while ((c = *src++)) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
567 *dest++ = c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
568 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
569 *dest = c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
570
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
571 return dest;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
572 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
573
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
574 static char*
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
575 itoa(char* dest, int v)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
576 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
577 char b[16];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
578 char* p = &b[16];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
579
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
580 *--p = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
581 if (v) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
582 while (v){
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
583 *--p = (v % 10) + '0';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
584 v = v / 10;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
585 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
586 } else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
587 *--p = '0';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
588
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
589 return strcpy(dest, p);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
590 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
591
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
592 #define min(_a, _b) ((_a) < (_b)) ? (_a) : (_b)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
593
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
594 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
595 hang(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
596 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
597 while (1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
598 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
599
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
600 //-----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
601 // Configuration changing function.
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
602 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
603 // 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
604 // can handle the config.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
605 // If not, return error.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
606 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
607 // 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
608 // Format out:
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
609 // "@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
610 // Format in:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
611 // OK/ER
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
612 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
613 // On ER, return error.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
614 //
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
615 // 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
616 // 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
617 // [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
618 // 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
619 //
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
620 // 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
621 // acknowledges with D(one).
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
622 //
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
623 // 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
624 // 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
625 //
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
626 // 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
627 // (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
628 // 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
629 // 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
630 // a failure.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
631 //
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
632 // To Do:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
633 // Host&protocol currently only supports:
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
634 // - no/even parity
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
635 int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
636 change_config(cyg_io_handle_t handle, cyg_ser_cfg_t* cfg)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
637 {
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
638 cyg_serial_info_t old_cfg, new_cfg;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
639 const char cmd[] = "@CONFIG:";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
640 char reply[2];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
641 int msglen;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
642 int res, len;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
643 cyg_uint8 *p1;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
644
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
645 // Prepare the command.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
646 p1 = &cmd_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
647 p1 = strcpy(p1, &cmd[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
648 p1 = itoa(p1, cfg->baud_rate);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
649 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
650 p1 = itoa(p1, cfg->data_bits);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
651 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
652 p1 = itoa(p1, cfg->stop_bits);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
653 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
654 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
655 *p1++ = ':';
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
656 p1 = itoa(p1, cfg->flags);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
657 *p1++ = '!';
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
658 *p1 = 0; // note: we may append to this later
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
659
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
660 // Tell user what we're up to.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
661 CYG_TEST_INFO(&cmd_buffer[1]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
662
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
663 // 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
664 len = sizeof(old_cfg);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
665 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
666 &old_cfg, &len);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
667 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
668 &new_cfg, &len);
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 22
diff changeset
669
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
670 if (res != ENOERR) {
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_GET_CFG,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
672 "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
673 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
674
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
675 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
676 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
677 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
678 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
679 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
680
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
681 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
682 &new_cfg, &len);
20
5f5102441818 Merge from eCos master repository on 1999-07-02-23:17:07-BST
jlarmour
parents: 16
diff changeset
683 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
684
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
685 // 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
686 // safe to return now.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
687 if (ENOERR != res) {
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
688 // 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
689 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
690 p1 = strcpy(p1, txt_tskipped);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
691 *p1 = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
692 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
693 return res;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
694 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
695
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
696 // 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
697 // with the host.
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
698 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
699 &old_cfg, &len);
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
700 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
701
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
702 if (res != ENOERR) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
703 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
704 "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
705 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
706
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
707 // Send command to host and read host's reply.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
708 msglen = strlen(&cmd_buffer[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
709 Tcyg_io_write(handle, &cmd_buffer[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
710 msglen = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
711 Tcyg_io_read(handle, &reply[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
712
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
713 // Did host accept configuration?
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
714 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
715 // 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
716 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
717 p1 = strcpy(p1, txt_hskipped);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
718 *p1 = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
719 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
720 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
721 reply[0], reply[1]);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
722
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
723 res = ENOSUPP;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
724 return res;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
725 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
726
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
727 // 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
728 // character.
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
729 // 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
730 // 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
731 // 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
732 // 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
733 len = sizeof(new_cfg);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
734 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
735 &new_cfg, &len);
20
5f5102441818 Merge from eCos master repository on 1999-07-02-23:17:07-BST
jlarmour
parents: 16
diff changeset
736 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
737 if (res != ENOERR) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
738 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
739 "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
740 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
741
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
742 {
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
743 int change_succeeded = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
744 int using_old_config = 0;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
745 char in_buf[1];
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
746 int len;
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
747 int saw_host_sync;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
748
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
749 for (;;) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
750 aborted = 0; // global abort flag
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
751
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
752 // 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
753 // 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
754 // 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
755 // changing the host software.
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
756 saw_host_sync = 0;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
757 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
758 while(!aborted) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
759 len = 1;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
760 in_buf[0] = 0;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
761 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
762 if (ENOERR != res && -EINTR != res) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
763 // 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
764 // 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
765 break;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
766 }
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
767 if ('R' == in_buf[0]) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
768 // 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
769 saw_host_sync = 0;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
770 } 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
771 // 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
772 char ok_msg[2] = "OK";
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
773 int ok_len = 2;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
774 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
775 saw_host_sync = 1;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
776 } 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
777 // Done - exchange completed.
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
778 change_succeeded = 1;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
779 break;
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
780 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
781 }
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
782 untimeout(r_stamp);
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
783
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
784 if (change_succeeded) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
785 // 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
786 if (using_old_config)
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
787 return -EIO;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
788 else
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
789 return ENOERR;
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
790 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
791
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
792 // 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
793 if (ENOERR != res && -EINTR != res) {
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
794 // 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
795 // a framing or parity error.
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
796 }
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
797
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
798 // 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
799 len = sizeof(old_cfg);
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
800 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
801 &old_cfg, &len);
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
802 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
803 if (res != ENOERR) {
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
804 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
805 "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
806 }
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
807 using_old_config = 1;
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
808 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
809
22
53104bbd5f99 Merge from eCos master repository on 1999-07-09-05:47:06-BST
jlarmour
parents: 20
diff changeset
810 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
811 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
812
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
813
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
814 //-----------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
815 // Host sends CRC in decimal ASCII, terminated with !
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
816 int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
817 read_host_crc(cyg_io_handle_t handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
818 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
819 int crc, len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
820 cyg_uint8 ch;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
821
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
822 crc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
823 while (1) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
824 len = 1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
825 Tcyg_io_read(handle, &ch, &len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
826 if ('!' == ch)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
827 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
828
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
829 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
830 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
831 "Illegal CRC format from host", ch);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
832 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
833
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
834 crc = crc*10 + (ch - '0');
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
835 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
836
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
837 return crc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
838 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
839
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
840 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
841 // Test binary data transmission.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
842 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
843 // "@BINARY:<byte size>:<mode>!"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
844 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
845 // <checksum>!<#size bytes data>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
846 // For echo modes, also:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
847 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
848 // <#size bytes data>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
849 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
850 // OK/ER
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
851 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
852 // DONE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
853 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
854 // The last DONE allows the host to eat bytes if target is sending too many.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
855 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
856 // Mode:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
857 // MODE_NO_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
858 // Just receive data and verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
859 // MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
860 // Receive data, verify CRC, resend data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
861 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
862 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
863 // Receive data, echo data, verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
864 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
865 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
866 // Note:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
867 // Using diag_printf while talking with the host may cause some funky
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
868 // errors (bytes from the host side being lost!?!?)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
869 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
870 // To Do:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
871 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
872 // The current implementation is simple and may not stress the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
873 // driver enough. Also, it's command packet format doesn't match
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
874 // 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
875
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
876 cyg_test_return_t
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
877 test_binary(cyg_io_handle_t handle, int size, cyg_mode_t mode)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
878 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
879 const char cmd[] = "@BINARY:";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
880 int msglen;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
881 cyg_uint32 xcrc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
882 int icrc, host_crc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
883 cyg_uint8 *p1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
884 cyg_int8 host_status = 'O'; // host is happy by default
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
885
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
886 // Verify that the test can be run with available ressources.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
887 if (MODE_EOP_ECHO == mode && size > IN_BUFFER_SIZE)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
888 return TEST_RETURN_NA;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
889
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
890 // Prepare and send the command.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
891 p1 = &cmd_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
892 p1 = strcpy(p1, &cmd[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
893 p1 = itoa(p1, size);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
894 *p1++ = ':';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
895 p1 = itoa(p1, mode);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
896 *p1++ = '!';
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
897 *p1++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
898
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
899 CYG_TEST_INFO(&cmd_buffer[1]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
900
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
901 msglen = strlen(&cmd_buffer[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
902 Tcyg_io_write(handle, &cmd_buffer[0], &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
903
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
904 // Get CRC back.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
905 host_crc = read_host_crc(handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
906
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
907 // Depending on mode, start reading data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
908 xcrc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
909 switch (mode) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
910 case MODE_NO_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
911 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
912 // Break transfers into chunks no larger than the buffer size.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
913 int tx_len, chunk_len, i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
914 while (size > 0) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
915 chunk_len = min(IN_BUFFER_SIZE, size);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
916 tx_len = chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
917 size -= chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
918
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
919 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
920
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
921 for (i = 0; i < tx_len; i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
922 ADD_CRC_BYTE(xcrc, in_buffer[i]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
923 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
924 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
925
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
926 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
927 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
928 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
929
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
930 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
931 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
932 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
933
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
934 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
935 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
936 case MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
937 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
938 // We have already checked that the in buffer is large enough.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
939 int i, tx_len, chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
940 chunk_len = tx_len = size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
941 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
942
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
943 for (i = 0; i < tx_len; i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
944 ADD_CRC_BYTE(xcrc, in_buffer[i]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
945 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents: 108
diff changeset
946
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
947 // Echo data back.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
948 chunk_len = size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
949 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
950
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
951 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
952 chunk_len = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
953 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
954 host_status = in_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
955
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
956 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
957 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
958 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
959
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
960 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
961 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
962 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
963 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
964 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
965 case MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
966 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
967 int chunk_len;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
968 int block_size = 64;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
969
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
970 // This is a simple implementation (maybe too simple).
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
971 // Host sends 4 packets with the same size (64 bytes atm).
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
972 // Target echoes in this way:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
973 // packet1 -> packet1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
974 // packet2 -> packet2, packet2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
975 // packet3 -> packet3
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
976 // packet4 -> /dev/null
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
977 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
978 // The reads/writes are interleaved in a way that should ensure
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
979 // the target out buffer to be full before the target starts to read
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
980 // packet3. That is, the target should be both receiving (packet3)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
981 // and sending (packet2) at the same time.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
982
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
983 while (size--) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
984 // block_size -> block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
985 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
986 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
987 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
988 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
989
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
990 // block_size -> 2 x block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
991 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
992 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
993 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
994 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
995 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
996 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
997
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
998 // block_size -> block_size
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
999 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1000 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1001 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1002 Tcyg_io_write(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1003
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1004 // block_size -> 0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1005 chunk_len = block_size;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1006 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1007 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1008
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1009 // Kill the CRC. Leave packet verification to the host for now.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1010 xcrc = host_crc = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1011
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1012 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1013 chunk_len = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1014 Tcyg_io_read(handle, &in_buffer[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1015 host_status = in_buffer[0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1016
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1017 // Reply that we have completed the test.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1018 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1019 const char msg_done[] = "DONE";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1020
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1021 chunk_len = strlen(&msg_done[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1022 Tcyg_io_write(handle, &msg_done[0], &chunk_len);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1023 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1024 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1025 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1026 default:
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1027 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
1028 "Unknown mode", mode);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1029 break;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1030 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1031
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1032
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1033 // Verify that the CRC matches the one from the host.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1034 FIX_CRC(xcrc, icrc);
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1035 if (host_crc != icrc) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1036 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
1037 "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
1038 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1039
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1040 // 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
1041 if ('O' != host_status) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1042 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
1043 "Output CRC failed");
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1044 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1045
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1046 CYG_TEST_PASS("Binary test completed");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1047 return TEST_RETURN_OK;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1048 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1049
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1050 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1051 // Test transformations on text transmissions
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1052 // Format out:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1053 // "@TEXT:<mode>!<4 bytes binary checksum><C string>"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1054 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1055 // "<C string>"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1056 // OK/ER
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1057 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1058 // Mode:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1059 // MODE_EOP_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1060 // Receive data, verify CRC, resend data.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1061 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1062 // MODE_DUPLEX_ECHO:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1063 // Receive data, echo data, verify CRC.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1064 // Expect OK/ER reply from host when done.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1065 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1066 cyg_test_return_t
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1067 test_text(cyg_io_handle_t handle, cyg_mode_t mode, const char* s_base,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1068 const char* s_out, const char* s_in)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1069 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1070 return TEST_RETURN_NA;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1071 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1072
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1073 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1074 // Send PING to host, verifying the filter's presence.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1075 // Format out:
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1076 // "@PING:<crash id>!"
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1077 // Format in:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1078 // "OK"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1079 // or
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1080 // No response if directly connected to GDB.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1081 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1082 // This call only returns if the ser_filter is listening. Otherwise it
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1083 // sends N/A and hangs.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1084 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1085 test_ping(cyg_io_handle_t handle)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1086 {
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 32
diff changeset
1087 char msg[] = "@PING:" TEST_CRASH_ID "!";
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1088 char msg2[] = "\n";
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1089 int msglen = strlen(msg);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1090 int res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1091
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1092 msglen = strlen(msg);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1093 Tcyg_io_write(handle, msg, &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1094
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1095 // Now read host side's status
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1096 msglen = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1097 Tcyg_io_read_timeout(handle, &in_buffer[0], &msglen, 100, &res);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1098 if (ENOERR == res && 'O' == in_buffer[0] && 'K' == in_buffer[1])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1099 return;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1100
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1101 msglen = strlen(msg2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1102 Tcyg_io_write(handle, msg2, &msglen);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1103
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1104 CYG_TEST_NA("No host side testing harness detected.");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1105 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1106
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1107
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1108 //---------------------------------------------------------------------------
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1109 // 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
1110 // Format out:
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1111 // "@OPT:option1,value1:...:optionN,valueN!"
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1112 // Format in:
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1113 // "OK"
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1114 //
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1115 // 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
1116 // filter will be silently ignored.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1117 void
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1118 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
1119 {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1120 const char cmd[] = "@OPT:";
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1121 int msglen;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1122 cyg_uint8 *p1;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1123
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1124 // Prepare and send the command.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1125 p1 = &cmd_buffer[0];
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1126 p1 = strcpy(p1, &cmd[0]);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1127 while(count--) {
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1128 p1 = itoa(p1, *options++); // option
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1129 *p1++ = ':';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1130 p1 = itoa(p1, *options++); // value
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1131 *p1++ = ':';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1132 }
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1133 *(p1-1) = '!';
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1134 *p1++ = 0;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1135
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1136 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
1137
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1138 msglen = strlen(&cmd_buffer[0]);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1139 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
1140
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1141 // 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
1142 msglen = 2;
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1143 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
1144 }
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1145
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 6
diff changeset
1146
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1147 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1148 // Some helper functions to get a test started.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1149 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1150 test_open_ser( cyg_io_handle_t* handle )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1151 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1152 #ifndef SER_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1153 Cyg_ErrNo res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1154
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1155 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1156 CYG_TEST_NA("Cannot run from simulator");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1157
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1158 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1159 # if defined(SER_OVERRIDE_INT_1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1160 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1161 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1162 # if defined(SER_OVERRIDE_INT_2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1163 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1164 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1165 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1166
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1167 res = cyg_io_lookup(TEST_SER_DEV, handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1168 if (res != ENOERR) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1169 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_SER_DEV);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1170 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1171 #else
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
1172 CYG_TEST_NA(NA_MSG);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1173 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1174 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1175
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1176 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1177 test_open_tty( cyg_io_handle_t* handle )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1178 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1179 #ifndef TTY_NOP_TEST
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1180 Cyg_ErrNo res;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1181
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1182 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1183 CYG_TEST_NA("Cannot run from simulator");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1184
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1185 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1186 # if defined(SER_OVERRIDE_INT_1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1187 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1188 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1189 # if defined(SER_OVERRIDE_INT_2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1190 HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1191 # endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1192 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1193
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1194 res = cyg_io_lookup(TEST_TTY_DEV, handle);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1195 if (res != ENOERR) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1196 CYG_TEST_FAIL_FINISH("Can't lookup " TEST_TTY_DEV);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1197 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1198 #else
4
1d7f19c9e4d1 Merge from eCos master repository on 1999-05-11-21:11:10-BST
jlarmour
parents: 2
diff changeset
1199 CYG_TEST_NA(NA_MSG);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1200 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1201 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1202
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1203 //---------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1204 // end of ser_test_protocol.inl