roo_monitoring
API Documentation for roo_monitoring
Loading...
Searching...
No Matches
transform.cpp
Go to the documentation of this file.
1#include "transform.h"
2
3namespace roo_monitoring {
4
5Transform Transform::Linear(float multiplier, float offset) {
7}
8
9Transform Transform::LinearRange(float min_value, float max_value) {
10 return Transform(65535.0 / (max_value - min_value), -min_value);
11}
12
13uint16_t Transform::apply(float value) const {
14 float transformed = multiplier_ * value + offset_;
15 if (transformed < 0) {
16 return 0;
17 }
18 if (transformed >= 65535) {
19 return 65535;
20 }
21 return (uint16_t)(transformed + 0.5);
22}
23
24float Transform::unapply(uint16_t value) const {
25 return (value - offset_) / multiplier_;
26}
27
28} // namespace roo_monitoring
Maps application-domain floats to 16-bit stored values.
Definition transform.h:10
float offset() const
Returns the offset used by the transform.
Definition transform.h:31
float unapply(uint16_t value) const
Recovers the application-domain value from encoded data.
Definition transform.cpp:24
static Transform LinearRange(float min_value, float max_value)
Creates a linear transform from min/max representable values.
Definition transform.cpp:9
uint16_t apply(float value) const
Applies the transform and clamps to [0, 65535].
Definition transform.cpp:13
float multiplier() const
Returns the multiplier used by the transform.
Definition transform.h:29
static Transform Linear(float multiplier, float offset)
Creates a linear transformation ax+b.
Definition transform.cpp:5
Umbrella header for the roo_monitoring module.