diff options
author | Joey Castillo <jose.castillo@gmail.com> | 2021-08-28 12:50:18 -0400 |
---|---|---|
committer | Joey Castillo <jose.castillo@gmail.com> | 2021-08-28 12:50:18 -0400 |
commit | 39a5c822a2a2e798e2e39ff8a98b7af84253026c (patch) | |
tree | fa157c98d3aea0d4f996e4415aa2a7ad1093ac05 /tinyusb/examples/device/cdc_dual_ports/src/main.c | |
parent | c9e00b83bbdcb05058806d915ec4fff3cf4e596f (diff) | |
download | Sensor-Watch-39a5c822a2a2e798e2e39ff8a98b7af84253026c.tar.gz Sensor-Watch-39a5c822a2a2e798e2e39ff8a98b7af84253026c.tar.bz2 Sensor-Watch-39a5c822a2a2e798e2e39ff8a98b7af84253026c.zip |
add tinyusb
Diffstat (limited to 'tinyusb/examples/device/cdc_dual_ports/src/main.c')
-rwxr-xr-x | tinyusb/examples/device/cdc_dual_ports/src/main.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tinyusb/examples/device/cdc_dual_ports/src/main.c b/tinyusb/examples/device/cdc_dual_ports/src/main.c new file mode 100755 index 00000000..34cd29ed --- /dev/null +++ b/tinyusb/examples/device/cdc_dual_ports/src/main.c @@ -0,0 +1,100 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <ctype.h> + +#include "bsp/board.h" +#include "tusb.h" + +//------------- prototypes -------------// +static void cdc_task(void); + +/*------------- MAIN -------------*/ +int main(void) +{ + board_init(); + + tusb_init(); + + while (1) + { + tud_task(); // tinyusb device task + cdc_task(); + } + + return 0; +} + +// echo to either Serial0 or Serial1 +// with Serial0 as all lower case, Serial1 as all upper case +static void echo_serial_port(uint8_t itf, uint8_t buf[], uint32_t count) +{ + for(uint32_t i=0; i<count; i++) + { + if (itf == 0) + { + // echo back 1st port as lower case + if (isupper(buf[i])) buf[i] += 'a' - 'A'; + } + else + { + // echo back 2nd port as upper case + if (islower(buf[i])) buf[i] -= 'a' - 'A'; + } + + tud_cdc_n_write_char(itf, buf[i]); + } + tud_cdc_n_write_flush(itf); +} + +//--------------------------------------------------------------------+ +// USB CDC +//--------------------------------------------------------------------+ +static void cdc_task(void) +{ + uint8_t itf; + + for (itf = 0; itf < CFG_TUD_CDC; itf++) + { + // connected() check for DTR bit + // Most but not all terminal client set this when making connection + // if ( tud_cdc_n_connected(itf) ) + { + if ( tud_cdc_n_available(itf) ) + { + uint8_t buf[64]; + + uint32_t count = tud_cdc_n_read(itf, buf, sizeof(buf)); + + // echo back to both serial ports + echo_serial_port(0, buf, count); + echo_serial_port(1, buf, count); + } + } + } +} |