diff --git a/arch/esp32/esp32s2.ini b/arch/esp32/esp32s2.ini
index 5de0fa549..df66de2ed 100644
--- a/arch/esp32/esp32s2.ini
+++ b/arch/esp32/esp32s2.ini
@@ -2,14 +2,17 @@
extends = esp32_base
build_src_filter =
- ${esp32_base.build_src_filter} - -
+ ${esp32_base.build_src_filter} - - -
monitor_speed = 115200
build_flags =
${esp32_base.build_flags}
-DHAS_BLUETOOTH=0
+ -DMESHTASTIC_EXCLUDE_PAXCOUNTER
+ -DMESHTASTIC_EXCLUDE_BLUETOOTH
lib_ignore =
${esp32_base.lib_ignore}
- NimBLE-Arduino
\ No newline at end of file
+ NimBLE-Arduino
+ libpax
\ No newline at end of file
diff --git a/src/AmbientLightingThread.h b/src/AmbientLightingThread.h
index 98ccedde4..6b3360b1f 100644
--- a/src/AmbientLightingThread.h
+++ b/src/AmbientLightingThread.h
@@ -5,6 +5,16 @@
NCP5623 rgb;
#endif
+#ifdef HAS_NEOPIXEL
+#include
+Adafruit_NeoPixel pixels(NEOPIXEL_COUNT, NEOPIXEL_DATA, NEOPIXEL_TYPE);
+#endif
+
+#ifdef UNPHONE
+#include "unPhone.h"
+extern unPhone unphone;
+#endif
+
namespace concurrency
{
class AmbientLightingThread : public concurrency::OSThread
@@ -27,15 +37,31 @@ class AmbientLightingThread : public concurrency::OSThread
disable();
return;
}
+#endif
+#if defined(HAS_NCP5623) || defined(RGBLED_RED) || defined(HAS_NEOPIXEL) || defined(UNPHONE)
if (!moduleConfig.ambient_lighting.led_state) {
LOG_DEBUG("AmbientLightingThread disabling due to moduleConfig.ambient_lighting.led_state OFF\n");
disable();
return;
}
LOG_DEBUG("AmbientLightingThread initializing\n");
+#ifdef HAS_NCP5623
if (_type == ScanI2C::NCP5623) {
rgb.begin();
+#endif
+#ifdef RGBLED_RED
+ pinMode(RGBLED_RED, OUTPUT);
+ pinMode(RGBLED_GREEN, OUTPUT);
+ pinMode(RGBLED_BLUE, OUTPUT);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.begin(); // Initialise the pixel(s)
+ pixels.clear(); // Set all pixel colors to 'off'
+ pixels.setBrightness(moduleConfig.ambient_lighting.current);
+#endif
setLighting();
+#endif
+#ifdef HAS_NCP5623
}
#endif
}
@@ -43,16 +69,17 @@ class AmbientLightingThread : public concurrency::OSThread
protected:
int32_t runOnce() override
{
+#if defined(HAS_NCP5623) || defined(RGBLED_RED) || defined(HAS_NEOPIXEL) || defined(UNPHONE)
#ifdef HAS_NCP5623
if (_type == ScanI2C::NCP5623 && moduleConfig.ambient_lighting.led_state) {
+#endif
setLighting();
return 30000; // 30 seconds to reset from any animations that may have been running from Ext. Notification
- } else {
- return disable();
+#ifdef HAS_NCP5623
}
-#else
- return disable();
#endif
+#endif
+ return disable();
}
private:
@@ -65,9 +92,36 @@ class AmbientLightingThread : public concurrency::OSThread
rgb.setRed(moduleConfig.ambient_lighting.red);
rgb.setGreen(moduleConfig.ambient_lighting.green);
rgb.setBlue(moduleConfig.ambient_lighting.blue);
- LOG_DEBUG("Initializing Ambient lighting w/ current=%d, red=%d, green=%d, blue=%d\n",
+ LOG_DEBUG("Initializing NCP5623 Ambient lighting w/ current=%d, red=%d, green=%d, blue=%d\n",
moduleConfig.ambient_lighting.current, moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green,
moduleConfig.ambient_lighting.blue);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.fill(pixels.Color(moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green,
+ moduleConfig.ambient_lighting.blue),
+ 0, NEOPIXEL_COUNT);
+ pixels.show();
+ LOG_DEBUG("Initializing NeoPixel Ambient lighting w/ brightness(current)=%d, red=%d, green=%d, blue=%d\n",
+ moduleConfig.ambient_lighting.current, moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green,
+ moduleConfig.ambient_lighting.blue);
+#endif
+#ifdef RGBLED_CA
+ analogWrite(RGBLED_RED, 255 - moduleConfig.ambient_lighting.red);
+ analogWrite(RGBLED_GREEN, 255 - moduleConfig.ambient_lighting.green);
+ analogWrite(RGBLED_BLUE, 255 - moduleConfig.ambient_lighting.blue);
+ LOG_DEBUG("Initializing Ambient lighting RGB Common Anode w/ red=%d, green=%d, blue=%d\n",
+ moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green, moduleConfig.ambient_lighting.blue);
+#elif defined(RGBLED_RED)
+ analogWrite(RGBLED_RED, moduleConfig.ambient_lighting.red);
+ analogWrite(RGBLED_GREEN, moduleConfig.ambient_lighting.green);
+ analogWrite(RGBLED_BLUE, moduleConfig.ambient_lighting.blue);
+ LOG_DEBUG("Initializing Ambient lighting RGB Common Cathode w/ red=%d, green=%d, blue=%d\n",
+ moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green, moduleConfig.ambient_lighting.blue);
+#endif
+#ifdef UNPHONE
+ unphone.rgb(moduleConfig.ambient_lighting.red, moduleConfig.ambient_lighting.green, moduleConfig.ambient_lighting.blue);
+ LOG_DEBUG("Initializing unPhone Ambient lighting w/ red=%d, green=%d, blue=%d\n", moduleConfig.ambient_lighting.red,
+ moduleConfig.ambient_lighting.green, moduleConfig.ambient_lighting.blue);
#endif
}
};
diff --git a/src/detect/ScanI2C.h b/src/detect/ScanI2C.h
index 6fb2057b2..20f22040c 100644
--- a/src/detect/ScanI2C.h
+++ b/src/detect/ScanI2C.h
@@ -42,9 +42,7 @@ class ScanI2C
LSM6DS3,
TCA9555,
RCWL9620,
-#ifdef HAS_NCP5623
NCP5623,
-#endif
} DeviceType;
// typedef uint8_t DeviceAddress;
diff --git a/src/gps/GPS.cpp b/src/gps/GPS.cpp
index 0d0bfd9a2..17e35a4b3 100644
--- a/src/gps/GPS.cpp
+++ b/src/gps/GPS.cpp
@@ -452,7 +452,7 @@ bool GPS::setup()
// Set the NEMA output messages
// Ask for only RMC and GGA
uint8_t fields[] = {CAS_NEMA_RMC, CAS_NEMA_GGA};
- for (int i = 0; i < sizeof(fields); i++) {
+ for (uint i = 0; i < sizeof(fields); i++) {
// Construct a CAS-CFG-MSG packet
uint8_t cas_cfg_msg_packet[] = {0x4e, fields[i], 0x01, 0x00};
msglen = makeCASPacket(0x06, 0x01, sizeof(cas_cfg_msg_packet), cas_cfg_msg_packet);
@@ -1584,7 +1584,7 @@ bool GPS::hasFlow()
bool GPS::whileIdle()
{
- int charsInBuf = 0;
+ uint charsInBuf = 0;
bool isValid = false;
if (!isAwake) {
clearBuffer();
diff --git a/src/graphics/NeoPixel.h b/src/graphics/NeoPixel.h
new file mode 100644
index 000000000..dde74366e
--- /dev/null
+++ b/src/graphics/NeoPixel.h
@@ -0,0 +1,4 @@
+#ifdef HAS_NEOPIXEL
+#include
+extern Adafruit_NeoPixel pixels;
+#endif
\ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
index 3fe9ba185..e3c77705f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -179,6 +179,11 @@ const char *getDeviceName()
static int32_t ledBlinker()
{
+ // Still set up the blinking (heartbeat) interval but skip code path below, so LED will blink if
+ // config.device.led_heartbeat_disabled is changed
+ if (config.device.led_heartbeat_disabled)
+ return 1000;
+
static bool ledOn;
ledOn ^= 1;
@@ -608,7 +613,9 @@ void setup()
}
#endif
-#if !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL)
+#if defined(HAS_NEOPIXEL) || defined(UNPHONE) || defined(RGBLED_RED)
+ ambientLightingThread = new AmbientLightingThread(ScanI2C::DeviceType::NONE);
+#elif !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL)
if (rgb_found.type != ScanI2C::DeviceType::NONE) {
ambientLightingThread = new AmbientLightingThread(rgb_found.type);
}
@@ -1002,4 +1009,4 @@ void loop()
mainDelay.delay(delayMsec);
}
// if (didWake) LOG_DEBUG("wake!\n");
-}
\ No newline at end of file
+}
diff --git a/src/mesh/RadioInterface.cpp b/src/mesh/RadioInterface.cpp
index 63912a03e..4fa0bef7a 100644
--- a/src/mesh/RadioInterface.cpp
+++ b/src/mesh/RadioInterface.cpp
@@ -492,7 +492,7 @@ void RadioInterface::applyModemConfig()
// If user has manually specified a channel num, then use that, otherwise generate one by hashing the name
const char *channelName = channels.getName(channels.getPrimaryIndex());
// channel_num is actually (channel_num - 1), since modulus (%) returns values from 0 to (numChannels - 1)
- int channel_num = (loraConfig.channel_num ? loraConfig.channel_num - 1 : hash(channelName)) % numChannels;
+ uint channel_num = (loraConfig.channel_num ? loraConfig.channel_num - 1 : hash(channelName)) % numChannels;
// Check if we use the default frequency slot
RadioInterface::uses_default_frequency_slot =
diff --git a/src/modules/ExternalNotificationModule.cpp b/src/modules/ExternalNotificationModule.cpp
index b898e72ee..c02559240 100644
--- a/src/modules/ExternalNotificationModule.cpp
+++ b/src/modules/ExternalNotificationModule.cpp
@@ -26,7 +26,18 @@
#ifdef HAS_NCP5623
#include
+#endif
+#ifdef HAS_NEOPIXEL
+#include
+#endif
+
+#ifdef UNPHONE
+#include "unPhone.h"
+extern unPhone unphone;
+#endif
+
+#if defined(HAS_NCP5623) || defined(RGBLED_RED) || defined(HAS_NEOPIXEL) || defined(UNPHONE)
uint8_t red = 0;
uint8_t green = 0;
uint8_t blue = 0;
@@ -108,27 +119,44 @@ int32_t ExternalNotificationModule::runOnce()
millis()) {
getExternal(2) ? setExternalOff(2) : setExternalOn(2);
}
+#if defined(HAS_NCP5623) || defined(RGBLED_RED) || defined(HAS_NEOPIXEL) || defined(UNPHONE)
+ red = (colorState & 4) ? brightnessValues[brightnessIndex] : 0; // Red enabled on colorState = 4,5,6,7
+ green = (colorState & 2) ? brightnessValues[brightnessIndex] : 0; // Green enabled on colorState = 2,3,6,7
+ blue = (colorState & 1) ? (brightnessValues[brightnessIndex] * 1.5) : 0; // Blue enabled on colorState = 1,3,5,7
#ifdef HAS_NCP5623
if (rgb_found.type == ScanI2C::NCP5623) {
- red = (colorState & 4) ? brightnessValues[brightnessIndex] : 0; // Red enabled on colorState = 4,5,6,7
- green = (colorState & 2) ? brightnessValues[brightnessIndex] : 0; // Green enabled on colorState = 2,3,6,7
- blue = (colorState & 1) ? (brightnessValues[brightnessIndex] * 1.5) : 0; // Blue enabled on colorState = 1,3,5,7
rgb.setColor(red, green, blue);
-
- if (ascending) { // fade in
- brightnessIndex++;
- if (brightnessIndex == (sizeof(brightnessValues) - 1)) {
- ascending = false;
- }
- } else {
- brightnessIndex--; // fade out
+ }
+#endif
+#ifdef RGBLED_CA
+ analogWrite(RGBLED_RED, 255 - red); // CA type needs reverse logic
+ analogWrite(RGBLED_GREEN, 255 - green);
+ analogWrite(RGBLED_BLUE, 255 - blue);
+#elif defined(RGBLED_RED)
+ analogWrite(RGBLED_RED, red);
+ analogWrite(RGBLED_GREEN, green);
+ analogWrite(RGBLED_BLUE, blue);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.fill(pixels.Color(red, green, blue), 0, NEOPIXEL_COUNT);
+ pixels.show();
+#endif
+#ifdef UNPHONE
+ unphone.rgb(red, green, blue);
+#endif
+ if (ascending) { // fade in
+ brightnessIndex++;
+ if (brightnessIndex == (sizeof(brightnessValues) - 1)) {
+ ascending = false;
}
- if (brightnessIndex == 0) {
- ascending = true;
- colorState++; // next color
- if (colorState > 7) {
- colorState = 1;
- }
+ } else {
+ brightnessIndex--; // fade out
+ }
+ if (brightnessIndex == 0) {
+ ascending = true;
+ colorState++; // next color
+ if (colorState > 7) {
+ colorState = 1;
}
}
#endif
@@ -179,6 +207,9 @@ void ExternalNotificationModule::setExternalOn(uint8_t index)
switch (index) {
case 1:
+#ifdef UNPHONE
+ unphone.vibe(true); // the unPhone's vibration motor is on a i2c GPIO expander
+#endif
if (moduleConfig.external_notification.output_vibra)
digitalWrite(moduleConfig.external_notification.output_vibra, true);
break;
@@ -197,6 +228,22 @@ void ExternalNotificationModule::setExternalOn(uint8_t index)
rgb.setColor(red, green, blue);
}
#endif
+#ifdef RGBLED_CA
+ analogWrite(RGBLED_RED, 255 - red); // CA type needs reverse logic
+ analogWrite(RGBLED_GREEN, 255 - green);
+ analogWrite(RGBLED_BLUE, 255 - blue);
+#elif defined(RGBLED_RED)
+ analogWrite(RGBLED_RED, red);
+ analogWrite(RGBLED_GREEN, green);
+ analogWrite(RGBLED_BLUE, blue);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.fill(pixels.Color(red, green, blue), 0, NEOPIXEL_COUNT);
+ pixels.show();
+#endif
+#ifdef UNPHONE
+ unphone.rgb(red, green, blue);
+#endif
#ifdef T_WATCH_S3
drv.go();
#endif
@@ -209,6 +256,9 @@ void ExternalNotificationModule::setExternalOff(uint8_t index)
switch (index) {
case 1:
+#ifdef UNPHONE
+ unphone.vibe(false); // the unPhone's vibration motor is on a i2c GPIO expander
+#endif
if (moduleConfig.external_notification.output_vibra)
digitalWrite(moduleConfig.external_notification.output_vibra, false);
break;
@@ -222,14 +272,33 @@ void ExternalNotificationModule::setExternalOff(uint8_t index)
break;
}
+#if defined(HAS_NCP5623) || defined(RGBLED_RED) || defined(HAS_NEOPIXEL) || defined(UNPHONE)
+ red = 0;
+ green = 0;
+ blue = 0;
#ifdef HAS_NCP5623
if (rgb_found.type == ScanI2C::NCP5623) {
- red = 0;
- green = 0;
- blue = 0;
rgb.setColor(red, green, blue);
}
#endif
+#ifdef RGBLED_CA
+ analogWrite(RGBLED_RED, 255 - red); // CA type needs reverse logic
+ analogWrite(RGBLED_GREEN, 255 - green);
+ analogWrite(RGBLED_BLUE, 255 - blue);
+#elif defined(RGBLED_RED)
+ analogWrite(RGBLED_RED, red);
+ analogWrite(RGBLED_GREEN, green);
+ analogWrite(RGBLED_BLUE, blue);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.fill(pixels.Color(red, green, blue), 0, NEOPIXEL_COUNT);
+ pixels.show();
+#endif
+#ifdef UNPHONE
+ unphone.rgb(red, green, blue);
+#endif
+#endif
+
#ifdef T_WATCH_S3
drv.stop();
#endif
@@ -328,6 +397,21 @@ ExternalNotificationModule::ExternalNotificationModule()
rgb.begin();
rgb.setCurrent(10);
}
+#endif
+#ifdef RGBLED_RED
+ pinMode(RGBLED_RED, OUTPUT); // set up the RGB led pins
+ pinMode(RGBLED_GREEN, OUTPUT);
+ pinMode(RGBLED_BLUE, OUTPUT);
+#endif
+#ifdef RGBLED_CA
+ analogWrite(RGBLED_RED, 255); // with a common anode type, logic is reversed
+ analogWrite(RGBLED_GREEN, 255); // so we want to initialise with lights off
+ analogWrite(RGBLED_BLUE, 255);
+#endif
+#ifdef HAS_NEOPIXEL
+ pixels.begin(); // Initialise the pixel(s)
+ pixels.clear(); // Set all pixel colors to 'off'
+ pixels.setBrightness(moduleConfig.ambient_lighting.current);
#endif
} else {
LOG_INFO("External Notification Module Disabled\n");
@@ -509,4 +593,4 @@ void ExternalNotificationModule::handleSetRingtone(const char *from_msg)
if (changed) {
nodeDB->saveProto(rtttlConfigFile, meshtastic_RTTTLConfig_size, &meshtastic_RTTTLConfig_msg, &rtttlConfig);
}
-}
\ No newline at end of file
+}
diff --git a/src/modules/RoutingModule.cpp b/src/modules/RoutingModule.cpp
index a52328ca4..fe1abab05 100644
--- a/src/modules/RoutingModule.cpp
+++ b/src/modules/RoutingModule.cpp
@@ -51,7 +51,7 @@ uint8_t RoutingModule::getHopLimitForResponse(uint8_t hopStart, uint8_t hopLimit
uint8_t hopsUsed = hopStart < hopLimit ? config.lora.hop_limit : hopStart - hopLimit;
if (hopsUsed > config.lora.hop_limit) {
return hopsUsed; // If the request used more hops than the limit, use the same amount of hops
- } else if (hopsUsed + 2 < config.lora.hop_limit) {
+ } else if ((uint8_t)(hopsUsed + 2) < config.lora.hop_limit) {
return hopsUsed + 2; // Use only the amount of hops needed with some margin as the way back may be different
}
}
diff --git a/src/modules/esp32/PaxcounterModule.cpp b/src/modules/esp32/PaxcounterModule.cpp
index aad7b5d63..b9fdfcb63 100644
--- a/src/modules/esp32/PaxcounterModule.cpp
+++ b/src/modules/esp32/PaxcounterModule.cpp
@@ -1,5 +1,5 @@
#include "configuration.h"
-#if defined(ARCH_ESP32)
+#if defined(ARCH_ESP32) && !MESHTASTIC_EXCLUDE_PAXCOUNTER
#include "Default.h"
#include "MeshService.h"
#include "PaxcounterModule.h"
diff --git a/src/sleep.cpp b/src/sleep.cpp
index e58c3872a..fe73a755c 100644
--- a/src/sleep.cpp
+++ b/src/sleep.cpp
@@ -211,7 +211,7 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false)
// esp_wifi_stop();
waitEnterSleep(skipPreflight);
-#ifdef ARCH_ESP32
+#if defined(ARCH_ESP32) && !MESHTASTIC_EXCLUDE_BLUETOOTH
// Full shutdown of bluetooth hardware
if (nimbleBluetooth)
nimbleBluetooth->deinit();
diff --git a/variants/Dongle_nRF52840-pca10059-v1/variant.cpp b/variants/Dongle_nRF52840-pca10059-v1/variant.cpp
index 8c6bf039c..2fc87c718 100644
--- a/variants/Dongle_nRF52840-pca10059-v1/variant.cpp
+++ b/variants/Dongle_nRF52840-pca10059-v1/variant.cpp
@@ -29,10 +29,7 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant()
{
- // LED1 & LED2
+ // LED1
pinMode(PIN_LED1, OUTPUT);
ledOff(PIN_LED1);
-
- pinMode(PIN_LED2, OUTPUT);
- ledOff(PIN_LED2);
-}
+}
\ No newline at end of file
diff --git a/variants/Dongle_nRF52840-pca10059-v1/variant.h b/variants/Dongle_nRF52840-pca10059-v1/variant.h
index 533367a30..2318450eb 100644
--- a/variants/Dongle_nRF52840-pca10059-v1/variant.h
+++ b/variants/Dongle_nRF52840-pca10059-v1/variant.h
@@ -43,16 +43,12 @@ extern "C" {
#define NUM_ANALOG_OUTPUTS (0)
// LEDs
-#define PIN_LED1 (0 + 12) // Blue LED P1.12
-#define PIN_LED2 (0 + 6) // Built in Green P0.06
-
-// Green Built in LED1
-// #define PIN_LED1 (0 + 6) // LED1 P1.15
-
-// RGB NeoPixel LED2
-// #define PIN_LED1 (0 + 8) Red
-// #define PIN_LED1 (32 + 9) Green
-// #define PIN_LED1 (0 + 12) Blue
+#define PIN_LED1 (0 + 6) // Built in Green P0.06
+#define PIN_LED2 (0 + 6) // Just here for completeness
+#define RGBLED_RED (0 + 8) // Red of RGB P0.08
+#define RGBLED_GREEN (32 + 9) // Green of RGB P1.09
+#define RGBLED_BLUE (0 + 12) // Blue of RGB P0.12
+#define RGBLED_CA // comment out this line if you have a common cathode type, as defined use common anode logic
#define LED_BUILTIN PIN_LED1
#define LED_CONN PIN_LED2
@@ -168,4 +164,4 @@ static const uint8_t SCK = PIN_SPI_SCK;
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/
-#endif
\ No newline at end of file
+#endif
diff --git a/variants/betafpv_2400_tx_micro/platformio.ini b/variants/betafpv_2400_tx_micro/platformio.ini
index 82fe2a9e4..531e8532d 100644
--- a/variants/betafpv_2400_tx_micro/platformio.ini
+++ b/variants/betafpv_2400_tx_micro/platformio.ini
@@ -15,4 +15,4 @@ upload_protocol = esptool
upload_speed = 460800
lib_deps =
${esp32_base.lib_deps}
- makuna/NeoPixelBus@^2.7.1
+ adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
diff --git a/variants/betafpv_2400_tx_micro/variant.h b/variants/betafpv_2400_tx_micro/variant.h
index 8c615d168..fd06183ee 100644
--- a/variants/betafpv_2400_tx_micro/variant.h
+++ b/variants/betafpv_2400_tx_micro/variant.h
@@ -1,5 +1,4 @@
// https://betafpv.com/products/elrs-micro-tx-module
-#include
// 0.96" OLED
#define I2C_SDA 22
@@ -15,7 +14,11 @@
#define LORA_CS 5
#define RF95_FAN_EN 17
-#define LED_PIN 16 // This is a LED_WS2812 not a standard LED
+// #define LED_PIN 16 // This is a LED_WS2812 not a standard LED
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 16 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
#define BUTTON_PIN 25
#define BUTTON_NEED_PULLUP
@@ -31,4 +34,4 @@
#define SX128X_TXEN 26
#define SX128X_RXEN 27
#define SX128X_RESET LORA_RESET
-#define SX128X_MAX_POWER 13
+#define SX128X_MAX_POWER 13
\ No newline at end of file
diff --git a/variants/esp32-s3-pico/platformio.ini b/variants/esp32-s3-pico/platformio.ini
index ef737d98a..ff77c30e0 100644
--- a/variants/esp32-s3-pico/platformio.ini
+++ b/variants/esp32-s3-pico/platformio.ini
@@ -22,4 +22,4 @@ build_flags = ${esp32_base.build_flags}
lib_deps = ${esp32s3_base.lib_deps}
zinggjm/GxEPD2@^1.5.3
- ;adafruit/Adafruit NeoPixel@^1.10.7
+ adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
diff --git a/variants/esp32-s3-pico/variant.h b/variants/esp32-s3-pico/variant.h
index 87378d378..bfcb6059d 100644
--- a/variants/esp32-s3-pico/variant.h
+++ b/variants/esp32-s3-pico/variant.h
@@ -10,6 +10,10 @@
// #define LED_PIN PIN_LED
// Board has RGB LED 21
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 21 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
// The usbPower state is revered ?
// DEBUG | ??:??:?? 365 [Power] Battery: usbPower=0, isCharging=0, batMv=4116, batPct=90
diff --git a/variants/lora_relay_v1/platformio.ini b/variants/lora_relay_v1/platformio.ini
index 77402aadc..8660bf64a 100644
--- a/variants/lora_relay_v1/platformio.ini
+++ b/variants/lora_relay_v1/platformio.ini
@@ -20,4 +20,5 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/lora_relay_v1>
lib_deps =
${nrf52840_base.lib_deps}
sparkfun/SparkFun BQ27441 LiPo Fuel Gauge Arduino Library@^1.1.0
- bodmer/TFT_eSPI@^2.4.76
\ No newline at end of file
+ bodmer/TFT_eSPI@^2.4.76
+ adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
diff --git a/variants/lora_relay_v1/variant.h b/variants/lora_relay_v1/variant.h
index 9cfb69337..54bc87b68 100644
--- a/variants/lora_relay_v1/variant.h
+++ b/variants/lora_relay_v1/variant.h
@@ -44,7 +44,11 @@ extern "C" {
// LEDs
#define PIN_LED1 (3)
#define PIN_LED2 (4)
-#define PIN_NEOPIXEL (8)
+// #define PIN_NEOPIXEL (8)
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 8 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
#define LED_BUILTIN PIN_LED1
#define LED_CONN PIN_LED2
diff --git a/variants/lora_relay_v2/platformio.ini b/variants/lora_relay_v2/platformio.ini
index 4439d8a46..cd2109f00 100644
--- a/variants/lora_relay_v2/platformio.ini
+++ b/variants/lora_relay_v2/platformio.ini
@@ -23,3 +23,4 @@ lib_deps =
${nrf52840_base.lib_deps}
sparkfun/SparkFun BQ27441 LiPo Fuel Gauge Arduino Library@^1.1.0
bodmer/TFT_eSPI@^2.4.76
+ adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
diff --git a/variants/lora_relay_v2/variant.h b/variants/lora_relay_v2/variant.h
index 3afe8620e..6ef7ad7d6 100644
--- a/variants/lora_relay_v2/variant.h
+++ b/variants/lora_relay_v2/variant.h
@@ -61,7 +61,12 @@ extern "C" {
// LEDs
#define PIN_LED1 (3)
#define PIN_LED2 (4)
-#define PIN_NEOPIXEL (8)
+// #define PIN_NEOPIXEL (8)
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 8 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
+
#define PIN_BUZZER (40)
#define LED_BUILTIN PIN_LED1
diff --git a/variants/my_esp32s3_diy_eink/platformio.ini b/variants/my_esp32s3_diy_eink/platformio.ini
index 966bc580e..e81f2c1ab 100644
--- a/variants/my_esp32s3_diy_eink/platformio.ini
+++ b/variants/my_esp32s3_diy_eink/platformio.ini
@@ -13,7 +13,7 @@ platform_packages =
lib_deps =
${esp32_base.lib_deps}
zinggjm/GxEPD2@^1.5.1
- adafruit/Adafruit NeoPixel@^1.10.7
+ adafruit/Adafruit NeoPixel @ ^1.12.0
build_unflags = -DARDUINO_USB_MODE=1
build_flags =
;${esp32_base.build_flags} -D MY_ESP32S3_DIY -I variants/my_esp32s3_diy_eink
@@ -24,4 +24,4 @@ build_flags =
-DEINK_HEIGHT=128
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
- -DARDUINO_USB_MODE=0
+ -DARDUINO_USB_MODE=0
\ No newline at end of file
diff --git a/variants/my_esp32s3_diy_eink/variant.h b/variants/my_esp32s3_diy_eink/variant.h
index 516fa7f34..024f912dd 100644
--- a/variants/my_esp32s3_diy_eink/variant.h
+++ b/variants/my_esp32s3_diy_eink/variant.h
@@ -12,6 +12,10 @@
#define I2C_SCL 17 // 2
// #define LED_PIN 38 // This is a RGB LED not a standard LED
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 38 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
#define BUTTON_PIN 0 // This is the BOOT button
#define BUTTON_NEED_PULLUP
diff --git a/variants/my_esp32s3_diy_oled/platformio.ini b/variants/my_esp32s3_diy_oled/platformio.ini
index 9b8b09f7f..2d7a5cd91 100644
--- a/variants/my_esp32s3_diy_oled/platformio.ini
+++ b/variants/my_esp32s3_diy_oled/platformio.ini
@@ -12,11 +12,11 @@ platform_packages =
tool-esptoolpy@^1.40500.0
lib_deps =
${esp32_base.lib_deps}
- adafruit/Adafruit NeoPixel@^1.10.7
+ adafruit/Adafruit NeoPixel @ ^1.12.0
build_unflags = -DARDUINO_USB_MODE=1
build_flags =
;${esp32_base.build_flags} -D MY_ESP32S3_DIY -I variants/my_esp32s3_diy_oled
${esp32_base.build_flags} -D PRIVATE_HW -I variants/my_esp32s3_diy_oled
-DBOARD_HAS_PSRAM
-mfix-esp32-psram-cache-issue
- -DARDUINO_USB_MODE=0
+ -DARDUINO_USB_MODE=0
\ No newline at end of file
diff --git a/variants/my_esp32s3_diy_oled/variant.h b/variants/my_esp32s3_diy_oled/variant.h
index 6dd18c236..8a3a39003 100644
--- a/variants/my_esp32s3_diy_oled/variant.h
+++ b/variants/my_esp32s3_diy_oled/variant.h
@@ -12,6 +12,10 @@
#define I2C_SCL 17 // 2
// #define LED_PIN 38 // This is a RGB LED not a standard LED
+#define HAS_NEOPIXEL // Enable the use of neopixels
+#define NEOPIXEL_COUNT 1 // How many neopixels are connected
+#define NEOPIXEL_DATA 38 // gpio pin used to send data to the neopixels
+#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
#define BUTTON_PIN 0 // This is the BOOT button
#define BUTTON_NEED_PULLUP
@@ -53,4 +57,4 @@
// #define PIN_EINK_DC 1
// #define PIN_EINK_RES (-1)
// #define PIN_EINK_SCLK 5
-// #define PIN_EINK_MOSI 6
+// #define PIN_EINK_MOSI 6
\ No newline at end of file
diff --git a/variants/rak11310/variant.h b/variants/rak11310/variant.h
index ba3d4fed7..f9dcbd91a 100644
--- a/variants/rak11310/variant.h
+++ b/variants/rak11310/variant.h
@@ -14,7 +14,7 @@
#define BATTERY_PIN 26
#define BATTERY_SENSE_RESOLUTION_BITS ADC_RESOLUTION
// ratio of voltage divider = 3.0 (R17=200k, R18=100k)
-#define ADC_MULTIPLIER 3.1 // 3.0 + a bit for being optimistic
+#define ADC_MULTIPLIER 1.84
#define DETECTION_SENSOR_EN 28
@@ -47,4 +47,4 @@
// DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
-#endif
\ No newline at end of file
+#endif
diff --git a/variants/unphone/platformio.ini b/variants/unphone/platformio.ini
index dad9a7177..e4a92fe4c 100644
--- a/variants/unphone/platformio.ini
+++ b/variants/unphone/platformio.ini
@@ -13,6 +13,7 @@ build_unflags =
-D ARDUINO_USB_MODE
build_flags = ${esp32_base.build_flags}
+ ;-D BOARD_HAS_PSRAM // what's up with this - doesn't seem to be recognised at boot
-D UNPHONE
-I variants/unphone
-D ARDUINO_USB_MODE=0
@@ -27,4 +28,5 @@ build_src_filter = ${esp32_base.build_src_filter} +<../variants/unphone>
lib_deps = ${esp32s3_base.lib_deps}
lovyan03/LovyanGFX @ ^1.1.8
- https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic @ ^9.0.0
\ No newline at end of file
+ https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic @ ^9.0.0
+ adafruit/Adafruit NeoPixel @ ^1.12.0
\ No newline at end of file
diff --git a/variants/unphone/variant.cpp b/variants/unphone/variant.cpp
index 3f6d1c54d..7884f82e3 100644
--- a/variants/unphone/variant.cpp
+++ b/variants/unphone/variant.cpp
@@ -10,6 +10,7 @@ void initVariant()
unphone.printWakeupReason(); // what woke us up? (stored, not printed :|)
unphone.checkPowerSwitch(); // if power switch is off, shutdown
unphone.backlight(false); // setup backlight and make sure its off
+ unphone.expanderPower(true); // enable power to expander / hat / sheild
for (int i = 0; i < 3; i++) { // buzz a bit
unphone.vibe(true);