mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-29 21:22:03 +00:00
Compare commits
13 Commits
test/ai-sl
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b18742c211 | ||
|
|
03084f6d3b | ||
|
|
94d7b71aa8 | ||
|
|
415686dd06 | ||
|
|
b2f2f6b305 | ||
|
|
df400850c1 | ||
|
|
6ab2f02dbc | ||
|
|
d7d6fe7f0f | ||
|
|
d44ceb6eb2 | ||
|
|
4fd0a8276b | ||
|
|
1d219a93ab | ||
|
|
f710cd6ecb | ||
|
|
571c1ac34c |
3
.github/workflows/models_pr_triage.yml
vendored
3
.github/workflows/models_pr_triage.yml
vendored
@@ -88,9 +88,10 @@ jobs:
|
|||||||
|
|
||||||
# ─────────────────────────────────────────────────────────────────────────
|
# ─────────────────────────────────────────────────────────────────────────
|
||||||
# Step 3: Auto-label PR type (bugfix/hardware-support/enhancement)
|
# Step 3: Auto-label PR type (bugfix/hardware-support/enhancement)
|
||||||
|
# Only skip for spam/ai-generated; still classify needs-review PRs
|
||||||
# ─────────────────────────────────────────────────────────────────────────
|
# ─────────────────────────────────────────────────────────────────────────
|
||||||
- name: Classify PR for labeling
|
- name: Classify PR for labeling
|
||||||
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '')
|
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && steps.quality.outputs.response != 'spam' && steps.quality.outputs.response != 'ai-generated'
|
||||||
uses: actions/ai-inference@v2
|
uses: actions/ai-inference@v2
|
||||||
id: classify
|
id: classify
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ build_flags = -Wno-missing-field-initializers
|
|||||||
-DMESHTASTIC_EXCLUDE_GENERIC_THREAD_MODULE=1
|
-DMESHTASTIC_EXCLUDE_GENERIC_THREAD_MODULE=1
|
||||||
-DMESHTASTIC_EXCLUDE_POWERMON=1
|
-DMESHTASTIC_EXCLUDE_POWERMON=1
|
||||||
-D MAX_THREADS=40 ; As we've split modules, we have more threads to manage
|
-D MAX_THREADS=40 ; As we've split modules, we have more threads to manage
|
||||||
|
-DLED_BUILTIN=-1
|
||||||
#-DBUILD_EPOCH=$UNIX_TIME ; set in platformio-custom.py now
|
#-DBUILD_EPOCH=$UNIX_TIME ; set in platformio-custom.py now
|
||||||
#-D OLED_PL=1
|
#-D OLED_PL=1
|
||||||
#-D DEBUG_HEAP=1 ; uncomment to add free heap space / memory leak debugging logs
|
#-D DEBUG_HEAP=1 ; uncomment to add free heap space / memory leak debugging logs
|
||||||
|
|||||||
@@ -1,8 +1,59 @@
|
|||||||
#include "InputBroker.h"
|
#include "InputBroker.h"
|
||||||
#include "PowerFSM.h" // needed for event trigger
|
#include "PowerFSM.h" // needed for event trigger
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
|
#include "graphics/Screen.h"
|
||||||
#include "modules/ExternalNotificationModule.h"
|
#include "modules/ExternalNotificationModule.h"
|
||||||
|
|
||||||
|
#if ARCH_PORTDUINO
|
||||||
|
#include "input/LinuxInputImpl.h"
|
||||||
|
#include "input/SeesawRotary.h"
|
||||||
|
#include "platform/portduino/PortduinoGlue.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
|
||||||
|
#include "input/ExpressLRSFiveWay.h"
|
||||||
|
#include "input/RotaryEncoderImpl.h"
|
||||||
|
#include "input/RotaryEncoderInterruptImpl1.h"
|
||||||
|
#include "input/SerialKeyboardImpl.h"
|
||||||
|
#include "input/UpDownInterruptImpl1.h"
|
||||||
|
#include "input/i2cButton.h"
|
||||||
|
#if HAS_TRACKBALL
|
||||||
|
#include "input/TrackballInterruptImpl1.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "modules/StatusLEDModule.h"
|
||||||
|
|
||||||
|
#if !MESHTASTIC_EXCLUDE_I2C
|
||||||
|
#include "input/cardKbI2cImpl.h"
|
||||||
|
#endif
|
||||||
|
#include "input/kbMatrixImpl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAS_BUTTON || defined(ARCH_PORTDUINO)
|
||||||
|
#include "input/ButtonThread.h"
|
||||||
|
|
||||||
|
#if defined(BUTTON_PIN_TOUCH)
|
||||||
|
ButtonThread *TouchButtonThread = nullptr;
|
||||||
|
#if defined(TTGO_T_ECHO_PLUS) && defined(PIN_EINK_EN)
|
||||||
|
static bool touchBacklightWasOn = false;
|
||||||
|
static bool touchBacklightActive = false;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BUTTON_PIN) || defined(ARCH_PORTDUINO)
|
||||||
|
ButtonThread *UserButtonThread = nullptr;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ALT_BUTTON_PIN)
|
||||||
|
ButtonThread *BackButtonThread = nullptr;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CANCEL_BUTTON_PIN)
|
||||||
|
ButtonThread *CancelButtonThread = nullptr;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
InputBroker *inputBroker = nullptr;
|
InputBroker *inputBroker = nullptr;
|
||||||
|
|
||||||
InputBroker::InputBroker()
|
InputBroker::InputBroker()
|
||||||
@@ -74,3 +125,262 @@ void InputBroker::pollSoonWorker(void *p)
|
|||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void InputBroker::Init()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef BUTTON_PIN
|
||||||
|
#ifdef ARCH_ESP32
|
||||||
|
|
||||||
|
#if ESP_ARDUINO_VERSION_MAJOR >= 3
|
||||||
|
#ifdef BUTTON_NEED_PULLUP
|
||||||
|
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT_PULLUP);
|
||||||
|
#else
|
||||||
|
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT); // default to BUTTON_PIN
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT); // default to BUTTON_PIN
|
||||||
|
#ifdef BUTTON_NEED_PULLUP
|
||||||
|
gpio_pullup_en((gpio_num_t)(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN));
|
||||||
|
delay(10);
|
||||||
|
#endif
|
||||||
|
#ifdef BUTTON_NEED_PULLUP2
|
||||||
|
gpio_pullup_en((gpio_num_t)BUTTON_NEED_PULLUP2);
|
||||||
|
delay(10);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// buttons are now inputBroker, so have to come after setupModules
|
||||||
|
#if HAS_BUTTON
|
||||||
|
int pullup_sense = 0;
|
||||||
|
#ifdef INPUT_PULLUP_SENSE
|
||||||
|
// Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did
|
||||||
|
#ifdef BUTTON_SENSE_TYPE
|
||||||
|
pullup_sense = BUTTON_SENSE_TYPE;
|
||||||
|
#else
|
||||||
|
pullup_sense = INPUT_PULLUP_SENSE;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if defined(ARCH_PORTDUINO)
|
||||||
|
|
||||||
|
if (portduino_config.userButtonPin.enabled) {
|
||||||
|
|
||||||
|
LOG_DEBUG("Use GPIO%02d for button", portduino_config.userButtonPin.pin);
|
||||||
|
UserButtonThread = new ButtonThread("UserButton");
|
||||||
|
if (screen) {
|
||||||
|
ButtonConfig config;
|
||||||
|
config.pinNumber = (uint8_t)portduino_config.userButtonPin.pin;
|
||||||
|
config.activeLow = true;
|
||||||
|
config.activePullup = true;
|
||||||
|
config.pullupSense = INPUT_PULLUP;
|
||||||
|
config.intRoutine = []() {
|
||||||
|
UserButtonThread->userButton.tick();
|
||||||
|
UserButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
config.singlePress = INPUT_BROKER_USER_PRESS;
|
||||||
|
config.longPress = INPUT_BROKER_SELECT;
|
||||||
|
UserButtonThread->initButton(config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BUTTON_PIN_TOUCH
|
||||||
|
TouchButtonThread = new ButtonThread("BackButton");
|
||||||
|
ButtonConfig touchConfig;
|
||||||
|
touchConfig.pinNumber = BUTTON_PIN_TOUCH;
|
||||||
|
touchConfig.activeLow = true;
|
||||||
|
touchConfig.activePullup = true;
|
||||||
|
touchConfig.pullupSense = pullup_sense;
|
||||||
|
touchConfig.intRoutine = []() {
|
||||||
|
TouchButtonThread->userButton.tick();
|
||||||
|
TouchButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
touchConfig.singlePress = INPUT_BROKER_NONE;
|
||||||
|
touchConfig.longPress = INPUT_BROKER_BACK;
|
||||||
|
#if defined(TTGO_T_ECHO_PLUS) && defined(PIN_EINK_EN)
|
||||||
|
// On T-Echo Plus the touch pad should only drive the backlight, not UI navigation/sounds
|
||||||
|
touchConfig.longPress = INPUT_BROKER_NONE;
|
||||||
|
touchConfig.suppressLeadUpSound = true;
|
||||||
|
touchConfig.onPress = []() {
|
||||||
|
touchBacklightWasOn = uiconfig.screen_brightness == 1;
|
||||||
|
if (!touchBacklightWasOn) {
|
||||||
|
digitalWrite(PIN_EINK_EN, HIGH);
|
||||||
|
}
|
||||||
|
touchBacklightActive = true;
|
||||||
|
};
|
||||||
|
touchConfig.onRelease = []() {
|
||||||
|
if (touchBacklightActive && !touchBacklightWasOn) {
|
||||||
|
digitalWrite(PIN_EINK_EN, LOW);
|
||||||
|
}
|
||||||
|
touchBacklightActive = false;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
TouchButtonThread->initButton(touchConfig);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CANCEL_BUTTON_PIN)
|
||||||
|
// Buttons. Moved here cause we need NodeDB to be initialized
|
||||||
|
CancelButtonThread = new ButtonThread("CancelButton");
|
||||||
|
ButtonConfig cancelConfig;
|
||||||
|
cancelConfig.pinNumber = CANCEL_BUTTON_PIN;
|
||||||
|
cancelConfig.activeLow = CANCEL_BUTTON_ACTIVE_LOW;
|
||||||
|
cancelConfig.activePullup = CANCEL_BUTTON_ACTIVE_PULLUP;
|
||||||
|
cancelConfig.pullupSense = pullup_sense;
|
||||||
|
cancelConfig.intRoutine = []() {
|
||||||
|
CancelButtonThread->userButton.tick();
|
||||||
|
CancelButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
cancelConfig.singlePress = INPUT_BROKER_CANCEL;
|
||||||
|
cancelConfig.longPress = INPUT_BROKER_SHUTDOWN;
|
||||||
|
cancelConfig.longPressTime = 4000;
|
||||||
|
CancelButtonThread->initButton(cancelConfig);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ALT_BUTTON_PIN)
|
||||||
|
// Buttons. Moved here cause we need NodeDB to be initialized
|
||||||
|
BackButtonThread = new ButtonThread("BackButton");
|
||||||
|
ButtonConfig backConfig;
|
||||||
|
backConfig.pinNumber = ALT_BUTTON_PIN;
|
||||||
|
backConfig.activeLow = ALT_BUTTON_ACTIVE_LOW;
|
||||||
|
backConfig.activePullup = ALT_BUTTON_ACTIVE_PULLUP;
|
||||||
|
backConfig.pullupSense = pullup_sense;
|
||||||
|
backConfig.intRoutine = []() {
|
||||||
|
BackButtonThread->userButton.tick();
|
||||||
|
BackButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
backConfig.singlePress = INPUT_BROKER_ALT_PRESS;
|
||||||
|
backConfig.longPress = INPUT_BROKER_ALT_LONG;
|
||||||
|
backConfig.longPressTime = 500;
|
||||||
|
BackButtonThread->initButton(backConfig);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BUTTON_PIN)
|
||||||
|
#if defined(USERPREFS_BUTTON_PIN)
|
||||||
|
int _pinNum = config.device.button_gpio ? config.device.button_gpio : USERPREFS_BUTTON_PIN;
|
||||||
|
#else
|
||||||
|
int _pinNum = config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN;
|
||||||
|
#endif
|
||||||
|
#ifndef BUTTON_ACTIVE_LOW
|
||||||
|
#define BUTTON_ACTIVE_LOW true
|
||||||
|
#endif
|
||||||
|
#ifndef BUTTON_ACTIVE_PULLUP
|
||||||
|
#define BUTTON_ACTIVE_PULLUP true
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Buttons. Moved here cause we need NodeDB to be initialized
|
||||||
|
// If your variant.h has a BUTTON_PIN defined, go ahead and define BUTTON_ACTIVE_LOW and BUTTON_ACTIVE_PULLUP
|
||||||
|
UserButtonThread = new ButtonThread("UserButton");
|
||||||
|
if (screen) {
|
||||||
|
ButtonConfig userConfig;
|
||||||
|
userConfig.pinNumber = (uint8_t)_pinNum;
|
||||||
|
userConfig.activeLow = BUTTON_ACTIVE_LOW;
|
||||||
|
userConfig.activePullup = BUTTON_ACTIVE_PULLUP;
|
||||||
|
userConfig.pullupSense = pullup_sense;
|
||||||
|
userConfig.intRoutine = []() {
|
||||||
|
UserButtonThread->userButton.tick();
|
||||||
|
UserButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
userConfig.singlePress = INPUT_BROKER_USER_PRESS;
|
||||||
|
userConfig.longPress = INPUT_BROKER_SELECT;
|
||||||
|
userConfig.longPressTime = 500;
|
||||||
|
userConfig.longLongPress = INPUT_BROKER_SHUTDOWN;
|
||||||
|
UserButtonThread->initButton(userConfig);
|
||||||
|
} else {
|
||||||
|
ButtonConfig userConfigNoScreen;
|
||||||
|
userConfigNoScreen.pinNumber = (uint8_t)_pinNum;
|
||||||
|
userConfigNoScreen.activeLow = BUTTON_ACTIVE_LOW;
|
||||||
|
userConfigNoScreen.activePullup = BUTTON_ACTIVE_PULLUP;
|
||||||
|
userConfigNoScreen.pullupSense = pullup_sense;
|
||||||
|
userConfigNoScreen.intRoutine = []() {
|
||||||
|
UserButtonThread->userButton.tick();
|
||||||
|
UserButtonThread->setIntervalFromNow(0);
|
||||||
|
runASAP = true;
|
||||||
|
BaseType_t higherWake = 0;
|
||||||
|
concurrency::mainDelay.interruptFromISR(&higherWake);
|
||||||
|
};
|
||||||
|
userConfigNoScreen.singlePress = INPUT_BROKER_USER_PRESS;
|
||||||
|
userConfigNoScreen.longPress = INPUT_BROKER_NONE;
|
||||||
|
userConfigNoScreen.longPressTime = 500;
|
||||||
|
userConfigNoScreen.longLongPress = INPUT_BROKER_SHUTDOWN;
|
||||||
|
userConfigNoScreen.doublePress = INPUT_BROKER_SEND_PING;
|
||||||
|
userConfigNoScreen.triplePress = INPUT_BROKER_GPS_TOGGLE;
|
||||||
|
UserButtonThread->initButton(userConfigNoScreen);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (HAS_BUTTON || ARCH_PORTDUINO) && !MESHTASTIC_EXCLUDE_INPUTBROKER
|
||||||
|
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
||||||
|
#if defined(T_LORA_PAGER)
|
||||||
|
// use a special FSM based rotary encoder version for T-LoRa Pager
|
||||||
|
rotaryEncoderImpl = new RotaryEncoderImpl();
|
||||||
|
if (!rotaryEncoderImpl->init()) {
|
||||||
|
delete rotaryEncoderImpl;
|
||||||
|
rotaryEncoderImpl = nullptr;
|
||||||
|
}
|
||||||
|
#elif defined(INPUTDRIVER_ENCODER_TYPE) && (INPUTDRIVER_ENCODER_TYPE == 2)
|
||||||
|
upDownInterruptImpl1 = new UpDownInterruptImpl1();
|
||||||
|
if (!upDownInterruptImpl1->init()) {
|
||||||
|
delete upDownInterruptImpl1;
|
||||||
|
upDownInterruptImpl1 = nullptr;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
rotaryEncoderInterruptImpl1 = new RotaryEncoderInterruptImpl1();
|
||||||
|
if (!rotaryEncoderInterruptImpl1->init()) {
|
||||||
|
delete rotaryEncoderInterruptImpl1;
|
||||||
|
rotaryEncoderInterruptImpl1 = nullptr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
cardKbI2cImpl = new CardKbI2cImpl();
|
||||||
|
cardKbI2cImpl->init();
|
||||||
|
#if defined(M5STACK_UNITC6L)
|
||||||
|
i2cButton = new i2cButtonThread("i2cButtonThread");
|
||||||
|
#endif
|
||||||
|
#ifdef INPUTBROKER_MATRIX_TYPE
|
||||||
|
kbMatrixImpl = new KbMatrixImpl();
|
||||||
|
kbMatrixImpl->init();
|
||||||
|
#endif // INPUTBROKER_MATRIX_TYPE
|
||||||
|
#ifdef INPUTBROKER_SERIAL_TYPE
|
||||||
|
aSerialKeyboardImpl = new SerialKeyboardImpl();
|
||||||
|
aSerialKeyboardImpl->init();
|
||||||
|
#endif // INPUTBROKER_MATRIX_TYPE
|
||||||
|
}
|
||||||
|
#endif // HAS_BUTTON
|
||||||
|
#if ARCH_PORTDUINO
|
||||||
|
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR && portduino_config.i2cdev != "") {
|
||||||
|
seesawRotary = new SeesawRotary("SeesawRotary");
|
||||||
|
if (!seesawRotary->init()) {
|
||||||
|
delete seesawRotary;
|
||||||
|
seesawRotary = nullptr;
|
||||||
|
}
|
||||||
|
aLinuxInputImpl = new LinuxInputImpl();
|
||||||
|
aLinuxInputImpl->init();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !MESHTASTIC_EXCLUDE_INPUTBROKER && HAS_TRACKBALL
|
||||||
|
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
||||||
|
trackballInterruptImpl1 = new TrackballInterruptImpl1();
|
||||||
|
trackballInterruptImpl1->init(TB_DOWN, TB_UP, TB_LEFT, TB_RIGHT, TB_PRESS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef INPUTBROKER_EXPRESSLRSFIVEWAY_TYPE
|
||||||
|
expressLRSFiveWayInput = new ExpressLRSFiveWay();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Observer.h"
|
#include "Observer.h"
|
||||||
|
#include "concurrency/OSThread.h"
|
||||||
#include "freertosinc.h"
|
#include "freertosinc.h"
|
||||||
|
|
||||||
#ifdef InputBrokerDebug
|
#ifdef InputBrokerDebug
|
||||||
@@ -76,6 +77,7 @@ class InputBroker : public Observable<const InputEvent *>
|
|||||||
void queueInputEvent(const InputEvent *event);
|
void queueInputEvent(const InputEvent *event);
|
||||||
void processInputEventQueue();
|
void processInputEventQueue();
|
||||||
#endif
|
#endif
|
||||||
|
void Init();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int handleInputEvent(const InputEvent *event);
|
int handleInputEvent(const InputEvent *event);
|
||||||
@@ -90,3 +92,4 @@ class InputBroker : public Observable<const InputEvent *>
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern InputBroker *inputBroker;
|
extern InputBroker *inputBroker;
|
||||||
|
extern bool runASAP;
|
||||||
226
src/main.cpp
226
src/main.cpp
@@ -120,31 +120,6 @@ void printPartitionTable()
|
|||||||
#endif // DEBUG_PARTITION_TABLE
|
#endif // DEBUG_PARTITION_TABLE
|
||||||
#endif // ARCH_ESP32
|
#endif // ARCH_ESP32
|
||||||
|
|
||||||
#if HAS_BUTTON || defined(ARCH_PORTDUINO)
|
|
||||||
#include "input/ButtonThread.h"
|
|
||||||
|
|
||||||
#if defined(BUTTON_PIN_TOUCH)
|
|
||||||
ButtonThread *TouchButtonThread = nullptr;
|
|
||||||
#if defined(TTGO_T_ECHO_PLUS) && defined(PIN_EINK_EN)
|
|
||||||
static bool touchBacklightWasOn = false;
|
|
||||||
static bool touchBacklightActive = false;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(BUTTON_PIN) || defined(ARCH_PORTDUINO)
|
|
||||||
ButtonThread *UserButtonThread = nullptr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ALT_BUTTON_PIN)
|
|
||||||
ButtonThread *BackButtonThread = nullptr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CANCEL_BUTTON_PIN)
|
|
||||||
ButtonThread *CancelButtonThread = nullptr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "AmbientLightingThread.h"
|
#include "AmbientLightingThread.h"
|
||||||
#include "PowerFSMThread.h"
|
#include "PowerFSMThread.h"
|
||||||
|
|
||||||
@@ -509,30 +484,6 @@ void setup()
|
|||||||
LOG_INFO("Wait for peripherals to stabilize");
|
LOG_INFO("Wait for peripherals to stabilize");
|
||||||
delay(PERIPHERAL_WARMUP_MS);
|
delay(PERIPHERAL_WARMUP_MS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUTTON_PIN
|
|
||||||
#ifdef ARCH_ESP32
|
|
||||||
|
|
||||||
#if ESP_ARDUINO_VERSION_MAJOR >= 3
|
|
||||||
#ifdef BUTTON_NEED_PULLUP
|
|
||||||
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT_PULLUP);
|
|
||||||
#else
|
|
||||||
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT); // default to BUTTON_PIN
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
pinMode(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN, INPUT); // default to BUTTON_PIN
|
|
||||||
#ifdef BUTTON_NEED_PULLUP
|
|
||||||
gpio_pullup_en((gpio_num_t)(config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN));
|
|
||||||
delay(10);
|
|
||||||
#endif
|
|
||||||
#ifdef BUTTON_NEED_PULLUP2
|
|
||||||
gpio_pullup_en((gpio_num_t)BUTTON_NEED_PULLUP2);
|
|
||||||
delay(10);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
initSPI();
|
initSPI();
|
||||||
|
|
||||||
OSThread::setup();
|
OSThread::setup();
|
||||||
@@ -999,180 +950,9 @@ void setup()
|
|||||||
nodeDB->hasWarned = true;
|
nodeDB->hasWarned = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
|
||||||
// buttons are now inputBroker, so have to come after setupModules
|
if (inputBroker)
|
||||||
#if HAS_BUTTON
|
inputBroker->Init();
|
||||||
int pullup_sense = 0;
|
|
||||||
#ifdef INPUT_PULLUP_SENSE
|
|
||||||
// Some platforms (nrf52) have a SENSE variant which allows wake from sleep - override what OneButton did
|
|
||||||
#ifdef BUTTON_SENSE_TYPE
|
|
||||||
pullup_sense = BUTTON_SENSE_TYPE;
|
|
||||||
#else
|
|
||||||
pullup_sense = INPUT_PULLUP_SENSE;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if defined(ARCH_PORTDUINO)
|
|
||||||
|
|
||||||
if (portduino_config.userButtonPin.enabled) {
|
|
||||||
|
|
||||||
LOG_DEBUG("Use GPIO%02d for button", portduino_config.userButtonPin.pin);
|
|
||||||
UserButtonThread = new ButtonThread("UserButton");
|
|
||||||
if (screen) {
|
|
||||||
ButtonConfig config;
|
|
||||||
config.pinNumber = (uint8_t)portduino_config.userButtonPin.pin;
|
|
||||||
config.activeLow = true;
|
|
||||||
config.activePullup = true;
|
|
||||||
config.pullupSense = INPUT_PULLUP;
|
|
||||||
config.intRoutine = []() {
|
|
||||||
UserButtonThread->userButton.tick();
|
|
||||||
UserButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
config.singlePress = INPUT_BROKER_USER_PRESS;
|
|
||||||
config.longPress = INPUT_BROKER_SELECT;
|
|
||||||
UserButtonThread->initButton(config);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BUTTON_PIN_TOUCH
|
|
||||||
TouchButtonThread = new ButtonThread("BackButton");
|
|
||||||
ButtonConfig touchConfig;
|
|
||||||
touchConfig.pinNumber = BUTTON_PIN_TOUCH;
|
|
||||||
touchConfig.activeLow = true;
|
|
||||||
touchConfig.activePullup = true;
|
|
||||||
touchConfig.pullupSense = pullup_sense;
|
|
||||||
touchConfig.intRoutine = []() {
|
|
||||||
TouchButtonThread->userButton.tick();
|
|
||||||
TouchButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
touchConfig.singlePress = INPUT_BROKER_NONE;
|
|
||||||
touchConfig.longPress = INPUT_BROKER_BACK;
|
|
||||||
#if defined(TTGO_T_ECHO_PLUS) && defined(PIN_EINK_EN)
|
|
||||||
// On T-Echo Plus the touch pad should only drive the backlight, not UI navigation/sounds
|
|
||||||
touchConfig.longPress = INPUT_BROKER_NONE;
|
|
||||||
touchConfig.suppressLeadUpSound = true;
|
|
||||||
touchConfig.onPress = []() {
|
|
||||||
touchBacklightWasOn = uiconfig.screen_brightness == 1;
|
|
||||||
if (!touchBacklightWasOn) {
|
|
||||||
digitalWrite(PIN_EINK_EN, HIGH);
|
|
||||||
}
|
|
||||||
touchBacklightActive = true;
|
|
||||||
};
|
|
||||||
touchConfig.onRelease = []() {
|
|
||||||
if (touchBacklightActive && !touchBacklightWasOn) {
|
|
||||||
digitalWrite(PIN_EINK_EN, LOW);
|
|
||||||
}
|
|
||||||
touchBacklightActive = false;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
TouchButtonThread->initButton(touchConfig);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CANCEL_BUTTON_PIN)
|
|
||||||
// Buttons. Moved here cause we need NodeDB to be initialized
|
|
||||||
CancelButtonThread = new ButtonThread("CancelButton");
|
|
||||||
ButtonConfig cancelConfig;
|
|
||||||
cancelConfig.pinNumber = CANCEL_BUTTON_PIN;
|
|
||||||
cancelConfig.activeLow = CANCEL_BUTTON_ACTIVE_LOW;
|
|
||||||
cancelConfig.activePullup = CANCEL_BUTTON_ACTIVE_PULLUP;
|
|
||||||
cancelConfig.pullupSense = pullup_sense;
|
|
||||||
cancelConfig.intRoutine = []() {
|
|
||||||
CancelButtonThread->userButton.tick();
|
|
||||||
CancelButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
cancelConfig.singlePress = INPUT_BROKER_CANCEL;
|
|
||||||
cancelConfig.longPress = INPUT_BROKER_SHUTDOWN;
|
|
||||||
cancelConfig.longPressTime = 4000;
|
|
||||||
CancelButtonThread->initButton(cancelConfig);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ALT_BUTTON_PIN)
|
|
||||||
// Buttons. Moved here cause we need NodeDB to be initialized
|
|
||||||
BackButtonThread = new ButtonThread("BackButton");
|
|
||||||
ButtonConfig backConfig;
|
|
||||||
backConfig.pinNumber = ALT_BUTTON_PIN;
|
|
||||||
backConfig.activeLow = ALT_BUTTON_ACTIVE_LOW;
|
|
||||||
backConfig.activePullup = ALT_BUTTON_ACTIVE_PULLUP;
|
|
||||||
backConfig.pullupSense = pullup_sense;
|
|
||||||
backConfig.intRoutine = []() {
|
|
||||||
BackButtonThread->userButton.tick();
|
|
||||||
BackButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
backConfig.singlePress = INPUT_BROKER_ALT_PRESS;
|
|
||||||
backConfig.longPress = INPUT_BROKER_ALT_LONG;
|
|
||||||
backConfig.longPressTime = 500;
|
|
||||||
BackButtonThread->initButton(backConfig);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(BUTTON_PIN)
|
|
||||||
#if defined(USERPREFS_BUTTON_PIN)
|
|
||||||
int _pinNum = config.device.button_gpio ? config.device.button_gpio : USERPREFS_BUTTON_PIN;
|
|
||||||
#else
|
|
||||||
int _pinNum = config.device.button_gpio ? config.device.button_gpio : BUTTON_PIN;
|
|
||||||
#endif
|
|
||||||
#ifndef BUTTON_ACTIVE_LOW
|
|
||||||
#define BUTTON_ACTIVE_LOW true
|
|
||||||
#endif
|
|
||||||
#ifndef BUTTON_ACTIVE_PULLUP
|
|
||||||
#define BUTTON_ACTIVE_PULLUP true
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Buttons. Moved here cause we need NodeDB to be initialized
|
|
||||||
// If your variant.h has a BUTTON_PIN defined, go ahead and define BUTTON_ACTIVE_LOW and BUTTON_ACTIVE_PULLUP
|
|
||||||
UserButtonThread = new ButtonThread("UserButton");
|
|
||||||
if (screen) {
|
|
||||||
ButtonConfig userConfig;
|
|
||||||
userConfig.pinNumber = (uint8_t)_pinNum;
|
|
||||||
userConfig.activeLow = BUTTON_ACTIVE_LOW;
|
|
||||||
userConfig.activePullup = BUTTON_ACTIVE_PULLUP;
|
|
||||||
userConfig.pullupSense = pullup_sense;
|
|
||||||
userConfig.intRoutine = []() {
|
|
||||||
UserButtonThread->userButton.tick();
|
|
||||||
UserButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
userConfig.singlePress = INPUT_BROKER_USER_PRESS;
|
|
||||||
userConfig.longPress = INPUT_BROKER_SELECT;
|
|
||||||
userConfig.longPressTime = 500;
|
|
||||||
userConfig.longLongPress = INPUT_BROKER_SHUTDOWN;
|
|
||||||
UserButtonThread->initButton(userConfig);
|
|
||||||
} else {
|
|
||||||
ButtonConfig userConfigNoScreen;
|
|
||||||
userConfigNoScreen.pinNumber = (uint8_t)_pinNum;
|
|
||||||
userConfigNoScreen.activeLow = BUTTON_ACTIVE_LOW;
|
|
||||||
userConfigNoScreen.activePullup = BUTTON_ACTIVE_PULLUP;
|
|
||||||
userConfigNoScreen.pullupSense = pullup_sense;
|
|
||||||
userConfigNoScreen.intRoutine = []() {
|
|
||||||
UserButtonThread->userButton.tick();
|
|
||||||
UserButtonThread->setIntervalFromNow(0);
|
|
||||||
runASAP = true;
|
|
||||||
BaseType_t higherWake = 0;
|
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
|
||||||
};
|
|
||||||
userConfigNoScreen.singlePress = INPUT_BROKER_USER_PRESS;
|
|
||||||
userConfigNoScreen.longPress = INPUT_BROKER_NONE;
|
|
||||||
userConfigNoScreen.longPressTime = 500;
|
|
||||||
userConfigNoScreen.longLongPress = INPUT_BROKER_SHUTDOWN;
|
|
||||||
userConfigNoScreen.doublePress = INPUT_BROKER_SEND_PING;
|
|
||||||
userConfigNoScreen.triplePress = INPUT_BROKER_GPS_TOGGLE;
|
|
||||||
UserButtonThread->initButton(userConfigNoScreen);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|||||||
@@ -17,12 +17,6 @@
|
|||||||
ErrorCode ReliableRouter::send(meshtastic_MeshPacket *p)
|
ErrorCode ReliableRouter::send(meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
if (p->want_ack) {
|
if (p->want_ack) {
|
||||||
// If someone asks for acks on broadcast, we need the hop limit to be at least one, so that first node that receives our
|
|
||||||
// message will rebroadcast. But asking for hop_limit 0 in that context means the client app has no preference on hop
|
|
||||||
// counts and we want this message to get through the whole mesh, so use the default.
|
|
||||||
if (p->hop_limit == 0) {
|
|
||||||
p->hop_limit = Default::getConfiguredOrDefaultHopLimit(config.lora.hop_limit);
|
|
||||||
}
|
|
||||||
DEBUG_HEAP_BEFORE;
|
DEBUG_HEAP_BEFORE;
|
||||||
auto copy = packetPool.allocCopy(*p);
|
auto copy = packetPool.allocCopy(*p);
|
||||||
DEBUG_HEAP_AFTER("ReliableRouter::send", copy);
|
DEBUG_HEAP_AFTER("ReliableRouter::send", copy);
|
||||||
|
|||||||
@@ -266,6 +266,13 @@ ErrorCode Router::sendLocal(meshtastic_MeshPacket *p, RxSource src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If someone asks for acks on broadcast, we need the hop limit to be at least one, so that first node that receives our
|
||||||
|
// message will rebroadcast. But asking for hop_limit 0 in that context means the client app has no preference on hop
|
||||||
|
// counts and we want this message to get through the whole mesh, so use the default.
|
||||||
|
if (src == RX_SRC_USER && p->want_ack && p->hop_limit == 0) {
|
||||||
|
p->hop_limit = Default::getConfiguredOrDefaultHopLimit(config.lora.hop_limit);
|
||||||
|
}
|
||||||
|
|
||||||
return send(p);
|
return send(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,8 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
|
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
|
||||||
#include "buzz/BuzzerFeedbackThread.h"
|
#include "buzz/BuzzerFeedbackThread.h"
|
||||||
#include "input/ExpressLRSFiveWay.h"
|
|
||||||
#include "input/InputBroker.h"
|
|
||||||
#include "input/RotaryEncoderImpl.h"
|
|
||||||
#include "input/RotaryEncoderInterruptImpl1.h"
|
|
||||||
#include "input/SerialKeyboardImpl.h"
|
|
||||||
#include "input/UpDownInterruptImpl1.h"
|
|
||||||
#include "input/i2cButton.h"
|
|
||||||
#include "modules/SystemCommandsModule.h"
|
|
||||||
#if HAS_TRACKBALL
|
|
||||||
#include "input/TrackballInterruptImpl1.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "modules/StatusLEDModule.h"
|
#include "modules/StatusLEDModule.h"
|
||||||
|
#include "modules/SystemCommandsModule.h"
|
||||||
#if !MESHTASTIC_EXCLUDE_I2C
|
|
||||||
#include "input/cardKbI2cImpl.h"
|
|
||||||
#endif
|
|
||||||
#include "input/kbMatrixImpl.h"
|
|
||||||
#endif
|
#endif
|
||||||
#if !MESHTASTIC_EXCLUDE_PKI
|
#if !MESHTASTIC_EXCLUDE_PKI
|
||||||
#include "KeyVerificationModule.h"
|
#include "KeyVerificationModule.h"
|
||||||
@@ -59,8 +43,6 @@
|
|||||||
#include "modules/WaypointModule.h"
|
#include "modules/WaypointModule.h"
|
||||||
#endif
|
#endif
|
||||||
#if ARCH_PORTDUINO
|
#if ARCH_PORTDUINO
|
||||||
#include "input/LinuxInputImpl.h"
|
|
||||||
#include "input/SeesawRotary.h"
|
|
||||||
#include "modules/Telemetry/HostMetrics.h"
|
#include "modules/Telemetry/HostMetrics.h"
|
||||||
#if !MESHTASTIC_EXCLUDE_STOREFORWARD
|
#if !MESHTASTIC_EXCLUDE_STOREFORWARD
|
||||||
#include "modules/StoreForwardModule.h"
|
#include "modules/StoreForwardModule.h"
|
||||||
@@ -109,6 +91,9 @@
|
|||||||
#include "modules/DropzoneModule.h"
|
#include "modules/DropzoneModule.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAS_HARDWARE_WATCHDOG)
|
||||||
|
#include "watchdog/watchdogThread.h"
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* Create module instances here. If you are adding a new module, you must 'new' it here (or somewhere else)
|
* Create module instances here. If you are adding a new module, you must 'new' it here (or somewhere else)
|
||||||
*/
|
*/
|
||||||
@@ -179,63 +164,6 @@ void setupModules()
|
|||||||
#endif
|
#endif
|
||||||
// Example: Put your module here
|
// Example: Put your module here
|
||||||
// new ReplyModule();
|
// new ReplyModule();
|
||||||
#if (HAS_BUTTON || ARCH_PORTDUINO) && !MESHTASTIC_EXCLUDE_INPUTBROKER
|
|
||||||
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
|
||||||
#if defined(T_LORA_PAGER)
|
|
||||||
// use a special FSM based rotary encoder version for T-LoRa Pager
|
|
||||||
rotaryEncoderImpl = new RotaryEncoderImpl();
|
|
||||||
if (!rotaryEncoderImpl->init()) {
|
|
||||||
delete rotaryEncoderImpl;
|
|
||||||
rotaryEncoderImpl = nullptr;
|
|
||||||
}
|
|
||||||
#elif defined(INPUTDRIVER_ENCODER_TYPE) && (INPUTDRIVER_ENCODER_TYPE == 2)
|
|
||||||
upDownInterruptImpl1 = new UpDownInterruptImpl1();
|
|
||||||
if (!upDownInterruptImpl1->init()) {
|
|
||||||
delete upDownInterruptImpl1;
|
|
||||||
upDownInterruptImpl1 = nullptr;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
rotaryEncoderInterruptImpl1 = new RotaryEncoderInterruptImpl1();
|
|
||||||
if (!rotaryEncoderInterruptImpl1->init()) {
|
|
||||||
delete rotaryEncoderInterruptImpl1;
|
|
||||||
rotaryEncoderInterruptImpl1 = nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
cardKbI2cImpl = new CardKbI2cImpl();
|
|
||||||
cardKbI2cImpl->init();
|
|
||||||
#if defined(M5STACK_UNITC6L)
|
|
||||||
i2cButton = new i2cButtonThread("i2cButtonThread");
|
|
||||||
#endif
|
|
||||||
#ifdef INPUTBROKER_MATRIX_TYPE
|
|
||||||
kbMatrixImpl = new KbMatrixImpl();
|
|
||||||
kbMatrixImpl->init();
|
|
||||||
#endif // INPUTBROKER_MATRIX_TYPE
|
|
||||||
#ifdef INPUTBROKER_SERIAL_TYPE
|
|
||||||
aSerialKeyboardImpl = new SerialKeyboardImpl();
|
|
||||||
aSerialKeyboardImpl->init();
|
|
||||||
#endif // INPUTBROKER_MATRIX_TYPE
|
|
||||||
}
|
|
||||||
#endif // HAS_BUTTON
|
|
||||||
#if ARCH_PORTDUINO
|
|
||||||
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR && portduino_config.i2cdev != "") {
|
|
||||||
seesawRotary = new SeesawRotary("SeesawRotary");
|
|
||||||
if (!seesawRotary->init()) {
|
|
||||||
delete seesawRotary;
|
|
||||||
seesawRotary = nullptr;
|
|
||||||
}
|
|
||||||
aLinuxInputImpl = new LinuxInputImpl();
|
|
||||||
aLinuxInputImpl->init();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if !MESHTASTIC_EXCLUDE_INPUTBROKER && HAS_TRACKBALL
|
|
||||||
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
|
||||||
trackballInterruptImpl1 = new TrackballInterruptImpl1();
|
|
||||||
trackballInterruptImpl1->init(TB_DOWN, TB_UP, TB_LEFT, TB_RIGHT, TB_PRESS);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef INPUTBROKER_EXPRESSLRSFIVEWAY_TYPE
|
|
||||||
expressLRSFiveWayInput = new ExpressLRSFiveWay();
|
|
||||||
#endif
|
|
||||||
#if HAS_SCREEN && !MESHTASTIC_EXCLUDE_CANNEDMESSAGES
|
#if HAS_SCREEN && !MESHTASTIC_EXCLUDE_CANNEDMESSAGES
|
||||||
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) {
|
||||||
cannedMessageModule = new CannedMessageModule();
|
cannedMessageModule = new CannedMessageModule();
|
||||||
@@ -304,6 +232,9 @@ void setupModules()
|
|||||||
#if !MESHTASTIC_EXCLUDE_RANGETEST && !MESHTASTIC_EXCLUDE_GPS
|
#if !MESHTASTIC_EXCLUDE_RANGETEST && !MESHTASTIC_EXCLUDE_GPS
|
||||||
if (moduleConfig.has_range_test && moduleConfig.range_test.enabled)
|
if (moduleConfig.has_range_test && moduleConfig.range_test.enabled)
|
||||||
new RangeTestModule();
|
new RangeTestModule();
|
||||||
|
#endif
|
||||||
|
#if defined(HAS_HARDWARE_WATCHDOG)
|
||||||
|
watchdogThread = new WatchdogThread();
|
||||||
#endif
|
#endif
|
||||||
// NOTE! This module must be added LAST because it likes to check for replies from other modules and avoid sending extra
|
// NOTE! This module must be added LAST because it likes to check for replies from other modules and avoid sending extra
|
||||||
// acks
|
// acks
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ uint8_t RoutingModule::getHopLimitForResponse(const meshtastic_MeshPacket &mp)
|
|||||||
#if !(EVENTMODE) // This falls through to the default.
|
#if !(EVENTMODE) // This falls through to the default.
|
||||||
return hopsUsed; // If the request used more hops than the limit, use the same amount of hops
|
return hopsUsed; // If the request used more hops than the limit, use the same amount of hops
|
||||||
#endif
|
#endif
|
||||||
|
} else if (mp.hop_start == 0) {
|
||||||
|
return 0; // The requesting node wanted 0 hops, so the response also uses a direct/local path.
|
||||||
} else if ((uint8_t)(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
|
return hopsUsed + 2; // Use only the amount of hops needed with some margin as the way back may be different
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,29 +63,26 @@
|
|||||||
SerialModule *serialModule;
|
SerialModule *serialModule;
|
||||||
SerialModuleRadio *serialModuleRadio;
|
SerialModuleRadio *serialModuleRadio;
|
||||||
|
|
||||||
#if defined(TTGO_T_ECHO) || defined(TTGO_T_ECHO_PLUS) || defined(CANARYONE) || defined(MESHLINK) || \
|
#ifndef SERIAL_PRINT_PORT
|
||||||
defined(ELECROW_ThinkNode_M1) || defined(ELECROW_ThinkNode_M4) || defined(ELECROW_ThinkNode_M5) || \
|
#define SERIAL_PRINT_PORT 2
|
||||||
defined(HELTEC_MESH_SOLAR) || defined(T_ECHO_LITE) || defined(ELECROW_ThinkNode_M3) || defined(MUZI_BASE)
|
|
||||||
|
|
||||||
SerialModule::SerialModule() : StreamAPI(&Serial), concurrency::OSThread("Serial")
|
|
||||||
{
|
|
||||||
api_type = TYPE_SERIAL;
|
|
||||||
}
|
|
||||||
static Print *serialPrint = &Serial;
|
|
||||||
#elif defined(CONFIG_IDF_TARGET_ESP32C6) || defined(RAK3172) || defined(EBYTE_E77_MBL)
|
|
||||||
SerialModule::SerialModule() : StreamAPI(&Serial1), concurrency::OSThread("Serial")
|
|
||||||
{
|
|
||||||
api_type = TYPE_SERIAL;
|
|
||||||
}
|
|
||||||
static Print *serialPrint = &Serial1;
|
|
||||||
#else
|
|
||||||
SerialModule::SerialModule() : StreamAPI(&Serial2), concurrency::OSThread("Serial")
|
|
||||||
{
|
|
||||||
api_type = TYPE_SERIAL;
|
|
||||||
}
|
|
||||||
static Print *serialPrint = &Serial2;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if SERIAL_PRINT_PORT == 0
|
||||||
|
#define SERIAL_PRINT_OBJECT Serial
|
||||||
|
#elif SERIAL_PRINT_PORT == 1
|
||||||
|
#define SERIAL_PRINT_OBJECT Serial1
|
||||||
|
#elif SERIAL_PRINT_PORT == 2
|
||||||
|
#define SERIAL_PRINT_OBJECT Serial2
|
||||||
|
#else
|
||||||
|
#error "Unsupported SERIAL_PRINT_PORT value. Allowed values are 0, 1, or 2."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SerialModule::SerialModule() : StreamAPI(&SERIAL_PRINT_OBJECT), concurrency::OSThread("Serial")
|
||||||
|
{
|
||||||
|
api_type = TYPE_SERIAL;
|
||||||
|
}
|
||||||
|
static Print *serialPrint = &SERIAL_PRINT_OBJECT;
|
||||||
|
|
||||||
char serialBytes[512];
|
char serialBytes[512];
|
||||||
size_t serialPayloadSize;
|
size_t serialPayloadSize;
|
||||||
|
|
||||||
@@ -205,9 +202,7 @@ int32_t SerialModule::runOnce()
|
|||||||
Serial.begin(baud);
|
Serial.begin(baud);
|
||||||
Serial.setTimeout(moduleConfig.serial.timeout > 0 ? moduleConfig.serial.timeout : TIMEOUT);
|
Serial.setTimeout(moduleConfig.serial.timeout > 0 ? moduleConfig.serial.timeout : TIMEOUT);
|
||||||
}
|
}
|
||||||
#elif !defined(TTGO_T_ECHO) && !defined(TTGO_T_ECHO_PLUS) && !defined(T_ECHO_LITE) && !defined(CANARYONE) && \
|
#elif SERIAL_PRINT_PORT != 0
|
||||||
!defined(MESHLINK) && !defined(ELECROW_ThinkNode_M1) && !defined(ELECROW_ThinkNode_M3) && !defined(ELECROW_ThinkNode_M4) && \
|
|
||||||
!defined(ELECROW_ThinkNode_M5) && !defined(MUZI_BASE)
|
|
||||||
|
|
||||||
if (moduleConfig.serial.rxd && moduleConfig.serial.txd) {
|
if (moduleConfig.serial.rxd && moduleConfig.serial.txd) {
|
||||||
#ifdef ARCH_RP2040
|
#ifdef ARCH_RP2040
|
||||||
@@ -264,9 +259,7 @@ int32_t SerialModule::runOnce()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(TTGO_T_ECHO) && !defined(TTGO_T_ECHO_PLUS) && !defined(T_ECHO_LITE) && !defined(CANARYONE) && !defined(MESHLINK) && \
|
#if SERIAL_PRINT_PORT != 0
|
||||||
!defined(ELECROW_ThinkNode_M1) && !defined(ELECROW_ThinkNode_M3) && !defined(ELECROW_ThinkNode_M4) && \
|
|
||||||
!defined(ELECROW_ThinkNode_M5) && !defined(MUZI_BASE)
|
|
||||||
else if ((moduleConfig.serial.mode == meshtastic_ModuleConfig_SerialConfig_Serial_Mode_WS85)) {
|
else if ((moduleConfig.serial.mode == meshtastic_ModuleConfig_SerialConfig_Serial_Mode_WS85)) {
|
||||||
processWXSerial();
|
processWXSerial();
|
||||||
|
|
||||||
@@ -540,11 +533,7 @@ ParsedLine parseLine(const char *line)
|
|||||||
*/
|
*/
|
||||||
void SerialModule::processWXSerial()
|
void SerialModule::processWXSerial()
|
||||||
{
|
{
|
||||||
#if !defined(TTGO_T_ECHO) && !defined(TTGO_T_ECHO_PLUS) && !defined(T_ECHO_LITE) && !defined(CANARYONE) && \
|
#if SERIAL_PRINT_PORT != 0 && !defined(ARCH_STM32WL) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||||
!defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(MESHLINK) && !defined(ELECROW_ThinkNode_M1) && \
|
|
||||||
!defined(ELECROW_ThinkNode_M3) && \
|
|
||||||
!defined(ELECROW_ThinkNode_M4) && \
|
|
||||||
!defined(ELECROW_ThinkNode_M5) && !defined(ARCH_STM32WL) && !defined(MUZI_BASE)
|
|
||||||
|
|
||||||
static unsigned int lastAveraged = 0;
|
static unsigned int lastAveraged = 0;
|
||||||
static unsigned int averageIntervalMillis = 300000; // 5 minutes hard coded.
|
static unsigned int averageIntervalMillis = 300000; // 5 minutes hard coded.
|
||||||
|
|||||||
@@ -529,37 +529,46 @@ bool EnvironmentTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPac
|
|||||||
|
|
||||||
bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m)
|
bool EnvironmentTelemetryModule::getEnvironmentTelemetry(meshtastic_Telemetry *m)
|
||||||
{
|
{
|
||||||
bool valid = true;
|
bool valid = false;
|
||||||
bool hasSensor = false;
|
bool hasSensor = false;
|
||||||
|
// getMetrics() doesn't always get evaluated because of
|
||||||
|
// short-circuit evaluation rules in c++
|
||||||
|
bool get_metrics;
|
||||||
m->time = getTime();
|
m->time = getTime();
|
||||||
m->which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
m->which_variant = meshtastic_Telemetry_environment_metrics_tag;
|
||||||
m->variant.environment_metrics = meshtastic_EnvironmentMetrics_init_zero;
|
m->variant.environment_metrics = meshtastic_EnvironmentMetrics_init_zero;
|
||||||
|
|
||||||
for (TelemetrySensor *sensor : sensors) {
|
for (TelemetrySensor *sensor : sensors) {
|
||||||
valid = valid && sensor->getMetrics(m);
|
get_metrics = sensor->getMetrics(m); // avoid short-circuit evaluation rules
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef T1000X_SENSOR_EN
|
#ifndef T1000X_SENSOR_EN
|
||||||
if (ina219Sensor.hasSensor()) {
|
if (ina219Sensor.hasSensor()) {
|
||||||
valid = valid && ina219Sensor.getMetrics(m);
|
get_metrics = ina219Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (ina260Sensor.hasSensor()) {
|
if (ina260Sensor.hasSensor()) {
|
||||||
valid = valid && ina260Sensor.getMetrics(m);
|
get_metrics = ina260Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (ina3221Sensor.hasSensor()) {
|
if (ina3221Sensor.hasSensor()) {
|
||||||
valid = valid && ina3221Sensor.getMetrics(m);
|
get_metrics = ina3221Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (max17048Sensor.hasSensor()) {
|
if (max17048Sensor.hasSensor()) {
|
||||||
valid = valid && max17048Sensor.getMetrics(m);
|
get_metrics = max17048Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RAKPROT
|
#ifdef HAS_RAKPROT
|
||||||
valid = valid && rak9154Sensor.getMetrics(m);
|
get_metrics = rak9154Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
#endif
|
#endif
|
||||||
return valid && hasSensor;
|
return valid && hasSensor;
|
||||||
|
|||||||
@@ -168,18 +168,21 @@ bool HealthTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPacket &
|
|||||||
|
|
||||||
bool HealthTelemetryModule::getHealthTelemetry(meshtastic_Telemetry *m)
|
bool HealthTelemetryModule::getHealthTelemetry(meshtastic_Telemetry *m)
|
||||||
{
|
{
|
||||||
bool valid = true;
|
bool valid = false;
|
||||||
bool hasSensor = false;
|
bool hasSensor = false;
|
||||||
|
bool get_metrics;
|
||||||
m->time = getTime();
|
m->time = getTime();
|
||||||
m->which_variant = meshtastic_Telemetry_health_metrics_tag;
|
m->which_variant = meshtastic_Telemetry_health_metrics_tag;
|
||||||
m->variant.health_metrics = meshtastic_HealthMetrics_init_zero;
|
m->variant.health_metrics = meshtastic_HealthMetrics_init_zero;
|
||||||
|
|
||||||
if (max30102Sensor.hasSensor()) {
|
if (max30102Sensor.hasSensor()) {
|
||||||
valid = valid && max30102Sensor.getMetrics(m);
|
get_metrics = max30102Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics; // avoid short-circuit evaluation rules
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
if (mlx90614Sensor.hasSensor()) {
|
if (mlx90614Sensor.hasSensor()) {
|
||||||
valid = valid && mlx90614Sensor.getMetrics(m);
|
get_metrics = mlx90614Sensor.getMetrics(m);
|
||||||
|
valid = valid || get_metrics;
|
||||||
hasSensor = true;
|
hasSensor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -686,6 +686,9 @@ class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
|
|||||||
#ifdef NIMBLE_TWO
|
#ifdef NIMBLE_TWO
|
||||||
if (ble->isDeInit)
|
if (ble->isDeInit)
|
||||||
return;
|
return;
|
||||||
|
#else
|
||||||
|
if (nimbleBluetooth && nimbleBluetooth->isDeInit)
|
||||||
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
meshtastic::BluetoothStatus newStatus(meshtastic::BluetoothStatus::ConnectionState::DISCONNECTED);
|
meshtastic::BluetoothStatus newStatus(meshtastic::BluetoothStatus::ConnectionState::DISCONNECTED);
|
||||||
|
|||||||
37
src/watchdog/watchdogThread.cpp
Normal file
37
src/watchdog/watchdogThread.cpp
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#include "watchdogThread.h"
|
||||||
|
#include "configuration.h"
|
||||||
|
|
||||||
|
#ifdef HAS_HARDWARE_WATCHDOG
|
||||||
|
WatchdogThread *watchdogThread;
|
||||||
|
|
||||||
|
WatchdogThread::WatchdogThread() : OSThread("Watchdog")
|
||||||
|
{
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WatchdogThread::feedDog(void)
|
||||||
|
{
|
||||||
|
digitalWrite(HARDWARE_WATCHDOG_DONE, HIGH);
|
||||||
|
delay(1);
|
||||||
|
digitalWrite(HARDWARE_WATCHDOG_DONE, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t WatchdogThread::runOnce()
|
||||||
|
{
|
||||||
|
LOG_DEBUG("Feeding hardware watchdog");
|
||||||
|
feedDog();
|
||||||
|
return HARDWARE_WATCHDOG_TIMEOUT_MS;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WatchdogThread::setup()
|
||||||
|
{
|
||||||
|
LOG_DEBUG("init hardware watchdog");
|
||||||
|
pinMode(HARDWARE_WATCHDOG_WAKE, INPUT);
|
||||||
|
pinMode(HARDWARE_WATCHDOG_DONE, OUTPUT);
|
||||||
|
delay(1);
|
||||||
|
digitalWrite(HARDWARE_WATCHDOG_DONE, LOW);
|
||||||
|
delay(1);
|
||||||
|
feedDog();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
17
src/watchdog/watchdogThread.h
Normal file
17
src/watchdog/watchdogThread.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "concurrency/OSThread.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef HAS_HARDWARE_WATCHDOG
|
||||||
|
class WatchdogThread : private concurrency::OSThread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WatchdogThread();
|
||||||
|
void feedDog(void);
|
||||||
|
virtual bool setup();
|
||||||
|
virtual int32_t runOnce() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern WatchdogThread *watchdogThread;
|
||||||
|
#endif
|
||||||
@@ -8,6 +8,7 @@ build_flags =
|
|||||||
-I variants/esp32/chatter2
|
-I variants/esp32/chatter2
|
||||||
-DMESHTASTIC_EXCLUDE_WEBSERVER=1
|
-DMESHTASTIC_EXCLUDE_WEBSERVER=1
|
||||||
-DMESHTASTIC_EXCLUDE_PAXCOUNTER=1
|
-DMESHTASTIC_EXCLUDE_PAXCOUNTER=1
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32_base.lib_deps}
|
${esp32_base.lib_deps}
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ build_flags =
|
|||||||
${esp32_base.build_flags}
|
${esp32_base.build_flags}
|
||||||
-D DIY_V1
|
-D DIY_V1
|
||||||
-I variants/esp32/diy/hydra
|
-I variants/esp32/diy/hydra
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -17,3 +17,4 @@ build_flags =
|
|||||||
-D DIY_V1
|
-D DIY_V1
|
||||||
-D EBYTE_E22
|
-D EBYTE_E22
|
||||||
-I variants/esp32/diy/v1
|
-I variants/esp32/diy/v1
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ build_flags =
|
|||||||
${esp32_base.build_flags}
|
${esp32_base.build_flags}
|
||||||
-D NANO_G1_EXPLORER
|
-D NANO_G1_EXPLORER
|
||||||
-I variants/esp32/nano-g1-explorer
|
-I variants/esp32/nano-g1-explorer
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ build_flags =
|
|||||||
${esp32_base.build_flags}
|
${esp32_base.build_flags}
|
||||||
-D NANO_G1
|
-D NANO_G1
|
||||||
-I variants/esp32/nano-g1
|
-I variants/esp32/nano-g1
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ build_flags =
|
|||||||
-DHAS_STK8XXX=1
|
-DHAS_STK8XXX=1
|
||||||
-O2
|
-O2
|
||||||
-I variants/esp32/radiomaster_900_bandit
|
-I variants/esp32/radiomaster_900_bandit
|
||||||
|
-ULED_BUILTIN
|
||||||
board_build.f_cpu = 240000000L
|
board_build.f_cpu = 240000000L
|
||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
lib_deps =
|
lib_deps =
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ build_flags =
|
|||||||
-DCONFIG_DISABLE_HAL_LOCKS=1
|
-DCONFIG_DISABLE_HAL_LOCKS=1
|
||||||
-O2
|
-O2
|
||||||
-I variants/esp32/radiomaster_900_bandit_nano
|
-I variants/esp32/radiomaster_900_bandit_nano
|
||||||
|
-ULED_BUILTIN
|
||||||
board_build.f_cpu = 240000000L
|
board_build.f_cpu = 240000000L
|
||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
|
|||||||
@@ -16,5 +16,6 @@ build_flags =
|
|||||||
-DCONFIG_DISABLE_HAL_LOCKS=1
|
-DCONFIG_DISABLE_HAL_LOCKS=1
|
||||||
-O2
|
-O2
|
||||||
-I variants/esp32/radiomaster_900_bandit_nano
|
-I variants/esp32/radiomaster_900_bandit_nano
|
||||||
|
-ULED_BUILTIN
|
||||||
board_build.f_cpu = 240000000L
|
board_build.f_cpu = 240000000L
|
||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
#define LED_GREEN 12
|
#define LED_GREEN 12
|
||||||
#define LED_BLUE 2
|
#define LED_BLUE 2
|
||||||
|
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
|
|
||||||
static const uint8_t TX = 1;
|
static const uint8_t TX = 1;
|
||||||
static const uint8_t RX = 3;
|
static const uint8_t RX = 3;
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
#define LED_GREEN 12
|
#define LED_GREEN 12
|
||||||
#define LED_BLUE 2
|
#define LED_BLUE 2
|
||||||
|
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
|
|
||||||
static const uint8_t TX = 1;
|
static const uint8_t TX = 1;
|
||||||
static const uint8_t RX = 3;
|
static const uint8_t RX = 3;
|
||||||
|
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ build_flags =
|
|||||||
${esp32_base.build_flags}
|
${esp32_base.build_flags}
|
||||||
-D STATION_G1
|
-D STATION_G1
|
||||||
-I variants/esp32/station-g1
|
-I variants/esp32/station-g1
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ build_flags = ${esp32_base.build_flags}
|
|||||||
-I variants/esp32/tbeam
|
-I variants/esp32/tbeam
|
||||||
-DBOARD_HAS_PSRAM
|
-DBOARD_HAS_PSRAM
|
||||||
-mfix-esp32-psram-cache-issue
|
-mfix-esp32-psram-cache-issue
|
||||||
|
-ULED_BUILTIN
|
||||||
upload_speed = 921600
|
upload_speed = 921600
|
||||||
|
|
||||||
[env:tbeam-displayshield]
|
[env:tbeam-displayshield]
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ extends = esp32_base
|
|||||||
board = ttgo-lora32-v21
|
board = ttgo-lora32-v21
|
||||||
board_check = true
|
board_check = true
|
||||||
build_flags =
|
build_flags =
|
||||||
${esp32_base.build_flags} -D TLORA_V2_1_16 -I variants/esp32/tlora_v2_1_16
|
${esp32_base.build_flags} -D TLORA_V2_1_16 -I variants/esp32/tlora_v2_1_16 -ULED_BUILTIN
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|
||||||
[env:sugarcube]
|
[env:sugarcube]
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ build_flags =
|
|||||||
-I variants/esp32/tlora_v2_1_16
|
-I variants/esp32/tlora_v2_1_16
|
||||||
-D LORA_TCXO_GPIO=12
|
-D LORA_TCXO_GPIO=12
|
||||||
-D BUTTON_PIN=0
|
-D BUTTON_PIN=0
|
||||||
|
-ULED_BUILTIN
|
||||||
@@ -50,3 +50,5 @@ void c6l_init();
|
|||||||
#endif
|
#endif
|
||||||
#define SCREEN_TRANSITION_FRAMERATE 10
|
#define SCREEN_TRANSITION_FRAMERATE 10
|
||||||
#define BRIGHTNESS_DEFAULT 130 // Medium Low Brightness
|
#define BRIGHTNESS_DEFAULT 130 // Medium Low Brightness
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 1
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ build_flags =
|
|||||||
-I variants/esp32c6/tlora_c6
|
-I variants/esp32c6/tlora_c6
|
||||||
-DARDUINO_USB_CDC_ON_BOOT=1
|
-DARDUINO_USB_CDC_ON_BOOT=1
|
||||||
-DARDUINO_USB_MODE=1
|
-DARDUINO_USB_MODE=1
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -19,3 +19,5 @@
|
|||||||
#define SX126X_TXEN 14
|
#define SX126X_TXEN 14
|
||||||
#define SX126X_DIO2_AS_RF_SWITCH
|
#define SX126X_DIO2_AS_RF_SWITCH
|
||||||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 1
|
||||||
|
|||||||
@@ -81,4 +81,6 @@
|
|||||||
|
|
||||||
#define BUTTON_PIN PIN_BUTTON1
|
#define BUTTON_PIN PIN_BUTTON1
|
||||||
#define BUTTON_PIN_ALT PIN_BUTTON2
|
#define BUTTON_PIN_ALT PIN_BUTTON2
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ board_build.partitions = default_8MB.csv
|
|||||||
build_flags =
|
build_flags =
|
||||||
${esp32s3_base.build_flags} -I variants/esp32s3/heltec_capsule_sensor_v3
|
${esp32s3_base.build_flags} -I variants/esp32s3/heltec_capsule_sensor_v3
|
||||||
-D HELTEC_CAPSULE_SENSOR_V3
|
-D HELTEC_CAPSULE_SENSOR_V3
|
||||||
|
-ULED_BUILTIN
|
||||||
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
|
;-D DEBUG_DISABLED ; uncomment this line to disable DEBUG output
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ build_flags =
|
|||||||
${esp32s3_base.build_flags}
|
${esp32s3_base.build_flags}
|
||||||
-I variants/esp32s3/heltec_sensor_hub
|
-I variants/esp32s3/heltec_sensor_hub
|
||||||
-D HELTEC_SENSOR_HUB
|
-D HELTEC_SENSOR_HUB
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
|
# renovate: datasource=custom.pio depName=NeoPixel packageName=adafruit/library/Adafruit NeoPixel
|
||||||
|
|||||||
@@ -18,3 +18,4 @@ build_flags =
|
|||||||
${esp32s3_base.build_flags}
|
${esp32s3_base.build_flags}
|
||||||
-D HELTEC_V3
|
-D HELTEC_V3
|
||||||
-I variants/esp32s3/heltec_v3
|
-I variants/esp32s3/heltec_v3
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -6,10 +6,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 35;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 45; // LED is not populated on earliest board variant
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // Backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 45; // LED is not populated on earliest board variant
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // Backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 35;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t KEY_BUILTIN = 0;
|
static const uint8_t KEY_BUILTIN = 0;
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -17,3 +17,4 @@ build_flags =
|
|||||||
${esp32s3_base.build_flags}
|
${esp32s3_base.build_flags}
|
||||||
-D HELTEC_WSL_V3
|
-D HELTEC_WSL_V3
|
||||||
-I variants/esp32s3/heltec_wsl_v3
|
-I variants/esp32s3/heltec_wsl_v3
|
||||||
|
-ULED_BUILTIN
|
||||||
|
|||||||
@@ -10,10 +10,7 @@
|
|||||||
// Some boards have too low voltage on this pin (board design bug)
|
// Some boards have too low voltage on this pin (board design bug)
|
||||||
// Use different pin with 3V and connect with 48
|
// Use different pin with 3V and connect with 48
|
||||||
// and change this setup for the chosen pin (for example 38)
|
// and change this setup for the chosen pin (for example 38)
|
||||||
static const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT + 48;
|
#define RGB_BUILTIN SOC_GPIO_PIN_COUNT + 48
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
#define RGB_BUILTIN LED_BUILTIN
|
|
||||||
#define RGB_BRIGHTNESS 64
|
#define RGB_BRIGHTNESS 64
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
|
|||||||
@@ -49,10 +49,6 @@ static const uint8_t T14 = 14;
|
|||||||
static const uint8_t VBAT_SENSE = 2;
|
static const uint8_t VBAT_SENSE = 2;
|
||||||
static const uint8_t VBUS_SENSE = 34;
|
static const uint8_t VBUS_SENSE = 34;
|
||||||
|
|
||||||
// User LED
|
|
||||||
#define LED_BUILTIN 13
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
|
|
||||||
static const uint8_t RGB_DATA = 40;
|
static const uint8_t RGB_DATA = 40;
|
||||||
// RGB_BUILTIN and RGB_BRIGHTNESS can be used in new Arduino API neopixelWrite()
|
// RGB_BUILTIN and RGB_BRIGHTNESS can be used in new Arduino API neopixelWrite()
|
||||||
#define RGB_BUILTIN (RGB_DATA + SOC_GPIO_PIN_COUNT)
|
#define RGB_BUILTIN (RGB_DATA + SOC_GPIO_PIN_COUNT)
|
||||||
|
|||||||
@@ -24,9 +24,6 @@ static const uint8_t SCK = 13;
|
|||||||
#define SPI_MISO (10)
|
#define SPI_MISO (10)
|
||||||
#define SPI_CS (12)
|
#define SPI_CS (12)
|
||||||
|
|
||||||
// LEDs
|
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
|
|
||||||
#ifdef _VARIANT_RAK3112_
|
#ifdef _VARIANT_RAK3112_
|
||||||
/*
|
/*
|
||||||
* Serial interfaces
|
* Serial interfaces
|
||||||
|
|||||||
@@ -22,7 +22,4 @@ static const uint8_t SCK = 13;
|
|||||||
#define SPI_MISO (10)
|
#define SPI_MISO (10)
|
||||||
#define SPI_CS (12)
|
#define SPI_CS (12)
|
||||||
|
|
||||||
// LEDs
|
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
|
|
||||||
#endif /* Pins_Arduino_h */
|
#endif /* Pins_Arduino_h */
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
// static const uint8_t LED_BUILTIN = -1;
|
|
||||||
|
|
||||||
// static const uint8_t TX = 43;
|
// static const uint8_t TX = 43;
|
||||||
// static const uint8_t RX = 44;
|
// static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
// static const uint8_t LED_BUILTIN = -1;
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
// static const uint8_t LED_BUILTIN = -1;
|
|
||||||
|
|
||||||
// static const uint8_t TX = 43;
|
// static const uint8_t TX = 43;
|
||||||
// static const uint8_t RX = 44;
|
// static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
#define USB_VID 0x303a
|
#define USB_VID 0x303a
|
||||||
#define USB_PID 0x1001
|
#define USB_PID 0x1001
|
||||||
|
|
||||||
static const uint8_t LED_BUILTIN = 18;
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
#define LED_BUILTIN LED_BUILTIN
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,6 @@
|
|||||||
#define USB_VID 0x16D0
|
#define USB_VID 0x16D0
|
||||||
#define USB_PID 0x1178
|
#define USB_PID 0x1178
|
||||||
|
|
||||||
#define LED_BUILTIN 13
|
|
||||||
#define BUILTIN_LED LED_BUILTIN // backward compatibility
|
|
||||||
|
|
||||||
static const uint8_t TX = 43;
|
static const uint8_t TX = 43;
|
||||||
static const uint8_t RX = 44;
|
static const uint8_t RX = 44;
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ lib_deps =
|
|||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.19
|
||||||
# renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
|
# renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
|
||||||
https://github.com/pine64/libch341-spi-userspace/archive/23c42319a69cffcb65868e3c72e6bed83974a393.zip
|
https://github.com/pine64/libch341-spi-userspace/archive/af9bc27c9c30fa90772279925b7c5913dff789b4.zip
|
||||||
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
|
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
|
||||||
adafruit/Adafruit seesaw Library@1.7.9
|
adafruit/Adafruit seesaw Library@1.7.9
|
||||||
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ extern "C" {
|
|||||||
#define RGBLED_BLUE (0 + 12) // Blue of RGB P0.12
|
#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 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
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ extern "C" {
|
|||||||
#define LED_RED PIN_LED3
|
#define LED_RED PIN_LED3
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_GREEN PIN_LED2
|
#define LED_GREEN PIN_LED2
|
||||||
#define LED_BUILTIN LED_BLUE
|
|
||||||
#define LED_CONN PIN_GREEN
|
#define LED_CONN PIN_GREEN
|
||||||
#define LED_STATE_ON 0 // State when LED is lit // LED灯亮时的状态
|
#define LED_STATE_ON 0 // State when LED is lit // LED灯亮时的状态
|
||||||
#define PIN_BUZZER (0 + 6)
|
#define PIN_BUZZER (0 + 6)
|
||||||
@@ -159,6 +158,8 @@ External serial flash WP25R1635FZUIL0
|
|||||||
#define PIN_SERIAL1_TX GPS_TX_PIN
|
#define PIN_SERIAL1_TX GPS_TX_PIN
|
||||||
#define PIN_SERIAL1_RX GPS_RX_PIN
|
#define PIN_SERIAL1_RX GPS_RX_PIN
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SPI Interfaces
|
* SPI Interfaces
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ extern "C" {
|
|||||||
#define LED_BLUE 37
|
#define LED_BLUE 37
|
||||||
#define LED_PAIRING LED_BLUE // Signals the Status LED Module to handle this LED
|
#define LED_PAIRING LED_BLUE // Signals the Status LED Module to handle this LED
|
||||||
|
|
||||||
#define LED_BUILTIN -1
|
|
||||||
#define LED_STATE_ON LOW
|
#define LED_STATE_ON LOW
|
||||||
#define LED_STATE_OFF HIGH
|
#define LED_STATE_OFF HIGH
|
||||||
|
|
||||||
@@ -113,6 +112,8 @@ extern "C" {
|
|||||||
#define LR11X0_DIO3_TCXO_VOLTAGE 3.3
|
#define LR11X0_DIO3_TCXO_VOLTAGE 3.3
|
||||||
#define LR11X0_DIO_AS_RF_SWITCH
|
#define LR11X0_DIO_AS_RF_SWITCH
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
// PCF8563 RTC Module
|
// PCF8563 RTC Module
|
||||||
// REVISIT https://github.com/meshtastic/firmware/pull/9084
|
// REVISIT https://github.com/meshtastic/firmware/pull/9084
|
||||||
// #define PCF8563_RTC 0x51
|
// #define PCF8563_RTC 0x51
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ extern "C" {
|
|||||||
#define NUM_ANALOG_OUTPUTS (0)
|
#define NUM_ANALOG_OUTPUTS (0)
|
||||||
|
|
||||||
// LEDs
|
// LEDs
|
||||||
#define LED_BUILTIN -1
|
|
||||||
#define LED_BLUE -1
|
#define LED_BLUE -1
|
||||||
#define PIN_LED2 (32 + 9)
|
#define PIN_LED2 (32 + 9)
|
||||||
#define LED_PAIRING (13)
|
#define LED_PAIRING (13)
|
||||||
@@ -135,6 +134,8 @@ static const uint8_t A0 = PIN_A0;
|
|||||||
#define PIN_SERIAL1_RX GPS_RX_PIN
|
#define PIN_SERIAL1_RX GPS_RX_PIN
|
||||||
#define PIN_SERIAL1_TX GPS_TX_PIN
|
#define PIN_SERIAL1_TX GPS_TX_PIN
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ extern "C" {
|
|||||||
#define NUM_ANALOG_OUTPUTS (0)
|
#define NUM_ANALOG_OUTPUTS (0)
|
||||||
|
|
||||||
// LEDs
|
// LEDs
|
||||||
#define LED_BUILTIN -1
|
|
||||||
#define LED_BLUE -1
|
#define LED_BLUE -1
|
||||||
#define LED_CHARGE (12)
|
#define LED_CHARGE (12)
|
||||||
#define LED_PAIRING (7)
|
#define LED_PAIRING (7)
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 7) // P1.07 Blue D2
|
#define PIN_LED1 (32 + 7) // P1.07 Blue D2
|
||||||
|
|
||||||
#define LED_PIN PIN_LED1
|
#define LED_PIN PIN_LED1
|
||||||
#define LED_BUILTIN -1
|
|
||||||
|
|
||||||
#define LED_BLUE -1
|
#define LED_BLUE -1
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
#define LED_STATE_ON 1 // State when LED is lit
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 7) // P1.07 Blue D2
|
#define PIN_LED1 (32 + 7) // P1.07 Blue D2
|
||||||
|
|
||||||
#define LED_PIN PIN_LED1
|
#define LED_PIN PIN_LED1
|
||||||
#define LED_BUILTIN -1
|
|
||||||
|
|
||||||
#define LED_BLUE -1
|
#define LED_BLUE -1
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
#define LED_STATE_ON 1 // State when LED is lit
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (-1)
|
#define PIN_LED1 (-1)
|
||||||
|
|
||||||
#define LED_PIN PIN_LED1
|
#define LED_PIN PIN_LED1
|
||||||
#define LED_BUILTIN -1
|
|
||||||
|
|
||||||
#define LED_BLUE -1
|
#define LED_BLUE -1
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
#define LED_STATE_ON 1 // State when LED is lit
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 10) // LED P1.15
|
#define PIN_LED1 (32 + 10) // LED P1.15
|
||||||
#define PIN_LED2 (-1) //
|
#define PIN_LED2 (-1) //
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 10) // LED P1.15
|
#define PIN_LED1 (32 + 10) // LED P1.15
|
||||||
#define PIN_LED2 (-1) //
|
#define PIN_LED2 (-1) //
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ extern "C" {
|
|||||||
// #define PIN_LED1 (32 + 9) Green
|
// #define PIN_LED1 (32 + 9) Green
|
||||||
// #define PIN_LED1 (0 + 12) Blue
|
// #define PIN_LED1 (0 + 12) Blue
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ extern "C" {
|
|||||||
|
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED3
|
#define LED_CONN PIN_LED3
|
||||||
|
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
@@ -170,6 +169,8 @@ static const uint8_t A0 = PIN_A0;
|
|||||||
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
|
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
|
||||||
#define ADC_MULTIPLIER (2.0F)
|
#define ADC_MULTIPLIER (2.0F)
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ NRF52 PRO MICRO PIN ASSIGNMENT
|
|||||||
|
|
||||||
// LED
|
// LED
|
||||||
#define PIN_LED1 (0 + 15) // P0.15
|
#define PIN_LED1 (0 + 15) // P0.15
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
// Actually red
|
// Actually red
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
#define LED_STATE_ON 1 // State when LED is lit
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ extern "C" {
|
|||||||
#define PIN_LED PIN_LED1
|
#define PIN_LED PIN_LED1
|
||||||
#define LED_PWR (PINS_COUNT)
|
#define LED_PWR (PINS_COUNT)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED
|
|
||||||
#define LED_STATE_ON 1 // State when LED is lit
|
#define LED_STATE_ON 1 // State when LED is lit
|
||||||
|
|
||||||
// XIAO Wio-SX1262 Shield User button
|
// XIAO Wio-SX1262 Shield User button
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ extern "C" {
|
|||||||
|
|
||||||
// LED
|
// LED
|
||||||
#define PIN_LED1 (0 + 15)
|
#define PIN_LED1 (0 + 15)
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
// Actually red
|
// Actually red
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_STATE_ON 1
|
#define LED_STATE_ON 1
|
||||||
|
|||||||
@@ -49,8 +49,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 15) // P1.15 3
|
#define PIN_LED1 (32 + 15) // P1.15 3
|
||||||
#define PIN_LED2 (32 + 10) // P1.10 4
|
#define PIN_LED2 (32 + 10) // P1.10 4
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED2 // Actually red
|
#define LED_GREEN PIN_LED2 // Actually red
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 3) // green (confirmed on 1.0 board)
|
#define PIN_LED1 (32 + 3) // green (confirmed on 1.0 board)
|
||||||
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
#define HAS_NEOPIXEL // Enable the use of neopixels
|
#define HAS_NEOPIXEL // Enable the use of neopixels
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 3) // green (confirmed on 1.0 board)
|
#define PIN_LED1 (32 + 3) // green (confirmed on 1.0 board)
|
||||||
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
#define HAS_NEOPIXEL // Enable the use of neopixels
|
#define HAS_NEOPIXEL // Enable the use of neopixels
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ extern "C" {
|
|||||||
#define LED_RED PIN_LED1
|
#define LED_RED PIN_LED1
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
#define LED_BUILTIN LED_BLUE
|
|
||||||
#define LED_CONN LED_BLUE
|
#define LED_CONN LED_BLUE
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
|
|||||||
@@ -39,16 +39,15 @@ extern "C" {
|
|||||||
#define NUM_ANALOG_INPUTS (1)
|
#define NUM_ANALOG_INPUTS (1)
|
||||||
#define NUM_ANALOG_OUTPUTS (0)
|
#define NUM_ANALOG_OUTPUTS (0)
|
||||||
|
|
||||||
#define PIN_LED1 (0 + 4) // green (confirmed on 1.0 board)
|
#define PIN_LED1 (32 + 15) // green (confirmed on 1.0 board)
|
||||||
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
#define LED_BLUE PIN_LED1 // fake for bluefruit library
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
#define HAS_NEOPIXEL // Enable the use of neopixels
|
// #define HAS_NEOPIXEL // Enable the use of neopixels
|
||||||
#define NEOPIXEL_COUNT 1 // How many neopixels are connected
|
// #define NEOPIXEL_COUNT 1 // How many neopixels are connected
|
||||||
#define NEOPIXEL_DATA (32 + 15) // gpio pin used to send data to the neopixels
|
// #define NEOPIXEL_DATA (32 + 15) // gpio pin used to send data to the neopixels
|
||||||
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
|
// #define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) // type of neopixels in use
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Buttons
|
* Buttons
|
||||||
@@ -60,8 +59,8 @@ extern "C" {
|
|||||||
/*
|
/*
|
||||||
No longer populated on PCB
|
No longer populated on PCB
|
||||||
*/
|
*/
|
||||||
#define PIN_SERIAL2_RX (0 + 9)
|
#define PIN_SERIAL2_RX (-1)
|
||||||
#define PIN_SERIAL2_TX (0 + 10)
|
#define PIN_SERIAL2_TX (-1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* I2C
|
* I2C
|
||||||
@@ -138,10 +137,18 @@ No longer populated on PCB
|
|||||||
// To debug via the segger JLINK console rather than the CDC-ACM serial device
|
// To debug via the segger JLINK console rather than the CDC-ACM serial device
|
||||||
// #define USE_SEGGER
|
// #define USE_SEGGER
|
||||||
|
|
||||||
|
// Hardware watchdog
|
||||||
|
#define HAS_HARDWARE_WATCHDOG
|
||||||
|
#define HARDWARE_WATCHDOG_DONE (0 + 9)
|
||||||
|
#define HARDWARE_WATCHDOG_WAKE (0 + 10)
|
||||||
|
#define HARDWARE_WATCHDOG_TIMEOUT_MS (6 * 60 * 1000) // 6 minute watchdog
|
||||||
|
|
||||||
#define BQ4050_SDA_PIN (32 + 1) // I2C data line pin
|
#define BQ4050_SDA_PIN (32 + 1) // I2C data line pin
|
||||||
#define BQ4050_SCL_PIN (32 + 0) // I2C clock line pin
|
#define BQ4050_SCL_PIN (32 + 0) // I2C clock line pin
|
||||||
#define BQ4050_EMERGENCY_SHUTDOWN_PIN (32 + 3) // Emergency shutdown pin
|
#define BQ4050_EMERGENCY_SHUTDOWN_PIN (32 + 3) // Emergency shutdown pin
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ extern "C" {
|
|||||||
// LEDs
|
// LEDs
|
||||||
#define PIN_LED1 (24) // Built in white led for status
|
#define PIN_LED1 (24) // Built in white led for status
|
||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
|
|
||||||
#define LED_STATE_ON 0 // State when LED is litted
|
#define LED_STATE_ON 0 // State when LED is litted
|
||||||
#define LED_INVERTED 1
|
#define LED_INVERTED 1
|
||||||
@@ -54,6 +53,7 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define PIN_SERIAL1_RX (32 + 8)
|
#define PIN_SERIAL1_RX (32 + 8)
|
||||||
#define PIN_SERIAL1_TX (7)
|
#define PIN_SERIAL1_TX (7)
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SPI Interfaces
|
* SPI Interfaces
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36) // Connected to WWAN host LED (if present)
|
#define PIN_LED2 (36) // Connected to WWAN host LED (if present)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 3) // P1.03, Green
|
#define PIN_LED1 (32 + 3) // P1.03, Green
|
||||||
#define PIN_LED2 (32 + 4) // P1.04, Blue
|
#define PIN_LED2 (32 + 4) // P1.04, Blue
|
||||||
|
|
||||||
#define LED_BUILTIN -1 // PIN_LED1
|
|
||||||
#define LED_BLUE PIN_LED2
|
#define LED_BLUE PIN_LED2
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
@@ -176,6 +175,8 @@ extern "C" {
|
|||||||
#define EXTERNAL_FLASH_DEVICES W25Q32JVSS
|
#define EXTERNAL_FLASH_DEVICES W25Q32JVSS
|
||||||
#define EXTERNAL_FLASH_USE_QSPI
|
#define EXTERNAL_FLASH_USE_QSPI
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
// NFC is disabled via CONFIG_NFCT_PINS_AS_GPIOS=1 build flag
|
// NFC is disabled via CONFIG_NFCT_PINS_AS_GPIOS=1 build flag
|
||||||
// This configures P0.09 and P0.10 as regular GPIO pins instead of NFC pins
|
// This configures P0.09 and P0.10 as regular GPIO pins instead of NFC pins
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ extern "C" {
|
|||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_GREEN PIN_LED2
|
#define LED_GREEN PIN_LED2
|
||||||
|
|
||||||
#define LED_BUILTIN LED_BLUE
|
|
||||||
#define LED_CONN PIN_GREEN
|
#define LED_CONN PIN_GREEN
|
||||||
|
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (32 + 4) // P1.04 Controls Green LED
|
#define PIN_LED1 (32 + 4) // P1.04 Controls Green LED
|
||||||
#define PIN_LED2 (28) // P0.28 Controls Blue LED
|
#define PIN_LED2 (28) // P0.28 Controls Blue LED
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern "C" {
|
|||||||
#define PIN_LED1 (35)
|
#define PIN_LED1 (35)
|
||||||
#define PIN_LED2 (36)
|
#define PIN_LED2 (36)
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
#define PIN_LED1 (12) // LED P1.15
|
#define PIN_LED1 (12) // LED P1.15
|
||||||
#define PIN_LED2 (11) //
|
#define PIN_LED2 (11) //
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
#define PIN_LED1 (11) // LED P1.15
|
#define PIN_LED1 (11) // LED P1.15
|
||||||
#define PIN_LED2 (12) //
|
#define PIN_LED2 (12) //
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
#define PIN_LED1 (11) // LED P1.15
|
#define PIN_LED1 (11) // LED P1.15
|
||||||
#define PIN_LED2 (12) //
|
#define PIN_LED2 (12) //
|
||||||
|
|
||||||
#define LED_BUILTIN PIN_LED1
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
|
|
||||||
#define LED_GREEN PIN_LED1
|
#define LED_GREEN PIN_LED1
|
||||||
|
|||||||
@@ -69,8 +69,6 @@ static const uint8_t A5 = PIN_A5;
|
|||||||
#define PIN_LED2 LED_BLUE
|
#define PIN_LED2 LED_BLUE
|
||||||
#define PIN_LED3 LED_RED
|
#define PIN_LED3 LED_RED
|
||||||
|
|
||||||
#define LED_BUILTIN LED_RED // LED_BUILTIN is used by framework-arduinoadafruitnrf52 to indicate flash writes
|
|
||||||
|
|
||||||
#define LED_PWR LED_RED
|
#define LED_PWR LED_RED
|
||||||
#define USER_LED LED_BLUE
|
#define USER_LED LED_BLUE
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ extern "C" {
|
|||||||
|
|
||||||
#define BLE_LED LED_BLUE
|
#define BLE_LED LED_BLUE
|
||||||
#define BLE_LED_INVERTED 1
|
#define BLE_LED_INVERTED 1
|
||||||
#define LED_BUILTIN LED_GREEN
|
|
||||||
#define LED_CONN LED_GREEN
|
#define LED_CONN LED_GREEN
|
||||||
#define LED_STATE_ON 0 // State when LED is lit
|
#define LED_STATE_ON 0 // State when LED is lit
|
||||||
|
|
||||||
@@ -171,6 +170,8 @@ static const uint8_t A0 = PIN_A0;
|
|||||||
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
|
#define VBAT_AR_INTERNAL AR_INTERNAL_3_0
|
||||||
#define ADC_MULTIPLIER (2.0F)
|
#define ADC_MULTIPLIER (2.0F)
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
// #define NO_EXT_GPIO 1
|
// #define NO_EXT_GPIO 1
|
||||||
// PINs back side
|
// PINs back side
|
||||||
// Batt & solar connector left up corner
|
// Batt & solar connector left up corner
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ extern "C" {
|
|||||||
#define LED_BLUE PIN_LED1
|
#define LED_BLUE PIN_LED1
|
||||||
#define LED_GREEN PIN_LED2
|
#define LED_GREEN PIN_LED2
|
||||||
|
|
||||||
#define LED_BUILTIN LED_BLUE
|
|
||||||
#define LED_CONN LED_GREEN
|
#define LED_CONN LED_GREEN
|
||||||
|
|
||||||
#define LED_STATE_ON 0
|
#define LED_STATE_ON 0
|
||||||
@@ -138,6 +137,8 @@ static const uint8_t A0 = PIN_A0;
|
|||||||
// Battery / ADC already defined above
|
// Battery / ADC already defined above
|
||||||
#define HAS_RTC 1
|
#define HAS_RTC 1
|
||||||
|
|
||||||
|
#define SERIAL_PRINT_PORT 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user