Radio: Add Parameter Set
This commit is contained in:
parent
e1d89282ef
commit
c705359427
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