geopm 3.1.1.dev456+g3ba31824
GEOPM - Global Extensible Open Power Manager
Loading...
Searching...
No Matches
DerivativeSignal.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 - 2024 Intel Corporation
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef DERIVATIVESIGNAL_HPP_INCLUDE
7#define DERIVATIVESIGNAL_HPP_INCLUDE
8
9#include <memory>
10
11#include "Signal.hpp"
13
14namespace geopm
15{
16 class DerivativeSignal : public Signal
17 {
18 public:
19 DerivativeSignal(std::shared_ptr<Signal> time_sig,
20 std::shared_ptr<Signal> y_sig,
21 int read_loops, double sleep_time);
22 DerivativeSignal(std::shared_ptr<Signal> time_sig,
23 std::shared_ptr<Signal> y_sig,
24 int read_loops, double sleep_time,
25 double nan_replace);
26 DerivativeSignal(const DerivativeSignal &other) = delete;
28 virtual ~DerivativeSignal() = default;
29 void setup_batch(void) override;
30 double sample(void) override;
31 double read(void) const override;
32 private:
33 struct m_sample_s {
34 double time;
35 double sample;
36 };
37
40 static double compute_next(CircularBuffer<m_sample_s> &history,
41 int &num_fit,
42 double time, double signal,
43 double nan_replace);
44
45 std::shared_ptr<Signal> m_time_sig;
46 std::shared_ptr<Signal> m_y_sig;
47
48 const int M_NUM_SAMPLE_HISTORY;
50 int m_derivative_num_fit;
51 bool m_is_batch_ready;
52 double m_sleep_time;
53 double m_last_result;
54 double m_nan_replace;
55 };
56}
57
58#endif
Templated container for a circular buffer implementation. The CircularBuffer container implements a f...
Definition CircularBuffer.hpp:24
Definition DerivativeSignal.hpp:17
double sample(void) override
Apply any conversions necessary to interpret the latest stored value as a double.
Definition DerivativeSignal.cpp:97
double read(void) const override
Read directly the value of the signal without affecting any pushed batch signals.
Definition DerivativeSignal.cpp:115
DerivativeSignal & operator=(const DerivativeSignal &other)=delete
virtual ~DerivativeSignal()=default
DerivativeSignal(const DerivativeSignal &other)=delete
void setup_batch(void) override
Prepare the signal for being updated through side effects by the owner's read_batch step....
Definition DerivativeSignal.cpp:45
Definition Signal.hpp:16
Definition Agg.cpp:20