Radio: Add Parameter Set
This commit is contained in:
parent
fe68a83aaa
commit
afa596d4a6
41
Tactility/Include/Tactility/hal/radio/ParameterSet.h
Normal file
41
Tactility/Include/Tactility/hal/radio/ParameterSet.h
Normal 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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user