// // Created by erki on 13.07.22. // #ifndef SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP #define SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP #include #include #include "app_settings.hpp" #include "radio_interrupts.hpp" namespace radio { class HwInstance; } namespace App { class TransparentClient { public: TransparentClient(const RadioSettings& initial_settings); TransparentClient(const TransparentClient&) = delete; TransparentClient(TransparentClient&&) = delete; TransparentClient& operator=(const TransparentClient&) = delete; TransparentClient& operator=(TransparentClient&&) = delete; void apply_settings(const RadioSettings& settings); void process(); private: radio::HwInstance* m_radio; Utility::FunctionOwned m_isr_cb_pointer; std::optional m_pending_irqs = std::nullopt; void m_cbRadioIrqHandler(radio::HwInstance*); void m_processInterrupts(); }; } #endif //SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP