/* * main() method */ #include #include #include "spi.h" #include "timer.h" #include "cppm.h" #include "rx.h" #include "main.h" void watchdogBoot(void) __attribute__((naked)) __attribute__((section(".init3"))); void watchdogBoot(void) { MCUSR = 0; wdt_disable(); } #ifdef DEBUG_UART_MENU void uartMenu(void) { if (!serialHasChar(0)) { return; } uint8_t c = serialGet(0); time_t time = timerGet(); switch (c) { case 't': case 'T': debugWrite("Uptime: "); serialWriteUnsigned64(0, time); debugWrite("ms / "); serialWriteUnsigned64(0, time / 1000); debugWrite("s\n"); break; case 'q': case 'Q': debugWrite("Resetting...\n\n"); wdt_enable(WDTO_15MS); for (;;) { } break; default: debugWrite("Unknown command: '"); serialWrite(0, c); debugWrite("'\n"); case 'h': case 'H': case '?': debugWrite("Available commands:\n"); debugWrite(" h - Help\n"); debugWrite(" t - Time\n"); debugWrite(" q - Reset\n"); break; } } #endif void main(void) { //cppmInit(); timerInit(); #ifdef DEBUG serialInit(0, BAUD(38400, F_CPU)); #endif sei(); // Enable interrupts (required for timer) //wdt_enable(WDTO_250MS); // Trigger Watchdog after 250ms wdt_enable(WDTO_2S); // Trigger Watchdog after 2s //debugWrite("RX reset.\n"); spiInit(); rxInit(); //debugWrite("RX ready!\n"); for(;;) { wdt_reset(); rxReceivePacket(); #ifdef DEBUG_UART_MENU uartMenu(); #endif } }