TimeSeriesData.h 833 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <Arduino.h>
  3. #include <Mesh.h>
  4. struct MinMaxAvg {
  5. float _min, _max, _avg;
  6. uint8_t _lpp_type, _channel;
  7. };
  8. class TimeSeriesData {
  9. float* data;
  10. int num_slots, next;
  11. uint32_t last_timestamp;
  12. uint32_t interval_secs;
  13. public:
  14. TimeSeriesData(float* array, int num, uint32_t secs) : num_slots(num), data(array), last_timestamp(0), next(0), interval_secs(secs) {
  15. memset(data, 0, sizeof(float)*num);
  16. }
  17. TimeSeriesData(int num, uint32_t secs) : num_slots(num), last_timestamp(0), next(0), interval_secs(secs) {
  18. data = new float[num];
  19. memset(data, 0, sizeof(float)*num);
  20. }
  21. void recordData(mesh::RTCClock* clock, float value);
  22. void calcDataMinMaxAvg(mesh::RTCClock* clock, uint32_t start_secs_ago, uint32_t end_secs_ago, MinMaxAvg* dest, uint8_t channel, uint8_t lpp_type) const;
  23. };