Switch from stdio to direct TinyUSB CDC, drop cstdio from w6300
This commit is contained in:
36
picomap.cpp
36
picomap.cpp
@@ -1,16 +1,28 @@
|
||||
#include <stdio.h>
|
||||
#include "pico/stdlib.h"
|
||||
#include "pico/bootrom.h"
|
||||
#include "pico/unique_id.h"
|
||||
#include "tusb.h"
|
||||
#include "wire.h"
|
||||
|
||||
#include "w6300.h"
|
||||
|
||||
static void send_bytes(const std::vector<uint8_t> &data) {
|
||||
for (auto b : data) {
|
||||
putchar(b);
|
||||
static void usb_write(const uint8_t* data, uint32_t len) {
|
||||
while (len > 0) {
|
||||
uint32_t avail = tud_cdc_write_available();
|
||||
if (avail == 0) {
|
||||
tud_task();
|
||||
continue;
|
||||
}
|
||||
uint32_t chunk = len < avail ? len : avail;
|
||||
tud_cdc_write(data, chunk);
|
||||
tud_cdc_write_flush();
|
||||
data += chunk;
|
||||
len -= chunk;
|
||||
}
|
||||
stdio_flush();
|
||||
}
|
||||
|
||||
static void send_bytes(const std::vector<uint8_t> &data) {
|
||||
usb_write(data.data(), data.size());
|
||||
}
|
||||
|
||||
static bool w6300_init() {
|
||||
@@ -35,20 +47,22 @@ static bool w6300_init() {
|
||||
}
|
||||
|
||||
int main() {
|
||||
stdio_init_all();
|
||||
stdio_set_translate_crlf(&stdio_usb, false);
|
||||
tusb_init();
|
||||
|
||||
if (!w6300_init()) {
|
||||
printf("W6300 init failed\n");
|
||||
}
|
||||
|
||||
static static_vector<uint8_t, 256> rx_buf;
|
||||
|
||||
while (true) {
|
||||
int c = getchar_timeout_us(100000);
|
||||
if (c == PICO_ERROR_TIMEOUT) continue;
|
||||
tud_task();
|
||||
|
||||
rx_buf.push_back(static_cast<uint8_t>(c));
|
||||
if (!tud_cdc_available()) continue;
|
||||
|
||||
uint8_t byte;
|
||||
if (tud_cdc_read(&byte, 1) != 1) continue;
|
||||
|
||||
rx_buf.push_back(byte);
|
||||
|
||||
auto msg = try_decode(rx_buf);
|
||||
if (!msg) {
|
||||
|
||||
Reference in New Issue
Block a user