#pragma once #include #include #include class EnvironmentSensorManager : public SensorManager { protected: int next_available_channel = TELEM_CHANNEL_SELF + 1; bool AHTX0_initialized = false; bool BME280_initialized = false; bool BMP280_initialized = false; bool INA3221_initialized = false; bool INA219_initialized = false; bool INA260_initialized = false; bool SHTC3_initialized = false; bool LPS22HB_initialized = false; bool MLX90614_initialized = false; bool VL53L0X_initialized = false; bool SHT4X_initialized = false; bool gps_detected = false; bool gps_active = false; #if ENV_INCLUDE_GPS LocationProvider* _location; void start_gps(); void stop_gps(); void initBasicGPS(); #ifdef RAK_BOARD void rakGPSInit(); bool gpsIsAwake(uint8_t ioPin); #endif #endif public: #if ENV_INCLUDE_GPS EnvironmentSensorManager(LocationProvider &location): _location(&location){}; #else EnvironmentSensorManager(){}; #endif bool begin() override; bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override; #if ENV_INCLUDE_GPS void loop() override; #endif 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; };