aboutsummaryrefslogtreecommitdiffstats
path: root/src/usb_stdio.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2022-11-29 00:53:17 +0100
committerLouis Burda <quent.burda@gmail.com>2022-11-29 00:53:17 +0100
commita90347438e51bbd5f65c1c58c76ba339df7fc814 (patch)
tree589c1d7c04228ac955d7b4c392aa94c50c762c8f /src/usb_stdio.c
parenta7bfb47f666c8fadffb80b1beeee1905ad3fe029 (diff)
downloadsxkbd-a90347438e51bbd5f65c1c58c76ba339df7fc814.tar.gz
sxkbd-a90347438e51bbd5f65c1c58c76ba339df7fc814.zip
Refactoring and added sdk uart (not working)
Diffstat (limited to 'src/usb_stdio.c')
-rw-r--r--src/usb_stdio.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/usb_stdio.c b/src/usb_stdio.c
new file mode 100644
index 0000000..90beefb
--- /dev/null
+++ b/src/usb_stdio.c
@@ -0,0 +1,40 @@
+#include "usb_stdio.h"
+
+#include "pico/stdio/driver.h"
+#include "tusb.h"
+
+static void usb_stdio_write(const char *buf, int len);
+static void usb_stdio_flush(void);
+static int usb_stdio_read(char *buf, int len);
+
+static struct stdio_driver usb_stdio = {
+ .out_chars = usb_stdio_write,
+ .out_flush = usb_stdio_flush,
+ .in_chars = usb_stdio_read,
+ .next = NULL
+};
+
+void
+usb_stdio_write(const char *buf, int len)
+{
+ tud_cdc_write(buf, (uint32_t) len);
+}
+
+void
+usb_stdio_flush(void)
+{
+ tud_cdc_write_flush();
+}
+
+int
+usb_stdio_read(char *buf, int len)
+{
+ return (int) tud_cdc_read(buf, (uint32_t) len);
+}
+
+void
+usb_stdio_init(void)
+{
+ stdio_set_driver_enabled(&usb_stdio, true);
+ stdio_init_all();
+}