#include "Tactility/hal/radio/RadioDevice.h" #include namespace tt::hal::radio { constexpr const char* TAG = "RadioDevice"; RadioDevice::State RadioDevice::getState() const { auto lock = mutex.asScopedLock(); lock.lock(); return state; // Make copy because of thread safety } void RadioDevice::setState(State newState) { auto lock = mutex.asScopedLock(); lock.lock(); state = newState; } void RadioDevice::publishRx(const RxPacket& packet) { mutex.lock(); for (auto& subscription : rxSubscriptions) { (*subscription.onData)(getId(), packet); } mutex.unlock(); } const char* toString(RadioDevice::Modulation modulation) { using enum RadioDevice::Modulation; switch (modulation) { case Fsk: return "FSK"; case LoRa: return "LoRa"; case LrFhss: return "LR-FHSS"; default: return "Unkown"; } } const char* toString(RadioDevice::Parameter parameter) { using enum RadioDevice::Parameter; switch (parameter) { case Power: return TT_STRINGIFY(Power); case Frequency: return TT_STRINGIFY(Frequency); case Bandwidth: return TT_STRINGIFY(Bandwidth); case SpreadFactor: return TT_STRINGIFY(SpreadFactor); case CodingRate: return TT_STRINGIFY(CodingRate); case SyncWord: return TT_STRINGIFY(SyncWord); case PreambleLength: return TT_STRINGIFY(PreambleLength); case FrequencyDeviation: return TT_STRINGIFY(FrequencyDeviation); case DataRate: return TT_STRINGIFY(DataRate); case AddressWidth: return TT_STRINGIFY(AddressWidth); default: return "Unknown"; } } } // namespace tt::hal::radio