ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
jacobjohnson
Date:
Mon Feb 27 17:45:05 2017 +0000
Revision:
1:f30bdcd2b33b
Parent:
0:098463de4c5d
changed the inputscale from 1 to 7 in analogin_api.c.  This will need to be changed later, and accessed from the main level, but for now this allows the  adc to read a value from 0 to 3.7V, instead of just up to 1V.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 /* mbed USBHost Library
group-onsemi 0:098463de4c5d 2 * Copyright (c) 2006-2013 ARM Limited
group-onsemi 0:098463de4c5d 3 *
group-onsemi 0:098463de4c5d 4 * Licensed under the Apache License, Version 2.0 (the "License");
group-onsemi 0:098463de4c5d 5 * you may not use this file except in compliance with the License.
group-onsemi 0:098463de4c5d 6 * You may obtain a copy of the License at
group-onsemi 0:098463de4c5d 7 *
group-onsemi 0:098463de4c5d 8 * http://www.apache.org/licenses/LICENSE-2.0
group-onsemi 0:098463de4c5d 9 *
group-onsemi 0:098463de4c5d 10 * Unless required by applicable law or agreed to in writing, software
group-onsemi 0:098463de4c5d 11 * distributed under the License is distributed on an "AS IS" BASIS,
group-onsemi 0:098463de4c5d 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
group-onsemi 0:098463de4c5d 13 * See the License for the specific language governing permissions and
group-onsemi 0:098463de4c5d 14 * limitations under the License.
group-onsemi 0:098463de4c5d 15 */
group-onsemi 0:098463de4c5d 16
group-onsemi 0:098463de4c5d 17 #include "USBHostSerial.h"
group-onsemi 0:098463de4c5d 18
group-onsemi 0:098463de4c5d 19 #if USBHOST_SERIAL
group-onsemi 0:098463de4c5d 20
group-onsemi 0:098463de4c5d 21 #include "dbg.h"
group-onsemi 0:098463de4c5d 22
group-onsemi 0:098463de4c5d 23 #define CHECK_INTERFACE(cls,subcls,proto) \
group-onsemi 0:098463de4c5d 24 (((cls == 0xFF) && (subcls == 0xFF) && (proto == 0xFF)) /* QUALCOM CDC */ || \
group-onsemi 0:098463de4c5d 25 ((cls == SERIAL_CLASS) && (subcls == 0x00) && (proto == 0x00)) /* STANDARD CDC */ )
group-onsemi 0:098463de4c5d 26
group-onsemi 0:098463de4c5d 27 #if (USBHOST_SERIAL <= 1)
group-onsemi 0:098463de4c5d 28
group-onsemi 0:098463de4c5d 29 USBHostSerial::USBHostSerial()
group-onsemi 0:098463de4c5d 30 {
group-onsemi 0:098463de4c5d 31 host = USBHost::getHostInst();
group-onsemi 0:098463de4c5d 32 ports_found = 0;
group-onsemi 0:098463de4c5d 33 dev_connected = false;
group-onsemi 0:098463de4c5d 34 }
group-onsemi 0:098463de4c5d 35
group-onsemi 0:098463de4c5d 36 bool USBHostSerial::connected()
group-onsemi 0:098463de4c5d 37 {
group-onsemi 0:098463de4c5d 38 return dev_connected;
group-onsemi 0:098463de4c5d 39 }
group-onsemi 0:098463de4c5d 40
group-onsemi 0:098463de4c5d 41 void USBHostSerial::disconnect(void)
group-onsemi 0:098463de4c5d 42 {
group-onsemi 0:098463de4c5d 43 ports_found = 0;
group-onsemi 0:098463de4c5d 44 dev = NULL;
group-onsemi 0:098463de4c5d 45 }
group-onsemi 0:098463de4c5d 46
group-onsemi 0:098463de4c5d 47 bool USBHostSerial::connect() {
group-onsemi 0:098463de4c5d 48
group-onsemi 0:098463de4c5d 49 if (dev)
group-onsemi 0:098463de4c5d 50 {
group-onsemi 0:098463de4c5d 51 for (uint8_t i = 0; i < MAX_DEVICE_CONNECTED; i++)
group-onsemi 0:098463de4c5d 52 {
group-onsemi 0:098463de4c5d 53 USBDeviceConnected* d = host->getDevice(i);
group-onsemi 0:098463de4c5d 54 if (dev == d)
group-onsemi 0:098463de4c5d 55 return true;
group-onsemi 0:098463de4c5d 56 }
group-onsemi 0:098463de4c5d 57 disconnect();
group-onsemi 0:098463de4c5d 58 }
group-onsemi 0:098463de4c5d 59 for (uint8_t i = 0; i < MAX_DEVICE_CONNECTED; i++)
group-onsemi 0:098463de4c5d 60 {
group-onsemi 0:098463de4c5d 61 USBDeviceConnected* d = host->getDevice(i);
group-onsemi 0:098463de4c5d 62 if (d != NULL) {
group-onsemi 0:098463de4c5d 63
group-onsemi 0:098463de4c5d 64 USB_DBG("Trying to connect serial device \r\n");
group-onsemi 0:098463de4c5d 65 if(host->enumerate(d, this))
group-onsemi 0:098463de4c5d 66 break;
group-onsemi 0:098463de4c5d 67
group-onsemi 0:098463de4c5d 68 USBEndpoint* bulk_in = d->getEndpoint(port_intf, BULK_ENDPOINT, IN);
group-onsemi 0:098463de4c5d 69 USBEndpoint* bulk_out = d->getEndpoint(port_intf, BULK_ENDPOINT, OUT);
group-onsemi 0:098463de4c5d 70 if (bulk_in && bulk_out)
group-onsemi 0:098463de4c5d 71 {
group-onsemi 0:098463de4c5d 72 USBHostSerialPort::connect(host,d,port_intf,bulk_in, bulk_out);
group-onsemi 0:098463de4c5d 73 dev = d;
group-onsemi 0:098463de4c5d 74 dev_connected = true;
group-onsemi 0:098463de4c5d 75 }
group-onsemi 0:098463de4c5d 76 }
group-onsemi 0:098463de4c5d 77 }
group-onsemi 0:098463de4c5d 78 return dev != NULL;
group-onsemi 0:098463de4c5d 79 }
group-onsemi 0:098463de4c5d 80
group-onsemi 0:098463de4c5d 81 /*virtual*/ void USBHostSerial::setVidPid(uint16_t vid, uint16_t pid)
group-onsemi 0:098463de4c5d 82 {
group-onsemi 0:098463de4c5d 83 // we don't check VID/PID for MSD driver
group-onsemi 0:098463de4c5d 84 }
group-onsemi 0:098463de4c5d 85
group-onsemi 0:098463de4c5d 86 /*virtual*/ bool USBHostSerial::parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol) //Must return true if the interface should be parsed
group-onsemi 0:098463de4c5d 87 {
group-onsemi 0:098463de4c5d 88 if (!ports_found &&
group-onsemi 0:098463de4c5d 89 CHECK_INTERFACE(intf_class, intf_subclass, intf_protocol)) {
group-onsemi 0:098463de4c5d 90 port_intf = intf_nb;
group-onsemi 0:098463de4c5d 91 ports_found = true;
group-onsemi 0:098463de4c5d 92 return true;
group-onsemi 0:098463de4c5d 93 }
group-onsemi 0:098463de4c5d 94 return false;
group-onsemi 0:098463de4c5d 95 }
group-onsemi 0:098463de4c5d 96
group-onsemi 0:098463de4c5d 97 /*virtual*/ bool USBHostSerial::useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir) //Must return true if the endpoint will be used
group-onsemi 0:098463de4c5d 98 {
group-onsemi 0:098463de4c5d 99 if (ports_found && (intf_nb == port_intf)) {
group-onsemi 0:098463de4c5d 100 if (type == BULK_ENDPOINT)
group-onsemi 0:098463de4c5d 101 return true;
group-onsemi 0:098463de4c5d 102 }
group-onsemi 0:098463de4c5d 103 return false;
group-onsemi 0:098463de4c5d 104 }
group-onsemi 0:098463de4c5d 105
group-onsemi 0:098463de4c5d 106 #else // (USBHOST_SERIAL > 1)
group-onsemi 0:098463de4c5d 107
group-onsemi 0:098463de4c5d 108 //------------------------------------------------------------------------------
group-onsemi 0:098463de4c5d 109
group-onsemi 0:098463de4c5d 110 USBHostMultiSerial::USBHostMultiSerial()
group-onsemi 0:098463de4c5d 111 {
group-onsemi 0:098463de4c5d 112 host = USBHost::getHostInst();
group-onsemi 0:098463de4c5d 113 dev = NULL;
group-onsemi 0:098463de4c5d 114 memset(ports, NULL, sizeof(ports));
group-onsemi 0:098463de4c5d 115 ports_found = 0;
group-onsemi 0:098463de4c5d 116 dev_connected = false;
group-onsemi 0:098463de4c5d 117 }
group-onsemi 0:098463de4c5d 118
group-onsemi 0:098463de4c5d 119 USBHostMultiSerial::~USBHostMultiSerial()
group-onsemi 0:098463de4c5d 120 {
group-onsemi 0:098463de4c5d 121 disconnect();
group-onsemi 0:098463de4c5d 122 }
group-onsemi 0:098463de4c5d 123
group-onsemi 0:098463de4c5d 124 bool USBHostMultiSerial::connected()
group-onsemi 0:098463de4c5d 125 {
group-onsemi 0:098463de4c5d 126 return dev_connected;
group-onsemi 0:098463de4c5d 127 }
group-onsemi 0:098463de4c5d 128
group-onsemi 0:098463de4c5d 129 void USBHostMultiSerial::disconnect(void)
group-onsemi 0:098463de4c5d 130 {
group-onsemi 0:098463de4c5d 131 for (int port = 0; port < USBHOST_SERIAL; port ++)
group-onsemi 0:098463de4c5d 132 {
group-onsemi 0:098463de4c5d 133 if (ports[port])
group-onsemi 0:098463de4c5d 134 {
group-onsemi 0:098463de4c5d 135 delete ports[port];
group-onsemi 0:098463de4c5d 136 ports[port] = NULL;
group-onsemi 0:098463de4c5d 137 }
group-onsemi 0:098463de4c5d 138 }
group-onsemi 0:098463de4c5d 139 ports_found = 0;
group-onsemi 0:098463de4c5d 140 dev = NULL;
group-onsemi 0:098463de4c5d 141 }
group-onsemi 0:098463de4c5d 142
group-onsemi 0:098463de4c5d 143 bool USBHostMultiSerial::connect() {
group-onsemi 0:098463de4c5d 144
group-onsemi 0:098463de4c5d 145 if (dev)
group-onsemi 0:098463de4c5d 146 {
group-onsemi 0:098463de4c5d 147 for (uint8_t i = 0; i < MAX_DEVICE_CONNECTED; i++)
group-onsemi 0:098463de4c5d 148 {
group-onsemi 0:098463de4c5d 149 USBDeviceConnected* d = host->getDevice(i);
group-onsemi 0:098463de4c5d 150 if (dev == d)
group-onsemi 0:098463de4c5d 151 return true;
group-onsemi 0:098463de4c5d 152 }
group-onsemi 0:098463de4c5d 153 disconnect();
group-onsemi 0:098463de4c5d 154 }
group-onsemi 0:098463de4c5d 155 for (uint8_t i = 0; i < MAX_DEVICE_CONNECTED; i++)
group-onsemi 0:098463de4c5d 156 {
group-onsemi 0:098463de4c5d 157 USBDeviceConnected* d = host->getDevice(i);
group-onsemi 0:098463de4c5d 158 if (d != NULL) {
group-onsemi 0:098463de4c5d 159
group-onsemi 0:098463de4c5d 160 USB_DBG("Trying to connect serial device \r\n");
group-onsemi 0:098463de4c5d 161 if(host->enumerate(d, this))
group-onsemi 0:098463de4c5d 162 break;
group-onsemi 0:098463de4c5d 163
group-onsemi 0:098463de4c5d 164 for (int port = 0; port < ports_found; port ++)
group-onsemi 0:098463de4c5d 165 {
group-onsemi 0:098463de4c5d 166 USBEndpoint* bulk_in = d->getEndpoint(port_intf[port], BULK_ENDPOINT, IN);
group-onsemi 0:098463de4c5d 167 USBEndpoint* bulk_out = d->getEndpoint(port_intf[port], BULK_ENDPOINT, OUT);
group-onsemi 0:098463de4c5d 168 if (bulk_in && bulk_out)
group-onsemi 0:098463de4c5d 169 {
group-onsemi 0:098463de4c5d 170 ports[port] = new USBHostSerialPort();
group-onsemi 0:098463de4c5d 171 if (ports[port])
group-onsemi 0:098463de4c5d 172 {
group-onsemi 0:098463de4c5d 173 ports[port]->connect(host,d,port_intf[port],bulk_in, bulk_out);
group-onsemi 0:098463de4c5d 174 dev = d;
group-onsemi 0:098463de4c5d 175 dev_connected = true;
group-onsemi 0:098463de4c5d 176 }
group-onsemi 0:098463de4c5d 177 }
group-onsemi 0:098463de4c5d 178 }
group-onsemi 0:098463de4c5d 179 }
group-onsemi 0:098463de4c5d 180 }
group-onsemi 0:098463de4c5d 181 return dev != NULL;
group-onsemi 0:098463de4c5d 182 }
group-onsemi 0:098463de4c5d 183
group-onsemi 0:098463de4c5d 184 /*virtual*/ void USBHostMultiSerial::setVidPid(uint16_t vid, uint16_t pid)
group-onsemi 0:098463de4c5d 185 {
group-onsemi 0:098463de4c5d 186 // we don't check VID/PID for MSD driver
group-onsemi 0:098463de4c5d 187 }
group-onsemi 0:098463de4c5d 188
group-onsemi 0:098463de4c5d 189 /*virtual*/ bool USBHostMultiSerial::parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol) //Must return true if the interface should be parsed
group-onsemi 0:098463de4c5d 190 {
group-onsemi 0:098463de4c5d 191 if ((ports_found < USBHOST_SERIAL) &&
group-onsemi 0:098463de4c5d 192 CHECK_INTERFACE(intf_class, intf_subclass, intf_protocol)) {
group-onsemi 0:098463de4c5d 193 port_intf[ports_found++] = intf_nb;
group-onsemi 0:098463de4c5d 194 return true;
group-onsemi 0:098463de4c5d 195 }
group-onsemi 0:098463de4c5d 196 return false;
group-onsemi 0:098463de4c5d 197 }
group-onsemi 0:098463de4c5d 198
group-onsemi 0:098463de4c5d 199 /*virtual*/ bool USBHostMultiSerial::useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir) //Must return true if the endpoint will be used
group-onsemi 0:098463de4c5d 200 {
group-onsemi 0:098463de4c5d 201 if ((ports_found > 0) && (intf_nb == port_intf[ports_found-1])) {
group-onsemi 0:098463de4c5d 202 if (type == BULK_ENDPOINT)
group-onsemi 0:098463de4c5d 203 return true;
group-onsemi 0:098463de4c5d 204 }
group-onsemi 0:098463de4c5d 205 return false;
group-onsemi 0:098463de4c5d 206 }
group-onsemi 0:098463de4c5d 207
group-onsemi 0:098463de4c5d 208 #endif
group-onsemi 0:098463de4c5d 209
group-onsemi 0:098463de4c5d 210 //------------------------------------------------------------------------------
group-onsemi 0:098463de4c5d 211
group-onsemi 0:098463de4c5d 212 #define SET_LINE_CODING 0x20
group-onsemi 0:098463de4c5d 213
group-onsemi 0:098463de4c5d 214 USBHostSerialPort::USBHostSerialPort(): circ_buf()
group-onsemi 0:098463de4c5d 215 {
group-onsemi 0:098463de4c5d 216 init();
group-onsemi 0:098463de4c5d 217 }
group-onsemi 0:098463de4c5d 218
group-onsemi 0:098463de4c5d 219 void USBHostSerialPort::init(void)
group-onsemi 0:098463de4c5d 220 {
group-onsemi 0:098463de4c5d 221 host = NULL;
group-onsemi 0:098463de4c5d 222 dev = NULL;
group-onsemi 0:098463de4c5d 223 serial_intf = NULL;
group-onsemi 0:098463de4c5d 224 size_bulk_in = 0;
group-onsemi 0:098463de4c5d 225 size_bulk_out = 0;
group-onsemi 0:098463de4c5d 226 bulk_in = NULL;
group-onsemi 0:098463de4c5d 227 bulk_out = NULL;
group-onsemi 0:098463de4c5d 228 line_coding.baudrate = 9600;
group-onsemi 0:098463de4c5d 229 line_coding.data_bits = 8;
group-onsemi 0:098463de4c5d 230 line_coding.parity = None;
group-onsemi 0:098463de4c5d 231 line_coding.stop_bits = 1;
group-onsemi 0:098463de4c5d 232 circ_buf.flush();
group-onsemi 0:098463de4c5d 233 }
group-onsemi 0:098463de4c5d 234
group-onsemi 0:098463de4c5d 235 void USBHostSerialPort::connect(USBHost* _host, USBDeviceConnected * _dev,
group-onsemi 0:098463de4c5d 236 uint8_t _serial_intf, USBEndpoint* _bulk_in, USBEndpoint* _bulk_out)
group-onsemi 0:098463de4c5d 237 {
group-onsemi 0:098463de4c5d 238 host = _host;
group-onsemi 0:098463de4c5d 239 dev = _dev;
group-onsemi 0:098463de4c5d 240 serial_intf = _serial_intf;
group-onsemi 0:098463de4c5d 241 bulk_in = _bulk_in;
group-onsemi 0:098463de4c5d 242 bulk_out = _bulk_out;
group-onsemi 0:098463de4c5d 243
group-onsemi 0:098463de4c5d 244 USB_INFO("New Serial device: VID:%04x PID:%04x [dev: %p - intf: %d]", dev->getVid(), dev->getPid(), dev, serial_intf);
group-onsemi 0:098463de4c5d 245 dev->setName("Serial", serial_intf);
group-onsemi 0:098463de4c5d 246 host->registerDriver(dev, serial_intf, this, &USBHostSerialPort::init);
group-onsemi 0:098463de4c5d 247 baud(9600);
group-onsemi 0:098463de4c5d 248 size_bulk_in = bulk_in->getSize();
group-onsemi 0:098463de4c5d 249 size_bulk_out = bulk_out->getSize();
group-onsemi 0:098463de4c5d 250 bulk_in->attach(this, &USBHostSerialPort::rxHandler);
group-onsemi 0:098463de4c5d 251 bulk_out->attach(this, &USBHostSerialPort::txHandler);
group-onsemi 0:098463de4c5d 252 host->bulkRead(dev, bulk_in, buf, size_bulk_in, false);
group-onsemi 0:098463de4c5d 253 }
group-onsemi 0:098463de4c5d 254
group-onsemi 0:098463de4c5d 255 void USBHostSerialPort::rxHandler() {
group-onsemi 0:098463de4c5d 256 if (bulk_in) {
group-onsemi 0:098463de4c5d 257 int len = bulk_in->getLengthTransferred();
group-onsemi 0:098463de4c5d 258 if (bulk_in->getState() == USB_TYPE_IDLE) {
group-onsemi 0:098463de4c5d 259 for (int i = 0; i < len; i++) {
group-onsemi 0:098463de4c5d 260 circ_buf.queue(buf[i]);
group-onsemi 0:098463de4c5d 261 }
group-onsemi 0:098463de4c5d 262 rx.call();
group-onsemi 0:098463de4c5d 263 host->bulkRead(dev, bulk_in, buf, size_bulk_in, false);
group-onsemi 0:098463de4c5d 264 }
group-onsemi 0:098463de4c5d 265 }
group-onsemi 0:098463de4c5d 266 }
group-onsemi 0:098463de4c5d 267
group-onsemi 0:098463de4c5d 268 void USBHostSerialPort::txHandler() {
group-onsemi 0:098463de4c5d 269 if (bulk_out) {
group-onsemi 0:098463de4c5d 270 if (bulk_out->getState() == USB_TYPE_IDLE) {
group-onsemi 0:098463de4c5d 271 tx.call();
group-onsemi 0:098463de4c5d 272 }
group-onsemi 0:098463de4c5d 273 }
group-onsemi 0:098463de4c5d 274 }
group-onsemi 0:098463de4c5d 275
group-onsemi 0:098463de4c5d 276 int USBHostSerialPort::_putc(int c) {
group-onsemi 0:098463de4c5d 277 if (bulk_out) {
group-onsemi 0:098463de4c5d 278 if (host->bulkWrite(dev, bulk_out, (uint8_t *)&c, 1) == USB_TYPE_OK) {
group-onsemi 0:098463de4c5d 279 return 1;
group-onsemi 0:098463de4c5d 280 }
group-onsemi 0:098463de4c5d 281 }
group-onsemi 0:098463de4c5d 282 return -1;
group-onsemi 0:098463de4c5d 283 }
group-onsemi 0:098463de4c5d 284
group-onsemi 0:098463de4c5d 285 void USBHostSerialPort::baud(int baudrate) {
group-onsemi 0:098463de4c5d 286 line_coding.baudrate = baudrate;
group-onsemi 0:098463de4c5d 287 format(line_coding.data_bits, (Parity)line_coding.parity, line_coding.stop_bits);
group-onsemi 0:098463de4c5d 288 }
group-onsemi 0:098463de4c5d 289
group-onsemi 0:098463de4c5d 290 void USBHostSerialPort::format(int bits, Parity parity, int stop_bits) {
group-onsemi 0:098463de4c5d 291 line_coding.data_bits = bits;
group-onsemi 0:098463de4c5d 292 line_coding.parity = parity;
group-onsemi 0:098463de4c5d 293 line_coding.stop_bits = (stop_bits == 1) ? 0 : 2;
group-onsemi 0:098463de4c5d 294
group-onsemi 0:098463de4c5d 295 // set line coding
group-onsemi 0:098463de4c5d 296 host->controlWrite( dev,
group-onsemi 0:098463de4c5d 297 USB_RECIPIENT_INTERFACE | USB_HOST_TO_DEVICE | USB_REQUEST_TYPE_CLASS,
group-onsemi 0:098463de4c5d 298 SET_LINE_CODING,
group-onsemi 0:098463de4c5d 299 0, serial_intf, (uint8_t *)&line_coding, 7);
group-onsemi 0:098463de4c5d 300 }
group-onsemi 0:098463de4c5d 301
group-onsemi 0:098463de4c5d 302 int USBHostSerialPort::_getc() {
group-onsemi 0:098463de4c5d 303 uint8_t c = 0;
group-onsemi 0:098463de4c5d 304 if (bulk_in == NULL) {
group-onsemi 0:098463de4c5d 305 init();
group-onsemi 0:098463de4c5d 306 return -1;
group-onsemi 0:098463de4c5d 307 }
group-onsemi 0:098463de4c5d 308 while (circ_buf.isEmpty());
group-onsemi 0:098463de4c5d 309 circ_buf.dequeue(&c);
group-onsemi 0:098463de4c5d 310 return c;
group-onsemi 0:098463de4c5d 311 }
group-onsemi 0:098463de4c5d 312
group-onsemi 0:098463de4c5d 313 int USBHostSerialPort::writeBuf(const char* b, int s)
group-onsemi 0:098463de4c5d 314 {
group-onsemi 0:098463de4c5d 315 int c = 0;
group-onsemi 0:098463de4c5d 316 if (bulk_out)
group-onsemi 0:098463de4c5d 317 {
group-onsemi 0:098463de4c5d 318 while (c < s)
group-onsemi 0:098463de4c5d 319 {
group-onsemi 0:098463de4c5d 320 int i = (s < size_bulk_out) ? s : size_bulk_out;
group-onsemi 0:098463de4c5d 321 if (host->bulkWrite(dev, bulk_out, (uint8_t *)(b+c), i) == USB_TYPE_OK)
group-onsemi 0:098463de4c5d 322 c += i;
group-onsemi 0:098463de4c5d 323 }
group-onsemi 0:098463de4c5d 324 }
group-onsemi 0:098463de4c5d 325 return s;
group-onsemi 0:098463de4c5d 326 }
group-onsemi 0:098463de4c5d 327
group-onsemi 0:098463de4c5d 328 int USBHostSerialPort::readBuf(char* b, int s)
group-onsemi 0:098463de4c5d 329 {
group-onsemi 0:098463de4c5d 330 int i = 0;
group-onsemi 0:098463de4c5d 331 if (bulk_in)
group-onsemi 0:098463de4c5d 332 {
group-onsemi 0:098463de4c5d 333 for (i = 0; i < s; )
group-onsemi 0:098463de4c5d 334 b[i++] = getc();
group-onsemi 0:098463de4c5d 335 }
group-onsemi 0:098463de4c5d 336 return i;
group-onsemi 0:098463de4c5d 337 }
group-onsemi 0:098463de4c5d 338
group-onsemi 0:098463de4c5d 339 uint8_t USBHostSerialPort::available() {
group-onsemi 0:098463de4c5d 340 return circ_buf.available();
group-onsemi 0:098463de4c5d 341 }
group-onsemi 0:098463de4c5d 342
group-onsemi 0:098463de4c5d 343
group-onsemi 0:098463de4c5d 344
group-onsemi 0:098463de4c5d 345 #endif