Radio: Add Parameter Set

This commit is contained in:
Dominic Höglinger 2025-09-17 19:12:11 +02:00
parent e1d89282ef
commit c705359427

View File

@ -0,0 +1,41 @@
#pragma once
#include "RadioDevice.h"
#include <map>
namespace tt::hal::radio {
class ParameterSet {
private:
using Map = std::unordered_map<RadioDevice::Parameter, float, std::hash<int> >;
Map parameters;
public:
explicit ParameterSet() {}
explicit ParameterSet(const ParameterSet& other) { parameters = other.parameters; }
~ParameterSet() override = default;
float get(const RadioDevice::Parameter parameter) { return parameters[parameter]; }
void set(const RadioDevice::Parameter parameter, const float value) { parameters[parameter] = value; }
bool has(const RadioDevice::Parameter parameter) { return parameters.contains(parameter); }
bool erase(const RadioDevice::Parameter parameter) {
if (has(parameter)) {
parameters.erase(parameter);
return true;
}
return false;
}
bool apply(RadioDevice &radio) {
bool successful = true;
for (const auto& [parameter, value] : parameters) {
// No break on error chosen to apply all parameters,
// a bad one doesn't make the successive tries any more invalid
successful &= radio.configure(parameter, value);
}
return successful;
}
};
}