|
0
|
1 //================================================================= |
|
|
2 // |
|
|
3 // tx39_serial_test.cxx |
|
|
4 // |
|
|
5 // Test that the device API for the tx39 device exists. |
|
|
6 // |
|
|
7 //================================================================= |
|
|
8 //####COPYRIGHTBEGIN#### |
|
|
9 // |
|
|
10 // ------------------------------------------- |
|
|
11 // The contents of this file are subject to the Cygnus eCos Public License |
|
|
12 // Version 1.0 (the "License"); you may not use this file except in |
|
|
13 // compliance with the License. You may obtain a copy of the License at |
|
|
14 // http://sourceware.cygnus.com/ecos |
|
|
15 // |
|
|
16 // Software distributed under the License is distributed on an "AS IS" |
|
|
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
|
18 // License for the specific language governing rights and limitations under |
|
|
19 // the License. |
|
|
20 // |
|
|
21 // The Original Code is eCos - Embedded Cygnus Operating System, released |
|
|
22 // October 31, 1998. |
|
|
23 // |
|
|
24 // The Initial Developer of the Original Code is Cygnus. Portions created |
|
|
25 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. |
|
|
26 // ------------------------------------------- |
|
|
27 // |
|
|
28 //####COPYRIGHTEND#### |
|
|
29 //================================================================= |
|
|
30 //#####DESCRIPTIONBEGIN#### |
|
|
31 // |
|
|
32 // Author(s): proven |
|
|
33 // Contributors: proven |
|
|
34 // Date: 1998-10-08 |
|
|
35 // Description: Tests basic serial functionality. |
|
|
36 //####DESCRIPTIONEND#### |
|
|
37 |
|
|
38 // #include <pkgconf/devs.h> |
|
|
39 #include <pkgconf/devices.h> // For now include all the devices |
|
|
40 |
|
|
41 #include <cyg/infra/testcase.h> // Generic test macros |
|
|
42 |
|
|
43 #ifdef CYG_DEVICE_SERIAL_RS232_TX39_NAME |
|
|
44 #define CYG_DEVICE_SERIAL_RS232_NAME CYG_DEVICE_SERIAL_RS232_TX39_NAME |
|
|
45 |
|
|
46 #define NTHREADS 1 |
|
|
47 #include <cyg/kernel/kernel.hxx> // All the kernel specific stuff |
|
|
48 #include <cyg/devs/common/testaux.hxx> |
|
|
49 |
|
|
50 // #define CYG_DEVICE_INTERNAL |
|
|
51 // #include <cyg/devs/serial/rs232/tx39/serial_tx39.hxx> |
|
|
52 // #include <cyg/devs/serial/rs232/common/tests/serial_.ht> |
|
|
53 |
|
|
54 char message1[] = "This is test message 1.\n"; |
|
|
55 char message2[] = "This is test message 2.\n"; |
|
|
56 |
|
|
57 /* Only call routines that do not require user input */ |
|
|
58 void entry0(CYG_ADDRWORD data) |
|
|
59 { |
|
|
60 Cyg_IORB iorb1, iorb2; |
|
|
61 cyg_int32 baud_rate, i; |
|
|
62 |
|
|
63 iorb1.callback = NULL; |
|
|
64 iorb1.buffer = message1; |
|
|
65 iorb1.buffer_length = sizeof(message1) - 1; |
|
|
66 CYG_DEVICE_SERIAL_RS232_NAME.io_write_asynchronous(&iorb1); |
|
|
67 |
|
|
68 iorb2.buffer = message2; |
|
|
69 iorb2.buffer_length = sizeof(message2) - 1; |
|
|
70 CYG_DEVICE_SERIAL_RS232_NAME.io_write_blocking(&iorb2); |
|
|
71 |
|
|
72 for (i = 0; i < 1000000; i++); // Delay to flush the tx buffer |
|
|
73 |
|
|
74 if ((baud_rate = CYG_DEVICE_SERIAL_RS232_NAME.get_baud_rate()) >= 0) { |
|
|
75 CYG_TEST_PASS_FAIL( |
|
|
76 (CYG_DEVICE_SERIAL_RS232_NAME.set_baud_rate(baud_rate) >= 0), |
|
|
77 "Setting baud rate to previous baud rate."); |
|
|
78 } else { |
|
|
79 CYG_TEST_FAIL("Could not get baud rate."); |
|
|
80 } |
|
|
81 |
|
|
82 CYG_TEST_PASS_EXIT("serial_test"); |
|
|
83 } |
|
|
84 |
|
|
85 /* Make calls to the rest of the API */ |
|
|
86 void entry_bogus(CYG_ADDRWORD data) |
|
|
87 { |
|
|
88 Cyg_IORB iorb; |
|
|
89 char buf[1024]; |
|
|
90 iorb.buffer = buf; |
|
|
91 iorb.buffer_length = sizeof(buf); |
|
|
92 |
|
|
93 // Set mode to interrupt |
|
|
94 CYG_DEVICE_SERIAL_RS232_NAME.set_kmode((cyg_uint32)1); |
|
|
95 // CYG_DEVICE_SERIAL_RS232_NAME.get_kmode(); // Doesn't exist yet |
|
|
96 |
|
|
97 // These could go in the entry0 routine |
|
|
98 CYG_DEVICE_SERIAL_RS232_NAME.get_line_mode(); |
|
|
99 CYG_DEVICE_SERIAL_RS232_NAME.set_line_mode(1); |
|
|
100 |
|
|
101 CYG_DEVICE_SERIAL_RS232_NAME.get_baud_rate(); |
|
|
102 CYG_DEVICE_SERIAL_RS232_NAME.set_baud_rate(1); |
|
|
103 |
|
|
104 CYG_DEVICE_SERIAL_RS232_NAME.set_read_mode(1); |
|
|
105 // CYG_DEVICE_SERIAL_RS232_NAME.get_read_mode(); // Doesn't exist yet |
|
|
106 // CYG_DEVICE_SERIAL_RS232_NAME.set_read_data(1, NULL, 0); |
|
|
107 CYG_DEVICE_SERIAL_RS232_NAME.io_read_asynchronous(&iorb); |
|
|
108 CYG_DEVICE_SERIAL_RS232_NAME.io_read_blocking(&iorb); |
|
|
109 // CYG_DEVICE_SERIAL_RS232_NAME.io_read_cancel(&iorb);// Doesn't exist yet |
|
|
110 |
|
|
111 CYG_DEVICE_SERIAL_RS232_NAME.set_write_mode(1); |
|
|
112 // CYG_DEVICE_SERIAL_RS232_NAME.get_write_mode(); // Doesn't exist yet |
|
|
113 CYG_DEVICE_SERIAL_RS232_NAME.io_write_asynchronous(&iorb); |
|
|
114 CYG_DEVICE_SERIAL_RS232_NAME.io_write_blocking(&iorb); |
|
|
115 // CYG_DEVICE_SERIAL_RS232_NAME.io_write_cancel(&iorb);// Doesn't exist yet |
|
|
116 } |
|
|
117 |
|
|
118 externC void |
|
|
119 cyg_start(void) |
|
|
120 { |
|
|
121 CYG_TEST_INIT(); |
|
|
122 |
|
|
123 new_thread(entry0, 0); |
|
|
124 |
|
|
125 Cyg_Scheduler::start(); |
|
|
126 |
|
|
127 CYG_TEST_FAIL_EXIT("Not reached"); |
|
|
128 |
|
|
129 entry_bogus(0); // To prevent selective linking from GC all the bogus calls. |
|
|
130 } |
|
|
131 |
|
|
132 #else // CYG_DEVICE_SERIAL_RS232_TX39_NAME |
|
|
133 |
|
|
134 externC void |
|
|
135 cyg_start(void) |
|
|
136 { |
|
|
137 CYG_TEST_INIT(); |
|
|
138 CYG_TEST_PASS_EXIT("N/A: required serial device not present"); |
|
|
139 } |
|
|
140 |
|
|
141 #endif // CYG_DEVICE_SERIAL_RS232_TX39_NAME |
|
|
142 |
|
|
143 // EOF tx39_serial_tests.cxx |