* added REQ_TYPE_GET_AVG_MIN_MAX

* TimeSeriesData
* very basic SensorMesh::sendAlert()
This commit is contained in:
Scott Powell
2025-07-07 22:59:01 +10:00
parent 810b1f8fe7
commit de3e4bc27c
3 changed files with 135 additions and 10 deletions
+28 -2
View File
@@ -93,7 +93,33 @@ protected:
void alertIfLow(Trigger& t, float value, float threshold, const char* text);
void alertIfHigh(Trigger& t, float value, float threshold, const char* text);
virtual void checkForAlerts() = 0; // for app to implement
class TimeSeriesData {
public:
float* data;
int num_slots, next;
uint32_t last_timestamp;
uint32_t interval_secs;
TimeSeriesData(float* array, int num, uint32_t secs) : num_slots(num), data(array), last_timestamp(0), next(0), interval_secs(secs) {
memset(data, 0, sizeof(float)*num);
}
TimeSeriesData(int num, uint32_t secs) : num_slots(num), last_timestamp(0), next(0), interval_secs(secs) {
data = new float[num];
memset(data, 0, sizeof(float)*num);
}
};
void recordData(TimeSeriesData& data, float value);
struct MinMaxAvg {
float _min, _max, _avg;
uint8_t _lpp_type, _channel;
};
void calcDataMinMaxAvg(const TimeSeriesData& data, uint32_t start_secs_ago, uint32_t end_secs_ago, MinMaxAvg* dest, uint8_t channel, uint8_t lpp_type);
virtual void onSensorDataRead() = 0; // for app to implement
virtual int querySeriesData(uint32_t start_secs_ago, uint32_t end_secs_ago, MinMaxAvg dest[], int max_num) = 0; // for app to implement
// Mesh overrides
float getAirtimeBudgetFactor() const override;
@@ -130,6 +156,6 @@ private:
mesh::Packet* createSelfAdvert();
ContactInfo* putContact(const mesh::Identity& id);
void sendAlert(const char* text) { } // TODO
void sendAlert(const char* text);
};