skl-tunnel/app/include/app_transparent_client.hpp
2022-07-15 15:12:13 +03:00

46 lines
1.0 KiB
C++

//
// Created by erki on 13.07.22.
//
#ifndef SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP
#define SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP
#include <optional>
#include <utility_function.hpp>
#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<TransparentClient, void (radio::HwInstance*)> m_isr_cb_pointer;
std::optional<radio::Interrupts> m_pending_irqs = std::nullopt;
void m_cbRadioIrqHandler(radio::HwInstance*);
void m_processInterrupts();
};
}
#endif //SKL_TUNNEL_APP_TRANSPARENT_CLIENT_HPP