Changes in uspace/app/tester/hw/serial/serial1.c [c4c6025:74017ce] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/tester/hw/serial/serial1.c
rc4c6025 r74017ce 35 35 */ 36 36 37 #include < inttypes.h>37 #include <async.h> 38 38 #include <errno.h> 39 #include <io/chardev.h> 40 #include <io/serial.h> 41 #include <ipc/services.h> 42 #include <loc.h> 39 43 #include <stdlib.h> 40 44 #include <stdio.h> 41 45 #include <stddef.h> 42 #include < async.h>46 #include <str.h> 43 47 #include <thread.h> 44 #include <ipc/services.h>45 #include <loc.h>46 #include <char_dev_iface.h>47 #include <str.h>48 #include <io/serial.h>49 48 #include "../../tester.h" 50 49 … … 57 56 size_t cnt; 58 57 serial_t *serial; 58 chardev_t *chardev; 59 int rc; 60 size_t nread; 61 size_t nwritten; 59 62 60 63 if (test_argc < 1) … … 83 86 return "Failed connecting to serial device"; 84 87 88 res = chardev_open(sess, &chardev); 89 if (res != EOK) { 90 async_hangup(sess); 91 return "Failed opening serial port"; 92 } 93 85 94 res = serial_open(sess, &serial); 86 if (res != EOK) 95 if (res != EOK) { 96 chardev_close(chardev); 97 async_hangup(sess); 87 98 return "Failed opening serial port"; 99 } 88 100 89 101 char *buf = (char *) malloc(cnt + 1); 90 102 if (buf == NULL) { 103 chardev_close(chardev); 91 104 serial_close(serial); 92 105 async_hangup(sess); … … 103 116 if (res != EOK) { 104 117 free(buf); 118 chardev_close(chardev); 105 119 serial_close(serial); 106 120 async_hangup(sess); … … 111 125 if (EOK != res) { 112 126 free(buf); 127 chardev_close(chardev); 113 128 serial_close(serial); 114 129 async_hangup(sess); … … 121 136 size_t total = 0; 122 137 while (total < cnt) { 123 ssize_t read = char_dev_read(sess, buf, cnt - total);124 125 if (r ead < 0) {138 139 rc = chardev_read(chardev, buf, cnt - total, &nread); 140 if (rc != EOK) { 126 141 (void) serial_set_comm_props(serial, old_baud, 127 142 old_par, old_word_size, old_stop); 128 143 129 144 free(buf); 145 chardev_close(chardev); 130 146 serial_close(serial); 131 147 async_hangup(sess); … … 133 149 } 134 150 135 if ( (size_t)read > cnt - total) {151 if (nread > cnt - total) { 136 152 (void) serial_set_comm_props(serial, old_baud, 137 153 old_par, old_word_size, old_stop); 138 154 139 155 free(buf); 156 chardev_close(chardev); 140 157 serial_close(serial); 141 158 async_hangup(sess); … … 143 160 } 144 161 145 TPRINTF("Read %zd bytes\n", read);146 147 if ( read == 0)162 TPRINTF("Read %zd bytes\n", nread); 163 164 if (nread == 0) 148 165 thread_usleep(DEFAULT_SLEEP); 149 166 else { 150 buf[ read] = 0;167 buf[nread] = 0; 151 168 152 169 /* … … 154 171 * direction of data transfer. 155 172 */ 156 ssize_t written = char_dev_write(sess, buf, read); 157 158 if (written < 0) { 173 rc = chardev_write(chardev, buf, nread, &nwritten); 174 if (rc != EOK) { 159 175 (void) serial_set_comm_props(serial, old_baud, 160 176 old_par, old_word_size, old_stop); 161 177 162 178 free(buf); 179 chardev_close(chardev); 163 180 serial_close(serial); 164 181 async_hangup(sess); … … 166 183 } 167 184 168 if ( written !=read) {185 if (nwritten != nread) { 169 186 (void) serial_set_comm_props(serial, old_baud, 170 187 old_par, old_word_size, old_stop); 171 188 172 189 free(buf); 190 chardev_close(chardev); 173 191 serial_close(serial); 174 192 async_hangup(sess); … … 176 194 } 177 195 178 TPRINTF("Written %zd bytes\n", written);179 } 180 181 total += read;196 TPRINTF("Written %zd bytes\n", nwritten); 197 } 198 199 total += nread; 182 200 } 183 201 … … 185 203 186 204 size_t eot_size = str_size(EOT); 187 ssize_t written = char_dev_write(sess, (void *) EOT, eot_size);205 rc = chardev_write(chardev, (void *) EOT, eot_size, &nwritten); 188 206 189 207 (void) serial_set_comm_props(serial, old_baud, old_par, old_word_size, … … 191 209 192 210 free(buf); 211 chardev_close(chardev); 193 212 serial_close(serial); 194 213 async_hangup(sess); 195 214 196 if ( written < 0)215 if (rc != EOK) 197 216 return "Failed to write EOT banner to serial device"; 198 217 199 if ( (size_t)written != eot_size)218 if (nwritten != eot_size) 200 219 return "Written less data than the size of the EOT banner " 201 220 "to serial device";
Note:
See TracChangeset
for help on using the changeset viewer.