2025-05-19 17:24:54 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
2025-05-23 17:08:23 +10:00
|
|
|
#include <Mesh.h>
|
2025-05-19 17:24:54 +03:00
|
|
|
#include <helpers/SensorManager.h>
|
2025-05-22 15:36:20 +10:00
|
|
|
#include <helpers/sensors/LocationProvider.h>
|
2025-05-19 17:24:54 +03:00
|
|
|
|
2025-05-22 00:19:00 +03:00
|
|
|
class EnvironmentSensorManager : public SensorManager {
|
2025-05-19 17:24:54 +03:00
|
|
|
protected:
|
|
|
|
|
int next_available_channel = TELEM_CHANNEL_SELF + 1;
|
2025-05-22 00:19:00 +03:00
|
|
|
|
2025-05-23 17:08:23 +10:00
|
|
|
bool AHTX0_initialized = false;
|
|
|
|
|
bool BME280_initialized = false;
|
2025-06-29 00:17:46 +02:00
|
|
|
bool BMP280_initialized = false;
|
2025-05-22 00:19:00 +03:00
|
|
|
bool INA3221_initialized = false;
|
|
|
|
|
bool INA219_initialized = false;
|
2025-07-28 09:41:06 +02:00
|
|
|
bool INA260_initialized = false;
|
2025-08-20 22:01:38 -07:00
|
|
|
bool INA226_initialized = false;
|
2025-07-02 16:42:35 +02:00
|
|
|
bool SHTC3_initialized = false;
|
|
|
|
|
bool LPS22HB_initialized = false;
|
2025-07-18 18:51:00 +12:00
|
|
|
bool MLX90614_initialized = false;
|
2025-07-18 22:01:47 +12:00
|
|
|
bool VL53L0X_initialized = false;
|
2025-07-28 10:02:31 +02:00
|
|
|
bool SHT4X_initialized = false;
|
2025-10-16 10:17:23 +02:00
|
|
|
bool BME680_initialized = false;
|
2025-10-22 16:17:06 -04:00
|
|
|
bool BMP085_initialized = false;
|
2025-06-29 00:17:46 +02:00
|
|
|
|
2025-05-23 17:08:23 +10:00
|
|
|
bool gps_detected = false;
|
|
|
|
|
bool gps_active = false;
|
2025-05-22 15:36:20 +10:00
|
|
|
|
2025-05-23 17:08:23 +10:00
|
|
|
#if ENV_INCLUDE_GPS
|
2025-05-23 18:58:45 +10:00
|
|
|
LocationProvider* _location;
|
2025-05-22 15:36:20 +10:00
|
|
|
void start_gps();
|
|
|
|
|
void stop_gps();
|
2025-05-23 17:08:23 +10:00
|
|
|
void initBasicGPS();
|
2025-07-16 19:04:50 -07:00
|
|
|
#ifdef RAK_BOARD
|
|
|
|
|
void rakGPSInit();
|
|
|
|
|
bool gpsIsAwake(uint8_t ioPin);
|
|
|
|
|
#endif
|
2025-05-23 17:08:23 +10:00
|
|
|
#endif
|
|
|
|
|
|
2025-05-22 15:36:20 +10:00
|
|
|
|
2025-05-19 17:24:54 +03:00
|
|
|
public:
|
2025-05-23 18:58:45 +10:00
|
|
|
#if ENV_INCLUDE_GPS
|
2025-05-22 15:36:20 +10:00
|
|
|
EnvironmentSensorManager(LocationProvider &location): _location(&location){};
|
2025-09-23 10:39:43 +02:00
|
|
|
LocationProvider* getLocationProvider() { return _location; }
|
2025-05-23 18:58:45 +10:00
|
|
|
#else
|
|
|
|
|
EnvironmentSensorManager(){};
|
|
|
|
|
#endif
|
2025-05-19 17:24:54 +03:00
|
|
|
bool begin() override;
|
2025-06-29 00:17:46 +02:00
|
|
|
bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override;
|
2025-05-23 17:08:23 +10:00
|
|
|
#if ENV_INCLUDE_GPS
|
2025-05-22 15:36:20 +10:00
|
|
|
void loop() override;
|
2025-05-23 17:08:23 +10:00
|
|
|
#endif
|
2025-05-22 15:36:20 +10:00
|
|
|
int getNumSettings() const override;
|
|
|
|
|
const char* getSettingName(int i) const override;
|
|
|
|
|
const char* getSettingValue(int i) const override;
|
|
|
|
|
bool setSettingValue(const char* name, const char* value) override;
|
2025-05-19 17:24:54 +03:00
|
|
|
};
|