71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
#include "Tactility/hal/radio/RadioDevice.h"
|
|
#include <cstring>
|
|
|
|
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
|