wio_e5_mini: led and rescue cli

This commit is contained in:
Florent
2025-06-24 14:34:42 +02:00
parent ba7839a60d
commit d94f469d53
5 changed files with 63 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ protected:
uint8_t startup_reason; uint8_t startup_reason;
public: public:
void begin() { virtual void begin() {
startup_reason = BD_STARTUP_NORMAL; startup_reason = BD_STARTUP_NORMAL;
} }
@@ -25,5 +25,14 @@ public:
void reboot() override { void reboot() override {
} }
#if defined(P_LORA_TX_LED)
void onBeforeTransmit() override {
digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED on
}
void onAfterTransmit() override {
digitalWrite(P_LORA_TX_LED, HIGH); // turn TX LED off
}
#endif
bool startOTAUpdate(const char* id, char reply[]) override { return false; }; bool startOTAUpdate(const char* id, char reply[]) override { return false; };
}; };

View File

@@ -0,0 +1,24 @@
#pragma once
#include <helpers/ui/DisplayDriver.h>
class NullDisplayDriver : public DisplayDriver {
public:
NullDisplayDriver() : DisplayDriver(128, 64) { }
bool begin() { return false; } // not present
bool isOn() override { return false; }
void turnOn() override { }
void turnOff() override { }
void clear() override { }
void startFrame(Color bkg = DARK) override { }
void setTextSize(int sz) override { }
void setColor(Color c) override { }
void setCursor(int x, int y) override { }
void print(const char* str) override { }
void fillRect(int x, int y, int w, int h) override { }
void drawRect(int x, int y, int w, int h) override { }
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override { }
uint16_t getTextWidth(const char* str) override { return 0; }
void endFrame() { }
};

View File

@@ -7,6 +7,9 @@ build_flags = ${stm32_base.build_flags}
-D WRAPPER_CLASS=CustomSTM32WLxWrapper -D WRAPPER_CLASS=CustomSTM32WLxWrapper
-D SPI_INTERFACES_COUNT=0 -D SPI_INTERFACES_COUNT=0
-D RX_BOOSTED_GAIN=true -D RX_BOOSTED_GAIN=true
-D P_LORA_TX_LED=LED_RED
-D PIN_USER_BTN=USER_BTN
-D USER_BTN_PRESSED=LOW
-I variants/wio-e5-mini -I variants/wio-e5-mini
build_src_filter = ${stm32_base.build_src_filter} build_src_filter = ${stm32_base.build_src_filter}
+<../variants/wio-e5-mini> +<../variants/wio-e5-mini>
@@ -27,7 +30,8 @@ extends = lora_e5_mini
build_flags = ${lora_e5_mini.build_flags} build_flags = ${lora_e5_mini.build_flags}
-D LORA_TX_POWER=22 -D LORA_TX_POWER=22
-D MAX_CONTACTS=100 -D MAX_CONTACTS=100
-D MAX_GROUP_CHANNELS=8 -D MAX_GROUP_CHANNELS=8
-D DISPLAY_CLASS=NullDisplayDriver
build_src_filter = ${lora_e5_mini.build_src_filter} build_src_filter = ${lora_e5_mini.build_src_filter}
+<../examples/companion_radio/*.cpp> +<../examples/companion_radio/*.cpp>
lib_deps = ${lora_e5_mini.lib_deps} lib_deps = ${lora_e5_mini.lib_deps}

View File

@@ -20,6 +20,10 @@ static const Module::RfSwitchMode_t rfswitch_table[] = {
VolatileRTCClock rtc_clock; VolatileRTCClock rtc_clock;
WIOE5SensorManager sensors; WIOE5SensorManager sensors;
#ifdef DISPLAY_CLASS
NullDisplayDriver display;
#endif
#ifndef LORA_CR #ifndef LORA_CR
#define LORA_CR 5 #define LORA_CR 5
#endif #endif

View File

@@ -7,20 +7,38 @@
#include <helpers/CustomSTM32WLxWrapper.h> #include <helpers/CustomSTM32WLxWrapper.h>
#include <helpers/ArduinoHelpers.h> #include <helpers/ArduinoHelpers.h>
#include <helpers/SensorManager.h> #include <helpers/SensorManager.h>
#ifdef DISPLAY_CLASS
#include "NullDisplayDriver.h"
#endif
#include <BME280I2C.h> #include <BME280I2C.h>
#include <Wire.h> #include <Wire.h>
#ifdef DISPLAY_CLASS
extern NullDisplayDriver display;
#endif
class WIOE5Board : public STM32Board { class WIOE5Board : public STM32Board {
public: public:
void begin() override {
STM32Board::begin();
pinMode(LED_RED, OUTPUT);
digitalWrite(LED_RED, HIGH);
pinMode(USER_BTN, INPUT_PULLUP);
}
const char* getManufacturerName() const override { const char* getManufacturerName() const override {
return "Seeed Wio E5 mini"; return "Seeed Wio E5 mini";
} }
uint16_t getBattMilliVolts() override { uint16_t getBattMilliVolts() override {
analogReadResolution(12); analogReadResolution(12);
uint32_t raw = analogRead(PIN_A3); uint32_t raw = 0;
return raw; for (int i=0; i<8;i++) {
raw += analogRead(PIN_A3);
}
return ((double)raw) * 1.73 * 5 * 1000 / 8 / 4096;
} }
}; };