/* main.c - Main entry point and event loop for sbc-harness * * Copyright (C) 2024 Luke T. Shumaker * SPDX-Licence-Identifier: AGPL-3.0-or-later */ /* newlib */ #include /* for strlen() */ /* pico-sdk */ #include "pico/stdlib.h" /* local */ #include "coroutine.h" #include "usb_common.h" #include "usb_keyboard.h" COROUTINE hello_world_cr(void *_chan) { const char *msg = "Hello world!\n"; usb_keyboard_chan_t *chan = _chan; cr_begin(); for (size_t i = 0;; i = (i+1) % strlen(msg)) { cr_chan_req(chan, NULL, msg[i]); } cr_end(); } int main() { /* initialization */ stdio_uart_init(); //gpio_init(PICO_DEFAULT_LED_PIN); //gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); usb_common_earlyinit(); usb_keyboard_init(); usb_common_lateinit(); /* set up coroutines */ coroutine_add(usb_common_cr, NULL); usb_keyboard_chan_t keyboard_chan = {0}; coroutine_add(usb_keyboard_cr, &keyboard_chan); coroutine_add(hello_world_cr, &keyboard_chan); /* Event loop. */ coroutine_main(); }