/*! \brief Main function. Execution starts here. */ int main(void) { irq_initialize_vectors(); cpu_irq_enable(); // Initialize the sleep manager sleepmgr_init(); sysclk_init(); board_init(); ui_init(); ui_powerdown(); // Start USB stack to authorize VBus monitoring udc_start(); // The main loop manages only the power mode // because the USB management is done by interrupt while (true) { sleepmgr_enter_sleep(); if (main_b_cdc_enable) { // Here CPU wakeup at each SOF (1ms) for (uint8_t port = 0; port < UDI_CDC_PORT_NB; port++) { if (!(main_port_open & (1 << port))) { // Port not open continue; } if (!udi_cdc_multi_is_rx_ready(port)) { // No data received continue; } int value = udi_cdc_multi_getc(port); if (value != 'p') { // Ignore this value continue; } udi_cdc_multi_write_buf(port, "PORT", sizeof("PORT")-1); udi_cdc_multi_putc(port, port+'0'); udi_cdc_multi_putc(port, '\n'); udi_cdc_multi_putc(port, '\r'); } } } }
iram_size_t udi_cdc_write_buf(const void* buf, iram_size_t size) { return udi_cdc_multi_write_buf(0, buf, size); }