#include #include #include #include #include #include #include "radio_hw_instance.hpp" #include "app_logging.hpp" #include "skullc_samd21_hal.hpp" #include "app_transparent_client.hpp" namespace Hal = Peripherals::Hal::Samd; namespace { Utility::StaticPointer m_app; [[noreturn]] void m_faultHandler(const char* expression, const char* file, const int line) { SKULLC_LOG_FATAL("Expression failed: (%s), source: %s:%d", expression, file, line); __asm__("BKPT"); while (true); } volatile bool irq_seen = false; void m_irqHandler(radio::HwInstance*) { irq_seen = true; } } int main() { /* Initializes MCU, drivers and middleware */ atmel_start_init(); Utility::Assert::setHandler(m_faultHandler); gpio_set_pin_level(OUT_LED_TX, false); App::Logging::setup(); SKULLC_LOG_DEBUG("Begin."); const App::RadioSettings settings; Utility::Function irq_handler{m_irqHandler}; m_app.setup(settings); radio::HwInstance* radio_hw = radio::HwInstance::instance(); radio_hw->set_irq_handler(&irq_handler); /* Replace with your application code */ while (true) { gpio_toggle_pin_level(OUT_LED_RX); gpio_toggle_pin_level(OUT_LED_TX); int16_t radio_status = radio_hw->register_read(radio::Registers::TRX_STATUS); radio_status &= 0x1F; SKULLC_LOG_INFO("Status: %d", radio_status); if (irq_seen) { irq_seen = false; const radio::Interrupts irqs = radio_hw->get_pending_irq(); SKULLC_LOG_INFO("IRQ received. %X", std::uint8_t(irqs)); } delay_ms(1000); } }