// // Created by erki on 4.06.22. // #ifndef SKL_TUNNEL_RADIO_HW_INSTANCE_HPP #define SKL_TUNNEL_RADIO_HW_INSTANCE_HPP #include #include "radio_hw_registers.hpp" namespace radio { struct HwInstance { static HwInstance* instance(); HwInstance(); HwInstance(const HwInstance&) = delete; HwInstance(HwInstance&&) = delete; HwInstance& operator=(const HwInstance&) = delete; HwInstance& operator=(HwInstance&&) = delete; void irq_handler(); uint8_t register_read(const Registers& address); void register_write(const Registers& address, const uint8_t value); private: spi_m_sync_descriptor* m_spi = nullptr; io_descriptor* m_spi_io = nullptr; void m_wait_transition_complete(); }; } #endif //SKL_TUNNEL_RADIO_HW_INSTANCE_HPP