mirror of
https://github.com/meshtastic/firmware.git
synced 2025-10-27 15:02:41 +00:00
Some checks are pending
CI / setup (all) (push) Waiting to run
CI / setup (check) (push) Waiting to run
CI / version (push) Waiting to run
CI / check (push) Blocked by required conditions
CI / build (push) Blocked by required conditions
CI / build-debian-src (push) Waiting to run
CI / package-pio-deps-native-tft (push) Waiting to run
CI / test-native (push) Waiting to run
CI / docker (alpine, native, linux/amd64) (push) Waiting to run
CI / docker (alpine, native, linux/arm64) (push) Waiting to run
CI / docker (alpine, native-tft, linux/amd64) (push) Waiting to run
CI / docker (debian, native, linux/amd64) (push) Waiting to run
CI / docker (debian, native, linux/arm/v7) (push) Waiting to run
CI / docker (debian, native, linux/arm64) (push) Waiting to run
CI / docker (debian, native-tft, linux/amd64) (push) Waiting to run
CI / gather-artifacts (esp32) (push) Blocked by required conditions
CI / gather-artifacts (esp32c3) (push) Blocked by required conditions
CI / gather-artifacts (esp32c6) (push) Blocked by required conditions
CI / gather-artifacts (esp32s3) (push) Blocked by required conditions
CI / gather-artifacts (nrf52840) (push) Blocked by required conditions
CI / gather-artifacts (rp2040) (push) Blocked by required conditions
CI / gather-artifacts (rp2350) (push) Blocked by required conditions
CI / gather-artifacts (stm32) (push) Blocked by required conditions
CI / release-artifacts (push) Blocked by required conditions
CI / release-firmware (esp32) (push) Blocked by required conditions
CI / release-firmware (esp32c3) (push) Blocked by required conditions
CI / release-firmware (esp32c6) (push) Blocked by required conditions
CI / release-firmware (esp32s3) (push) Blocked by required conditions
CI / release-firmware (nrf52840) (push) Blocked by required conditions
CI / release-firmware (rp2040) (push) Blocked by required conditions
CI / release-firmware (rp2350) (push) Blocked by required conditions
CI / release-firmware (stm32) (push) Blocked by required conditions
CI / publish-firmware (push) Blocked by required conditions
* rework I2C sensor init the goal is to only instantiate sensors that are pressend to save memory. side effacts: - easyer sensor integration (less C&P code) - nodeTelemetrySensorsMap can be removed when all devices are migrated * add missing ifdef * refactor a bunch of more sensors RAM -816 Flash -916 * fix build for t1000 * refactor more sensors RAM -192 Flash -60 * improve error handling Flash -112 * fix build * fix build * fix IndicatorSensor * fix tracker-t1000-e build not sure what magic is used but it works * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/modules/Telemetry/Sensor/DFRobotGravitySensor.h Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
73 lines
2.8 KiB
C++
73 lines
2.8 KiB
C++
#include "configuration.h"
|
|
|
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR
|
|
|
|
#pragma once
|
|
|
|
#ifndef ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE
|
|
#define ENVIRONMENTAL_TELEMETRY_MODULE_ENABLE 0
|
|
#endif
|
|
|
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
|
#include "NodeDB.h"
|
|
#include "ProtobufModule.h"
|
|
#include "detect/ScanI2CConsumer.h"
|
|
#include <OLEDDisplay.h>
|
|
#include <OLEDDisplayUi.h>
|
|
|
|
class EnvironmentTelemetryModule : private concurrency::OSThread,
|
|
public ScanI2CConsumer,
|
|
public ProtobufModule<meshtastic_Telemetry>
|
|
{
|
|
CallbackObserver<EnvironmentTelemetryModule, const meshtastic::Status *> nodeStatusObserver =
|
|
CallbackObserver<EnvironmentTelemetryModule, const meshtastic::Status *>(this,
|
|
&EnvironmentTelemetryModule::handleStatusUpdate);
|
|
|
|
public:
|
|
EnvironmentTelemetryModule()
|
|
: concurrency::OSThread("EnvironmentTelemetry"), ScanI2CConsumer(),
|
|
ProtobufModule("EnvironmentTelemetry", meshtastic_PortNum_TELEMETRY_APP, &meshtastic_Telemetry_msg)
|
|
{
|
|
lastMeasurementPacket = nullptr;
|
|
nodeStatusObserver.observe(&nodeStatus->onNewStatus);
|
|
setIntervalFromNow(10 * 1000);
|
|
}
|
|
virtual bool wantUIFrame() override;
|
|
#if !HAS_SCREEN
|
|
void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y);
|
|
#else
|
|
virtual void drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) override;
|
|
#endif
|
|
|
|
protected:
|
|
/** Called to handle a particular incoming message
|
|
@return true if you've guaranteed you've handled this message and no other handlers should be considered for it
|
|
*/
|
|
virtual bool handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Telemetry *p) override;
|
|
virtual int32_t runOnce() override;
|
|
/** Called to get current Environment telemetry data
|
|
@return true if it contains valid data
|
|
*/
|
|
bool getEnvironmentTelemetry(meshtastic_Telemetry *m);
|
|
virtual meshtastic_MeshPacket *allocReply() override;
|
|
/**
|
|
* Send our Telemetry into the mesh
|
|
*/
|
|
bool sendTelemetry(NodeNum dest = NODENUM_BROADCAST, bool wantReplies = false);
|
|
|
|
virtual AdminMessageHandleResult handleAdminMessageForModule(const meshtastic_MeshPacket &mp,
|
|
meshtastic_AdminMessage *request,
|
|
meshtastic_AdminMessage *response) override;
|
|
|
|
void i2cScanFinished(ScanI2C *i2cScanner);
|
|
|
|
private:
|
|
bool firstTime = 1;
|
|
meshtastic_MeshPacket *lastMeasurementPacket;
|
|
uint32_t sendToPhoneIntervalMs = SECONDS_IN_MINUTE * 1000; // Send to phone every minute
|
|
uint32_t lastSentToMesh = 0;
|
|
uint32_t lastSentToPhone = 0;
|
|
uint32_t sensor_read_error_count = 0;
|
|
};
|
|
|
|
#endif |