Compare commits

..

45 Commits

Author SHA1 Message Date
HarukiToreda
be6a28d6e0 Merge branch 'develop' into InkHUD-Improvements 2026-01-31 17:12:26 -05:00
HarukiToreda
93e9af01f5 Merge branch 'develop' into InkHUD-Improvements 2026-01-27 22:57:40 -05:00
HarukiToreda
58b04d55c1 Merge branch 'develop' into InkHUD-Improvements 2026-01-27 02:29:55 -05:00
HarukiToreda
ff86e1c955 Merge branch 'develop' into InkHUD-Improvements 2026-01-22 19:58:10 -05:00
HarukiToreda
d1d032929b Merge branch 'develop' into InkHUD-Improvements 2026-01-18 19:29:09 -05:00
HarukiToreda
0b6ed2da20 Merge branch 'develop' into InkHUD-Improvements 2026-01-15 22:44:12 -05:00
HarukiToreda
e73e817bf2 Merge branch 'develop' into InkHUD-Improvements 2026-01-14 21:53:52 -05:00
HarukiToreda
db0ca0324e Merge branch 'develop' into InkHUD-Improvements 2026-01-10 23:56:03 -05:00
HarukiToreda
750f695bbd GPS toggle now is aware if gps is present. 2026-01-10 23:52:32 -05:00
HarukiToreda
2cbb8040f3 Merge branch 'develop' into InkHUD-Improvements 2026-01-08 00:20:34 -05:00
HarukiToreda
ef128a7883 Merge branch 'develop' into InkHUD-Improvements 2026-01-01 17:38:48 -05:00
HarukiToreda
d55bf66f25 Merge branch 'develop' into InkHUD-Improvements 2025-12-28 00:24:03 -05:00
HarukiToreda
1885a2beac Merge branch 'develop' into InkHUD-Improvements 2025-12-25 22:30:27 -05:00
HarukiToreda
d5ef68314b Fixed missing stray endiff 2025-12-21 01:37:27 -05:00
HarukiToreda
3baba4b1a1 Merge branch 'develop' into InkHUD-Improvements 2025-12-21 00:33:29 -05:00
HarukiToreda
791fb86c7c added ADC calibration feature 2025-12-21 00:17:33 -05:00
HarukiToreda
c1c5d36e86 Added ADC multiplier value display on power config 2025-12-20 21:02:27 -05:00
HarukiToreda
050371adc5 Fix to tips to work with new joystick input 2025-12-20 17:00:00 -05:00
HarukiToreda
f409645ad3 Trunk Fix 2025-12-20 16:38:20 -05:00
HarukiToreda
25d7db65ea quick fix to joystick 2025-12-20 16:29:51 -05:00
HarukiToreda
e0ceaaff38 Merge branch 'develop' into InkHUD-Improvements 2025-12-20 16:29:08 -05:00
HarukiToreda
6431c76aac Merge branch 'develop' into InkHUD-Improvements 2025-12-19 09:49:26 -05:00
HarukiToreda
ac0b3613ec Added ResetDB and keep only favorite commands 2025-12-19 04:41:36 -05:00
HarukiToreda
9ad7d39051 Make Tips show after first boot if the region is Unset 2025-12-19 03:54:10 -05:00
HarukiToreda
b3e6731c85 Trunk fix 2025-12-17 13:01:04 -05:00
HarukiToreda
ef36a5a24d Added "Saving Changes" screen when reboot is needed 2025-12-17 12:38:04 -05:00
HarukiToreda
66d9c430d8 Trunk fix 2025-12-16 02:23:51 -05:00
HarukiToreda
ac05337e42 Timezone labels easier to understand 2025-12-16 02:23:04 -05:00
HarukiToreda
1d4e295471 Recent list with checkboxes 2025-12-16 01:38:03 -05:00
HarukiToreda
c761444bee Reduce line spacing to fit more content 2025-12-16 01:01:40 -05:00
HarukiToreda
929aa5c968 Wifi details 2025-12-15 22:31:33 -05:00
HarukiToreda
cc6265e9b1 Network Config for ESP32 2025-12-15 21:48:17 -05:00
HarukiToreda
958e1f73ef Position Toggle added 2025-12-15 21:07:04 -05:00
HarukiToreda
96e82f1ec1 Merge branch 'develop' into InkHUD-Improvements 2025-12-15 03:22:52 -05:00
HarukiToreda
83ec37113d Display config added 2025-12-15 02:47:09 -05:00
HarukiToreda
5acf72243d Add back to all Options 2025-12-15 01:38:22 -05:00
HarukiToreda
bd18a171d4 Cleaning some behavior 2025-12-15 01:00:54 -05:00
HarukiToreda
6e05c554b8 Channel Config 2025-12-15 00:40:01 -05:00
HarukiToreda
5f9a6a38e6 Config section Headers 2025-12-14 20:56:08 -05:00
HarukiToreda
a332ca978b Power save mode and bluetooth configs 2025-12-14 20:06:24 -05:00
HarukiToreda
7b4315421b Timezone picker added 2025-12-14 18:36:22 -05:00
HarukiToreda
60389e84e6 Preset Picker 2025-12-14 17:22:14 -05:00
HarukiToreda
cd0843c7db Role picker 2025-12-14 16:54:10 -05:00
HarukiToreda
d9dab0cd6c Added Node Config menu with Lora Region Picker 2025-12-14 15:53:44 -05:00
HarukiToreda
87114f4052 InkHUD: Region Picker on initial setup 2025-12-14 04:34:29 -05:00
109 changed files with 314 additions and 212 deletions

66
src/Led.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include "Led.h"
#include "PowerMon.h"
#include "main.h"
#include "power.h"
GpioVirtPin ledForceOn, ledBlink;
#if defined(LED_PIN)
// Most boards have a GPIO for LED control
static GpioHwPin ledRawHwPin(LED_PIN);
#else
static GpioVirtPin ledRawHwPin; // Dummy pin for no hardware
#endif
#if LED_STATE_ON == 0
static GpioVirtPin ledHwPin;
static GpioNotTransformer ledInverter(&ledHwPin, &ledRawHwPin);
#else
static GpioPin &ledHwPin = ledRawHwPin;
#endif
#if defined(HAS_PMU)
/**
* A GPIO controlled by the PMU
*/
class GpioPmuPin : public GpioPin
{
public:
void set(bool value)
{
if (pmu_found && PMU) {
// blink the axp led
PMU->setChargingLedMode(value ? XPOWERS_CHG_LED_ON : XPOWERS_CHG_LED_OFF);
}
}
} ledPmuHwPin;
// In some cases we need to drive a PMU LED and a normal LED
static GpioSplitter ledFinalPin(&ledHwPin, &ledPmuHwPin);
#else
static GpioPin &ledFinalPin = ledHwPin;
#endif
#ifdef USE_POWERMON
/**
* We monitor changes to the LED drive output because we use that as a sanity test in our power monitor stuff.
*/
class MonitoredLedPin : public GpioPin
{
public:
void set(bool value)
{
if (powerMon) {
if (value)
powerMon->setState(meshtastic_PowerMon_State_LED_On);
else
powerMon->clearState(meshtastic_PowerMon_State_LED_On);
}
ledFinalPin.set(value);
}
} monitoredLedPin;
#else
static GpioPin &monitoredLedPin = ledFinalPin;
#endif
static GpioBinaryTransformer ledForcer(&ledForceOn, &ledBlink, &monitoredLedPin, GpioBinaryTransformer::Or);

7
src/Led.h Normal file
View File

@@ -0,0 +1,7 @@
#include "GpioLogic.h"
#include "configuration.h"
/**
* ledForceOn and ledForceOff both override the normal ledBlinker behavior (which is controlled by main)
*/
extern GpioVirtPin ledForceOn, ledBlink;

View File

@@ -459,8 +459,6 @@ class AnalogBatteryLevel : public HasBatteryLevel
} }
// if it's not HIGH - check the battery // if it's not HIGH - check the battery
#endif #endif
// If we have an EXT_PWR_DETECT pin and it indicates no external power, believe it.
return false;
// technically speaking this should work for all(?) NRF52 boards // technically speaking this should work for all(?) NRF52 boards
// but needs testing across multiple devices. NRF52 USB would not even work if // but needs testing across multiple devices. NRF52 USB would not even work if

View File

@@ -9,13 +9,13 @@
*/ */
#include "PowerFSM.h" #include "PowerFSM.h"
#include "Default.h" #include "Default.h"
#include "Led.h"
#include "MeshService.h" #include "MeshService.h"
#include "NodeDB.h" #include "NodeDB.h"
#include "PowerMon.h" #include "PowerMon.h"
#include "configuration.h" #include "configuration.h"
#include "graphics/Screen.h" #include "graphics/Screen.h"
#include "main.h" #include "main.h"
#include "modules/StatusLEDModule.h"
#include "sleep.h" #include "sleep.h"
#include "target_specific.h" #include "target_specific.h"
@@ -103,7 +103,7 @@ static void lsIdle()
uint32_t sleepTime = SLEEP_TIME; uint32_t sleepTime = SLEEP_TIME;
powerMon->setState(meshtastic_PowerMon_State_CPU_LightSleep); powerMon->setState(meshtastic_PowerMon_State_CPU_LightSleep);
statusLEDModule->setPowerLED(false); ledBlink.set(false); // Never leave led on while in light sleep
esp_sleep_source_t wakeCause2 = doLightSleep(sleepTime * 1000LL); esp_sleep_source_t wakeCause2 = doLightSleep(sleepTime * 1000LL);
powerMon->clearState(meshtastic_PowerMon_State_CPU_LightSleep); powerMon->clearState(meshtastic_PowerMon_State_CPU_LightSleep);
@@ -111,7 +111,7 @@ static void lsIdle()
case ESP_SLEEP_WAKEUP_TIMER: case ESP_SLEEP_WAKEUP_TIMER:
// Normal case: timer expired, we should just go back to sleep ASAP // Normal case: timer expired, we should just go back to sleep ASAP
statusLEDModule->setPowerLED(true); ledBlink.set(true); // briefly turn on led
wakeCause2 = doLightSleep(100); // leave led on for 1ms wakeCause2 = doLightSleep(100); // leave led on for 1ms
secsSlept += sleepTime; secsSlept += sleepTime;
@@ -146,7 +146,7 @@ static void lsIdle()
} }
} else { } else {
// Time to stop sleeping! // Time to stop sleeping!
statusLEDModule->setPowerLED(false); ledBlink.set(false);
LOG_INFO("Reached ls_secs, service loop()"); LOG_INFO("Reached ls_secs, service loop()");
powerFSM.trigger(EVENT_WAKE_TIMER); powerFSM.trigger(EVENT_WAKE_TIMER);
} }

View File

@@ -877,15 +877,15 @@ void drawTextMessageFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
// Send Message (Right side) // Send Message (Right side)
display->drawRect(x1 + 2 - bubbleW, y1 - bubbleH, bubbleW, bubbleH); display->drawRect(x1 + 2 - bubbleW, y1 - bubbleH, bubbleW, bubbleH);
// Top Right Corner // Top Right Corner
display->drawRect(x1 - 1, topY, 2, 1); display->drawRect(x1, topY, 2, 1);
display->drawRect(x1, topY, 1, 2); display->drawRect(x1, topY, 1, 2);
// Bottom Right Corner // Bottom Right Corner
display->drawRect(x1 - 1, bottomY - 2, 2, 1); display->drawRect(x1 - 1, bottomY - 2, 2, 1);
display->drawRect(x1, bottomY - 3, 1, 2); display->drawRect(x1, bottomY - 3, 1, 2);
// Knock the corners off to make a bubble // Knock the corners off to make a bubble
display->setColor(BLACK); display->setColor(BLACK);
display->drawRect(x1 - bubbleW + 2, topY - 1, 1, 1); display->drawRect(x1 - bubbleW, topY - 1, 1, 1);
display->drawRect(x1 - bubbleW + 2, bottomY - 1, 1, 1); display->drawRect(x1 - bubbleW, bottomY - 1, 1, 1);
display->setColor(WHITE); display->setColor(WHITE);
} else { } else {
// Received Message (Left Side) // Received Message (Left Side)

View File

@@ -13,6 +13,7 @@
#include "power/PowerHAL.h" #include "power/PowerHAL.h"
#include "FSCommon.h" #include "FSCommon.h"
#include "Led.h"
#include "RTC.h" #include "RTC.h"
#include "SPILock.h" #include "SPILock.h"
#include "Throttle.h" #include "Throttle.h"
@@ -241,8 +242,26 @@ const char *getDeviceName()
return name; return name;
} }
// TODO remove from main.cpp
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;
ledBlink.set(ledOn);
// have a very sparse duty cycle of LED being on, unless charging, then blink 0.5Hz square wave rate to indicate that
return powerStatus->getIsCharging() ? 1000 : (ledOn ? 1 : 1000);
}
uint32_t timeLastPowered = 0; uint32_t timeLastPowered = 0;
static Periodic *ledPeriodic;
static OSThread *powerFSMthread; static OSThread *powerFSMthread;
static OSThread *ambientLightingThread; static OSThread *ambientLightingThread;
@@ -280,16 +299,21 @@ void earlyInitVariant() {}
// blink user led in 3 flashes sequence to indicate what is happening // blink user led in 3 flashes sequence to indicate what is happening
void waitUntilPowerLevelSafe() void waitUntilPowerLevelSafe()
{ {
#ifdef LED_PIN
pinMode(LED_PIN, OUTPUT);
#endif
while (powerHAL_isPowerLevelSafe() == false) { while (powerHAL_isPowerLevelSafe() == false) {
#ifdef LED_POWER #ifdef LED_PIN
// 3x: blink for 300 ms, pause for 300 ms // 3x: blink for 300 ms, pause for 300 ms
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
digitalWrite(LED_POWER, LED_STATE_ON); digitalWrite(LED_PIN, LED_STATE_ON);
delay(300); delay(300);
digitalWrite(LED_POWER, LED_STATE_OFF); digitalWrite(LED_PIN, LED_STATE_OFF);
delay(300); delay(300);
} }
#endif #endif
@@ -313,11 +337,6 @@ void setup()
// initialize power HAL layer as early as possible // initialize power HAL layer as early as possible
powerHAL_init(); powerHAL_init();
#ifdef LED_POWER
pinMode(LED_POWER, OUTPUT);
digitalWrite(LED_POWER, LED_STATE_ON);
#endif
// prevent booting if device is in power failure mode // prevent booting if device is in power failure mode
// boot sequence will follow when battery level raises to safe mode // boot sequence will follow when battery level raises to safe mode
waitUntilPowerLevelSafe(); waitUntilPowerLevelSafe();
@@ -330,6 +349,11 @@ void setup()
digitalWrite(PIN_POWER_EN, HIGH); digitalWrite(PIN_POWER_EN, HIGH);
#endif #endif
#ifdef LED_POWER
pinMode(LED_POWER, OUTPUT);
digitalWrite(LED_POWER, LED_STATE_ON);
#endif
#ifdef LED_NOTIFICATION #ifdef LED_NOTIFICATION
pinMode(LED_NOTIFICATION, OUTPUT); pinMode(LED_NOTIFICATION, OUTPUT);
digitalWrite(LED_NOTIFICATION, HIGH ^ LED_STATE_ON); digitalWrite(LED_NOTIFICATION, HIGH ^ LED_STATE_ON);
@@ -460,6 +484,16 @@ void setup()
OSThread::setup(); OSThread::setup();
// TODO make this ifdef based on defined pins and move from main.cpp
#if defined(ELECROW_ThinkNode_M1) || defined(ELECROW_ThinkNode_M2)
// The ThinkNodes have their own blink logic
// ledPeriodic = new Periodic("Blink", elecrowLedBlinker);
#else
ledPeriodic = new Periodic("Blink", ledBlinker);
#endif
fsInit(); fsInit();
#if !MESHTASTIC_EXCLUDE_I2C #if !MESHTASTIC_EXCLUDE_I2C
@@ -684,6 +718,13 @@ void setup()
setupSDCard(); setupSDCard();
#endif #endif
// LED init
#ifdef LED_PIN
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LED_STATE_ON); // turn on for now
#endif
// Hello // Hello
printInfo(); printInfo();
#ifdef BUILD_EPOCH #ifdef BUILD_EPOCH
@@ -917,6 +958,12 @@ void setup()
setupNicheGraphics(); setupNicheGraphics();
#endif #endif
#ifdef LED_PIN
// Turn LED off after boot, if heartbeat by config
if (config.device.led_heartbeat_disabled)
digitalWrite(LED_PIN, HIGH ^ LED_STATE_ON);
#endif
// Do this after service.init (because that clears error_code) // Do this after service.init (because that clears error_code)
#ifdef HAS_PMU #ifdef HAS_PMU
if (!pmu_found) if (!pmu_found)

View File

@@ -9,6 +9,7 @@
#if HAS_WIFI #if HAS_WIFI
#include "mesh/wifi/WiFiAPClient.h" #include "mesh/wifi/WiFiAPClient.h"
#endif #endif
#include "Led.h"
#include "SPILock.h" #include "SPILock.h"
#include "power.h" #include "power.h"
#include "serialization/JSON.h" #include "serialization/JSON.h"
@@ -91,6 +92,7 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer)
ResourceNode *nodeFormUpload = new ResourceNode("/upload", "POST", &handleFormUpload); ResourceNode *nodeFormUpload = new ResourceNode("/upload", "POST", &handleFormUpload);
ResourceNode *nodeJsonScanNetworks = new ResourceNode("/json/scanNetworks", "GET", &handleScanNetworks); ResourceNode *nodeJsonScanNetworks = new ResourceNode("/json/scanNetworks", "GET", &handleScanNetworks);
ResourceNode *nodeJsonBlinkLED = new ResourceNode("/json/blink", "POST", &handleBlinkLED);
ResourceNode *nodeJsonReport = new ResourceNode("/json/report", "GET", &handleReport); ResourceNode *nodeJsonReport = new ResourceNode("/json/report", "GET", &handleReport);
ResourceNode *nodeJsonNodes = new ResourceNode("/json/nodes", "GET", &handleNodes); ResourceNode *nodeJsonNodes = new ResourceNode("/json/nodes", "GET", &handleNodes);
ResourceNode *nodeJsonFsBrowseStatic = new ResourceNode("/json/fs/browse/static", "GET", &handleFsBrowseStatic); ResourceNode *nodeJsonFsBrowseStatic = new ResourceNode("/json/fs/browse/static", "GET", &handleFsBrowseStatic);
@@ -108,6 +110,7 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer)
secureServer->registerNode(nodeRestart); secureServer->registerNode(nodeRestart);
secureServer->registerNode(nodeFormUpload); secureServer->registerNode(nodeFormUpload);
secureServer->registerNode(nodeJsonScanNetworks); secureServer->registerNode(nodeJsonScanNetworks);
secureServer->registerNode(nodeJsonBlinkLED);
secureServer->registerNode(nodeJsonFsBrowseStatic); secureServer->registerNode(nodeJsonFsBrowseStatic);
secureServer->registerNode(nodeJsonDelete); secureServer->registerNode(nodeJsonDelete);
secureServer->registerNode(nodeJsonReport); secureServer->registerNode(nodeJsonReport);
@@ -130,6 +133,7 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer)
insecureServer->registerNode(nodeRestart); insecureServer->registerNode(nodeRestart);
insecureServer->registerNode(nodeFormUpload); insecureServer->registerNode(nodeFormUpload);
insecureServer->registerNode(nodeJsonScanNetworks); insecureServer->registerNode(nodeJsonScanNetworks);
insecureServer->registerNode(nodeJsonBlinkLED);
insecureServer->registerNode(nodeJsonFsBrowseStatic); insecureServer->registerNode(nodeJsonFsBrowseStatic);
insecureServer->registerNode(nodeJsonDelete); insecureServer->registerNode(nodeJsonDelete);
insecureServer->registerNode(nodeJsonReport); insecureServer->registerNode(nodeJsonReport);
@@ -900,6 +904,45 @@ void handleRestart(HTTPRequest *req, HTTPResponse *res)
webServerThread->requestRestart = (millis() / 1000) + 5; webServerThread->requestRestart = (millis() / 1000) + 5;
} }
void handleBlinkLED(HTTPRequest *req, HTTPResponse *res)
{
res->setHeader("Content-Type", "application/json");
res->setHeader("Access-Control-Allow-Origin", "*");
res->setHeader("Access-Control-Allow-Methods", "POST");
ResourceParameters *params = req->getParams();
std::string blink_target;
if (!params->getQueryParameter("blink_target", blink_target)) {
// if no blink_target was supplied in the URL parameters of the
// POST request, then assume we should blink the LED
blink_target = "LED";
}
if (blink_target == "LED") {
uint8_t count = 10;
while (count > 0) {
ledBlink.set(true);
delay(50);
ledBlink.set(false);
delay(50);
count = count - 1;
}
} else {
#if HAS_SCREEN
if (screen)
screen->blink();
#endif
}
JSONObject jsonObjOuter;
jsonObjOuter["status"] = new JSONValue("ok");
JSONValue *value = new JSONValue(jsonObjOuter);
std::string jsonString = value->Stringify();
res->print(jsonString.c_str());
delete value;
}
void handleScanNetworks(HTTPRequest *req, HTTPResponse *res) void handleScanNetworks(HTTPRequest *req, HTTPResponse *res)
{ {
res->setHeader("Content-Type", "application/json"); res->setHeader("Content-Type", "application/json");

View File

@@ -11,6 +11,7 @@ void handleFormUpload(HTTPRequest *req, HTTPResponse *res);
void handleScanNetworks(HTTPRequest *req, HTTPResponse *res); void handleScanNetworks(HTTPRequest *req, HTTPResponse *res);
void handleFsBrowseStatic(HTTPRequest *req, HTTPResponse *res); void handleFsBrowseStatic(HTTPRequest *req, HTTPResponse *res);
void handleFsDeleteStatic(HTTPRequest *req, HTTPResponse *res); void handleFsDeleteStatic(HTTPRequest *req, HTTPResponse *res);
void handleBlinkLED(HTTPRequest *req, HTTPResponse *res);
void handleReport(HTTPRequest *req, HTTPResponse *res); void handleReport(HTTPRequest *req, HTTPResponse *res);
void handleNodes(HTTPRequest *req, HTTPResponse *res); void handleNodes(HTTPRequest *req, HTTPResponse *res);
void handleUpdateFs(HTTPRequest *req, HTTPResponse *res); void handleUpdateFs(HTTPRequest *req, HTTPResponse *res);

View File

@@ -643,6 +643,12 @@ void AdminModule::handleSetConfig(const meshtastic_Config &c)
accelerometerThread->enabled = true; accelerometerThread->enabled = true;
accelerometerThread->start(); accelerometerThread->start();
} }
#endif
#ifdef LED_PIN
// Turn LED off if heartbeat by config
if (c.payload_variant.device.led_heartbeat_disabled) {
digitalWrite(LED_PIN, HIGH ^ LED_STATE_ON);
}
#endif #endif
if (config.device.button_gpio == c.payload_variant.device.button_gpio && if (config.device.button_gpio == c.payload_variant.device.button_gpio &&
config.device.buzzer_gpio == c.payload_variant.device.buzzer_gpio && config.device.buzzer_gpio == c.payload_variant.device.buzzer_gpio &&

View File

@@ -1,9 +1,9 @@
#include "configuration.h" #include "configuration.h"
#if !MESHTASTIC_EXCLUDE_INPUTBROKER #if !MESHTASTIC_EXCLUDE_INPUTBROKER
#include "buzz/BuzzerFeedbackThread.h" #include "buzz/BuzzerFeedbackThread.h"
#include "modules/StatusLEDModule.h"
#include "modules/SystemCommandsModule.h" #include "modules/SystemCommandsModule.h"
#endif #endif
#include "modules/StatusLEDModule.h"
#if !MESHTASTIC_EXCLUDE_PKI #if !MESHTASTIC_EXCLUDE_PKI
#include "KeyVerificationModule.h" #include "KeyVerificationModule.h"
#endif #endif
@@ -109,7 +109,9 @@ void setupModules()
buzzerFeedbackThread = new BuzzerFeedbackThread(); buzzerFeedbackThread = new BuzzerFeedbackThread();
} }
#endif #endif
#if defined(LED_CHARGE) || defined(LED_PAIRING)
statusLEDModule = new StatusLEDModule(); statusLEDModule = new StatusLEDModule();
#endif
#if !MESHTASTIC_EXCLUDE_ADMIN #if !MESHTASTIC_EXCLUDE_ADMIN
adminModule = new AdminModule(); adminModule = new AdminModule();

View File

@@ -1,4 +1,5 @@
#include "PowerStressModule.h" #include "PowerStressModule.h"
#include "Led.h"
#include "MeshService.h" #include "MeshService.h"
#include "NodeDB.h" #include "NodeDB.h"
#include "PowerMon.h" #include "PowerMon.h"
@@ -77,12 +78,10 @@ int32_t PowerStressModule::runOnce()
switch (p.cmd) { switch (p.cmd) {
case meshtastic_PowerStressMessage_Opcode_LED_ON: case meshtastic_PowerStressMessage_Opcode_LED_ON:
// FIXME - implement ledForceOn.set(true);
// ledForceOn.set(true);
break; break;
case meshtastic_PowerStressMessage_Opcode_LED_OFF: case meshtastic_PowerStressMessage_Opcode_LED_OFF:
// FIXME - implement ledForceOn.set(false);
// ledForceOn.set(false);
break; break;
case meshtastic_PowerStressMessage_Opcode_GPS_ON: case meshtastic_PowerStressMessage_Opcode_GPS_ON:
// FIXME - implement // FIXME - implement

View File

@@ -13,10 +13,8 @@ StatusLEDModule::StatusLEDModule() : concurrency::OSThread("StatusLEDModule")
{ {
bluetoothStatusObserver.observe(&bluetoothStatus->onNewStatus); bluetoothStatusObserver.observe(&bluetoothStatus->onNewStatus);
powerStatusObserver.observe(&powerStatus->onNewStatus); powerStatusObserver.observe(&powerStatus->onNewStatus);
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
if (inputBroker) if (inputBroker)
inputObserver.observe(inputBroker); inputObserver.observe(inputBroker);
#endif
} }
int StatusLEDModule::handleStatusUpdate(const meshtastic::Status *arg) int StatusLEDModule::handleStatusUpdate(const meshtastic::Status *arg)
@@ -64,22 +62,19 @@ int StatusLEDModule::handleStatusUpdate(const meshtastic::Status *arg)
} }
return 0; return 0;
}; };
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
int StatusLEDModule::handleInputEvent(const InputEvent *event) int StatusLEDModule::handleInputEvent(const InputEvent *event)
{ {
lastUserbuttonTime = millis(); lastUserbuttonTime = millis();
return 0; return 0;
} }
#endif
int32_t StatusLEDModule::runOnce() int32_t StatusLEDModule::runOnce()
{ {
my_interval = 1000; my_interval = 1000;
if (power_state == charging) { if (power_state == charging) {
#ifndef POWER_LED_HARDWARE_BLINKS_WHILE_CHARGING
CHARGE_LED_state = !CHARGE_LED_state; CHARGE_LED_state = !CHARGE_LED_state;
#endif
} else if (power_state == charged) { } else if (power_state == charged) {
CHARGE_LED_state = LED_STATE_ON; CHARGE_LED_state = LED_STATE_ON;
} else if (power_state == critical) { } else if (power_state == critical) {
@@ -99,15 +94,7 @@ int32_t StatusLEDModule::runOnce()
} }
} else { } else {
if (doing_fast_blink) { CHARGE_LED_state = LED_STATE_OFF;
CHARGE_LED_state = LED_STATE_OFF;
doing_fast_blink = false;
my_interval = 999;
} else {
CHARGE_LED_state = LED_STATE_ON;
doing_fast_blink = true;
my_interval = 1;
}
} }
if (!config.bluetooth.enabled || PAIRING_LED_starttime + 30 * 1000 < millis() || doing_fast_blink) { if (!config.bluetooth.enabled || PAIRING_LED_starttime + 30 * 1000 < millis() || doing_fast_blink) {
@@ -125,11 +112,6 @@ int32_t StatusLEDModule::runOnce()
PAIRING_LED_state = LED_STATE_ON; PAIRING_LED_state = LED_STATE_ON;
} }
// Override if disabled in config
if (config.device.led_heartbeat_disabled) {
CHARGE_LED_state = LED_STATE_OFF;
}
#ifdef Battery_LED_1
bool chargeIndicatorLED1 = LED_STATE_OFF; bool chargeIndicatorLED1 = LED_STATE_OFF;
bool chargeIndicatorLED2 = LED_STATE_OFF; bool chargeIndicatorLED2 = LED_STATE_OFF;
bool chargeIndicatorLED3 = LED_STATE_OFF; bool chargeIndicatorLED3 = LED_STATE_OFF;
@@ -144,23 +126,9 @@ int32_t StatusLEDModule::runOnce()
if (powerStatus && powerStatus->getBatteryChargePercent() >= 75) if (powerStatus && powerStatus->getBatteryChargePercent() >= 75)
chargeIndicatorLED4 = LED_STATE_ON; chargeIndicatorLED4 = LED_STATE_ON;
} }
#endif
#if defined(HAS_PMU) #ifdef LED_CHARGE
if (pmu_found && PMU) { digitalWrite(LED_CHARGE, CHARGE_LED_state);
// blink the axp led
PMU->setChargingLedMode(CHARGE_LED_state ? XPOWERS_CHG_LED_ON : XPOWERS_CHG_LED_OFF);
}
#endif
#ifdef PCA_LED_POWER
io.digitalWrite(PCA_LED_POWER, CHARGE_LED_state);
#endif
#ifdef PCA_LED_ENABLE
io.digitalWrite(PCA_LED_ENABLE, CHARGE_LED_state);
#endif
#ifdef LED_POWER
digitalWrite(LED_POWER, CHARGE_LED_state);
#endif #endif
#ifdef LED_PAIRING #ifdef LED_PAIRING
digitalWrite(LED_PAIRING, PAIRING_LED_state); digitalWrite(LED_PAIRING, PAIRING_LED_state);
@@ -181,43 +149,3 @@ int32_t StatusLEDModule::runOnce()
return (my_interval); return (my_interval);
} }
void StatusLEDModule::setPowerLED(bool LEDon)
{
#if defined(HAS_PMU)
if (pmu_found && PMU) {
// blink the axp led
PMU->setChargingLedMode(LEDon ? XPOWERS_CHG_LED_ON : XPOWERS_CHG_LED_OFF);
}
#endif
if (LEDon)
LEDon = LED_STATE_ON;
else
LEDon = LED_STATE_OFF;
#ifdef PCA_LED_POWER
io.digitalWrite(PCA_LED_POWER, LEDon);
#endif
#ifdef PCA_LED_ENABLE
io.digitalWrite(PCA_LED_ENABLE, LEDon);
#endif
#ifdef LED_POWER
digitalWrite(LED_POWER, LEDon);
#endif
#ifdef LED_PAIRING
digitalWrite(LED_PAIRING, LEDon);
#endif
#ifdef Battery_LED_1
digitalWrite(Battery_LED_1, LEDon);
#endif
#ifdef Battery_LED_2
digitalWrite(Battery_LED_2, LEDon);
#endif
#ifdef Battery_LED_3
digitalWrite(Battery_LED_3, LEDon);
#endif
#ifdef Battery_LED_4
digitalWrite(Battery_LED_4, LEDon);
#endif
}

View File

@@ -5,14 +5,10 @@
#include "PowerStatus.h" #include "PowerStatus.h"
#include "concurrency/OSThread.h" #include "concurrency/OSThread.h"
#include "configuration.h" #include "configuration.h"
#include "main.h" #include "input/InputBroker.h"
#include <Arduino.h> #include <Arduino.h>
#include <functional> #include <functional>
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
#include "input/InputBroker.h"
#endif
class StatusLEDModule : private concurrency::OSThread class StatusLEDModule : private concurrency::OSThread
{ {
bool slowTrack = false; bool slowTrack = false;
@@ -21,11 +17,8 @@ class StatusLEDModule : private concurrency::OSThread
StatusLEDModule(); StatusLEDModule();
int handleStatusUpdate(const meshtastic::Status *); int handleStatusUpdate(const meshtastic::Status *);
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
int handleInputEvent(const InputEvent *arg);
#endif
void setPowerLED(bool); int handleInputEvent(const InputEvent *arg);
protected: protected:
unsigned int my_interval = 1000; // interval in millisconds unsigned int my_interval = 1000; // interval in millisconds
@@ -35,10 +28,8 @@ class StatusLEDModule : private concurrency::OSThread
CallbackObserver<StatusLEDModule, const meshtastic::Status *>(this, &StatusLEDModule::handleStatusUpdate); CallbackObserver<StatusLEDModule, const meshtastic::Status *>(this, &StatusLEDModule::handleStatusUpdate);
CallbackObserver<StatusLEDModule, const meshtastic::Status *> powerStatusObserver = CallbackObserver<StatusLEDModule, const meshtastic::Status *> powerStatusObserver =
CallbackObserver<StatusLEDModule, const meshtastic::Status *>(this, &StatusLEDModule::handleStatusUpdate); CallbackObserver<StatusLEDModule, const meshtastic::Status *>(this, &StatusLEDModule::handleStatusUpdate);
#if !MESHTASTIC_EXCLUDE_INPUTBROKER
CallbackObserver<StatusLEDModule, const InputEvent *> inputObserver = CallbackObserver<StatusLEDModule, const InputEvent *> inputObserver =
CallbackObserver<StatusLEDModule, const InputEvent *>(this, &StatusLEDModule::handleInputEvent); CallbackObserver<StatusLEDModule, const InputEvent *>(this, &StatusLEDModule::handleInputEvent);
#endif
private: private:
bool CHARGE_LED_state = LED_STATE_OFF; bool CHARGE_LED_state = LED_STATE_OFF;

View File

@@ -158,7 +158,7 @@
#endif #endif
#ifdef PIN_LED1 #ifdef PIN_LED1
#define LED_POWER PIN_LED1 // LED1 on nrf52840-DK #define LED_PIN PIN_LED1 // LED1 on nrf52840-DK
#endif #endif
#ifdef PIN_BUTTON1 #ifdef PIN_BUTTON1

View File

@@ -5,6 +5,7 @@
#endif #endif
#include "Default.h" #include "Default.h"
#include "Led.h"
#include "MeshRadio.h" #include "MeshRadio.h"
#include "MeshService.h" #include "MeshService.h"
#include "NodeDB.h" #include "NodeDB.h"
@@ -12,7 +13,6 @@
#include "detect/LoRaRadioType.h" #include "detect/LoRaRadioType.h"
#include "error.h" #include "error.h"
#include "main.h" #include "main.h"
#include "modules/StatusLEDModule.h"
#include "sleep.h" #include "sleep.h"
#include "target_specific.h" #include "target_specific.h"
@@ -268,7 +268,8 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false, bool skipSaveN
digitalWrite(PIN_WD_EN, LOW); digitalWrite(PIN_WD_EN, LOW);
#endif #endif
#endif #endif
statusLEDModule->setPowerLED(false); ledBlink.set(false);
#ifdef RESET_OLED #ifdef RESET_OLED
digitalWrite(RESET_OLED, 1); // put the display in reset before killing its power digitalWrite(RESET_OLED, 1); // put the display in reset before killing its power
#endif #endif

View File

@@ -14,7 +14,7 @@
#define LORA_CS 5 #define LORA_CS 5
#define RF95_FAN_EN 17 #define RF95_FAN_EN 17
// 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 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 16 // gpio pin used to send data to the neopixels #define NEOPIXEL_DATA 16 // gpio pin used to send data to the neopixels

View File

@@ -20,7 +20,7 @@
#define LORA_DIO2 #define LORA_DIO2
#define LORA_DIO3 #define LORA_DIO3
#define LED_POWER 16 // green - blue is at 17 #define LED_PIN 16 // green - blue is at 17
#define BUTTON_PIN 25 #define BUTTON_PIN 25
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -23,6 +23,8 @@
#define SX126X_TXEN RADIOLIB_NC #define SX126X_TXEN RADIOLIB_NC
#define SX126X_RXEN RADIOLIB_NC #define SX126X_RXEN RADIOLIB_NC
// Status
// #define LED_PIN 1
// External notification // External notification
// FIXME: Check if EXT_NOTIFY_OUT actualy has any effect and removes the need for setting the external notication pin in the // FIXME: Check if EXT_NOTIFY_OUT actualy has any effect and removes the need for setting the external notication pin in the
// app/preferences // app/preferences

View File

@@ -21,8 +21,8 @@
#define BUTTON_PIN 15 // Right side button - if not available, set device.button_gpio to 0 from Meshtastic client #define BUTTON_PIN 15 // Right side button - if not available, set device.button_gpio to 0 from Meshtastic client
// LEDs // LEDs
#define LED_POWER 13 // Tx LED #define LED_PIN 13 // Tx LED
#define USER_LED 2 // Rx LED #define USER_LED 2 // Rx LED
// Buzzer // Buzzer
#define PIN_BUZZER 33 #define PIN_BUZZER 33

View File

@@ -15,7 +15,7 @@
#define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k) #define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k)
#define EXT_PWR_DETECT 4 // Pin to detect connected external power source for LILYGO® TTGO T-Energy T18 and other DIY boards #define EXT_PWR_DETECT 4 // Pin to detect connected external power source for LILYGO® TTGO T-Energy T18 and other DIY boards
#define EXT_NOTIFY_OUT 12 // Overridden default pin to use for Ext Notify Module (#975). #define EXT_NOTIFY_OUT 12 // Overridden default pin to use for Ext Notify Module (#975).
#define LED_POWER 2 // add status LED (compatible with core-pcb and DIY targets) #define LED_PIN 2 // add status LED (compatible with core-pcb and DIY targets)
// Radio // Radio
#define USE_SX1262 // E22-900M30S uses SX1262 #define USE_SX1262 // E22-900M30S uses SX1262

View File

@@ -15,7 +15,7 @@
#define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k) #define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k)
#define EXT_PWR_DETECT 4 // Pin to detect connected external power source for LILYGO® TTGO T-Energy T18 and other DIY boards #define EXT_PWR_DETECT 4 // Pin to detect connected external power source for LILYGO® TTGO T-Energy T18 and other DIY boards
#define EXT_NOTIFY_OUT 12 // Overridden default pin to use for Ext Notify Module (#975). #define EXT_NOTIFY_OUT 12 // Overridden default pin to use for Ext Notify Module (#975).
#define LED_POWER 2 // add status LED (compatible with core-pcb and DIY targets) #define LED_PIN 2 // add status LED (compatible with core-pcb and DIY targets)
#define LORA_DIO0 26 // a No connect on the SX1262/SX1268 module #define LORA_DIO0 26 // a No connect on the SX1262/SX1268 module
#define LORA_RESET 23 // RST for SX1276, and for SX1262/SX1268 #define LORA_RESET 23 // RST for SX1276, and for SX1262/SX1268

View File

@@ -3,7 +3,7 @@
// HACKBOX LoRa IO Kit // HACKBOX LoRa IO Kit
// Uses a ESP-32-WROOM and a RA-01SH (SX1262) LoRa Board // Uses a ESP-32-WROOM and a RA-01SH (SX1262) LoRa Board
#define LED_POWER 2 // LED #define LED_PIN 2 // LED
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
#define HAS_SCREEN 0 #define HAS_SCREEN 0

View File

@@ -12,7 +12,7 @@
#define RESET_OLED 16 // If defined, this pin will be used to reset the display controller #define RESET_OLED 16 // If defined, this pin will be used to reset the display controller
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses #define BUTTON_PIN 0 // If defined, this will be used for user button presses
#define USE_RF95 #define USE_RF95

View File

@@ -18,7 +18,7 @@
#define RESET_OLED 16 // If defined, this pin will be used to reset the display controller #define RESET_OLED 16 // If defined, this pin will be used to reset the display controller
#define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses #define BUTTON_PIN 0 // If defined, this will be used for user button presses
#define USE_RF95 #define USE_RF95

View File

@@ -13,7 +13,7 @@
#define RESET_OLED 16 // If defined, this pin will be used to reset the display controller #define RESET_OLED 16 // If defined, this pin will be used to reset the display controller
#define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses #define BUTTON_PIN 0 // If defined, this will be used for user button presses
#define USE_RF95 #define USE_RF95

View File

@@ -15,7 +15,7 @@
#undef GPS_TX_PIN #undef GPS_TX_PIN
// Green / Lora = PIN 22 / GPIO2, Yellow / Wifi = PIN 23 / GPIO0, Blue / BLE = PIN 25 / GPIO16 // Green / Lora = PIN 22 / GPIO2, Yellow / Wifi = PIN 23 / GPIO0, Blue / BLE = PIN 25 / GPIO16
#define LED_POWER 22 #define LED_PIN 22
#define WIFI_LED 23 #define WIFI_LED 23
#define BLE_LED 25 #define BLE_LED 25

View File

@@ -1,7 +1,7 @@
#define I2C_SCL SCL #define I2C_SCL SCL
#define I2C_SDA SDA #define I2C_SDA SDA
#define LED_POWER LED #define LED_PIN LED
// active low, powers the Battery reader, but no lora antenna boost (?) // active low, powers the Battery reader, but no lora antenna boost (?)
// #define VEXT_ENABLE Vext // #define VEXT_ENABLE Vext

View File

@@ -11,7 +11,7 @@
// Green LED // Green LED
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
#define LED_POWER 10 #define LED_PIN 10
// PCF8563 RTC Module // PCF8563 RTC Module
#define PCF8563_RTC 0x51 #define PCF8563_RTC 0x51

View File

@@ -37,7 +37,7 @@
/* /*
LED PIN setup. LED PIN setup.
*/ */
#define LED_POWER 15 #define LED_PIN 15
/* /*
Five way button when using ADC. Five way button when using ADC.

View File

@@ -43,7 +43,7 @@ static const uint8_t SCK = 33;
#undef GPS_TX_PIN #undef GPS_TX_PIN
#define GPS_TX_PIN (TX1) #define GPS_TX_PIN (TX1)
#define LED_POWER LED_BLUE #define LED_PIN LED_BLUE
#define PIN_VBAT WB_A0 #define PIN_VBAT WB_A0
#define BATTERY_PIN PIN_VBAT #define BATTERY_PIN PIN_VBAT

View File

@@ -9,7 +9,7 @@
#define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Module. #define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Module.
#define LED_STATE_ON 0 // State when LED is lit #define LED_STATE_ON 0 // State when LED is lit
#define LED_POWER 4 // Newer tbeams (1.1) have an extra led on GPIO4 #define LED_PIN 4 // Newer tbeams (1.1) have an extra led on GPIO4
// TTGO uses a common pinout for their SX1262 vs RF95 modules - both can be enabled and we will probe at runtime for RF95 and if // TTGO uses a common pinout for their SX1262 vs RF95 modules - both can be enabled and we will probe at runtime for RF95 and if
// not found then probe for SX1262 // not found then probe for SX1262
@@ -49,7 +49,7 @@
#undef EXT_NOTIFY_OUT #undef EXT_NOTIFY_OUT
#undef LED_STATE_ON #undef LED_STATE_ON
#undef LED_POWER #undef LED_PIN
#define HAS_CST226SE 1 #define HAS_CST226SE 1
#define HAS_TOUCHSCREEN 1 #define HAS_TOUCHSCREEN 1

View File

@@ -5,7 +5,7 @@
#define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost
#define VEXT_ON_VALUE LOW #define VEXT_ON_VALUE LOW
#define LED_POWER 2 // If defined we will blink this LED #define LED_PIN 2 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses #define BUTTON_PIN 0 // If defined, this will be used for user button presses
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP
#define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Module. #define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Module.

View File

@@ -7,7 +7,7 @@
#define RESET_OLED 16 // If defined, this pin will be used to reset the display controller #define RESET_OLED 16 // If defined, this pin will be used to reset the display controller
#define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN 36 #define BUTTON_PIN 36
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -5,7 +5,7 @@
#define I2C_SCL 22 #define I2C_SCL 22
#define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE 21 // active low, powers the oled display and the lora antenna boost
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN \ #define BUTTON_PIN \
0 // If defined, this will be used for user button presses, if your board doesn't have a physical switch, you can wire one 0 // If defined, this will be used for user button presses, if your board doesn't have a physical switch, you can wire one
// between this pin and ground // between this pin and ground

View File

@@ -22,4 +22,4 @@ build_flags =
${env:tlora-v2-1-1_6.build_flags} ${env:tlora-v2-1-1_6.build_flags}
-DBUTTON_PIN=0 -DBUTTON_PIN=0
-DPIN_BUZZER=25 -DPIN_BUZZER=25
-DLED_POWER=-1 -DLED_PIN=-1

View File

@@ -8,10 +8,10 @@
#define I2C_SDA 21 // I2C pins for this board #define I2C_SDA 21 // I2C pins for this board
#define I2C_SCL 22 #define I2C_SCL 22
#if defined(LED_POWER) && LED_POWER == -1 #if defined(LED_PIN) && LED_PIN == -1
#undef LED_POWER #undef LED_PIN
#else #else
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#endif #endif
#define USE_RF95 #define USE_RF95

View File

@@ -6,7 +6,7 @@
#define I2C_SDA 21 // I2C pins for this board #define I2C_SDA 21 // I2C pins for this board
#define I2C_SCL 22 #define I2C_SCL 22
#define LED_POWER 25 // If defined we will blink this LED #define LED_PIN 25 // If defined we will blink this LED
#define BUTTON_PIN 12 // If defined, this will be used for user button presses, #define BUTTON_PIN 12 // If defined, this will be used for user button presses,
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -8,7 +8,7 @@
#define GPS_RX_PIN 9 #define GPS_RX_PIN 9
#define GPS_TX_PIN 10 #define GPS_TX_PIN 10
#define LED_POWER 13 // 13 red, 2 blue, 15 red #define LED_PIN 13 // 13 red, 2 blue, 15 red
#define BUTTON_PIN 0 #define BUTTON_PIN 0
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -4,7 +4,7 @@
#define I2C_SCL SCL #define I2C_SCL SCL
#define BUTTON_PIN 9 // BOOT button #define BUTTON_PIN 9 // BOOT button
#define LED_POWER 30 // RGB LED #define LED_PIN 30 // RGB LED
#define USE_RF95 #define USE_RF95
#define LORA_SCK 4 #define LORA_SCK 4

View File

@@ -3,7 +3,7 @@
// Hackerboxes LoRa ESP32-C3 OLED Kit // Hackerboxes LoRa ESP32-C3 OLED Kit
// Uses a ESP32-C3 OLED Board and a RA-01SH (SX1262) LoRa Board // Uses a ESP32-C3 OLED Board and a RA-01SH (SX1262) LoRa Board
#define LED_POWER 8 // LED #define LED_PIN 8 // LED
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
#define HAS_SCREEN 0 #define HAS_SCREEN 0

View File

@@ -3,7 +3,7 @@
// LED pin on HT-DEV-ESP_V2 and HT-DEV-ESP_V3 // LED pin on HT-DEV-ESP_V2 and HT-DEV-ESP_V3
// https://resource.heltec.cn/download/HT-CT62/HT-CT62_Reference_Design.pdf // https://resource.heltec.cn/download/HT-CT62/HT-CT62_Reference_Design.pdf
// https://resource.heltec.cn/download/HT-DEV-ESP/HT-DEV-ESP_V3_Sch.pdf // https://resource.heltec.cn/download/HT-DEV-ESP/HT-DEV-ESP_V3_Sch.pdf
#define LED_POWER 2 // LED #define LED_PIN 2 // LED
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
#define HAS_SCREEN 0 #define HAS_SCREEN 0

View File

@@ -1,7 +1,7 @@
#define I2C_SDA 8 // I2C pins for this board #define I2C_SDA 8 // I2C pins for this board
#define I2C_SCL 9 #define I2C_SCL 9
#define LED_POWER 7 // If defined we will blink this LED #define LED_PIN 7 // If defined we will blink this LED
#define LED_STATE_ON 0 // State when LED is lit #define LED_STATE_ON 0 // State when LED is lit
#define USE_SX1262 #define USE_SX1262

View File

@@ -1,7 +1,7 @@
#define I2C_SDA 34 // I2C pins for this board #define I2C_SDA 34 // I2C pins for this board
#define I2C_SCL 36 #define I2C_SCL 36
#define LED_POWER 15 // If defined we will blink this LED #define LED_PIN 15 // If defined we will blink this LED
#define HAS_NEOPIXEL // Enable the use of neopixels #define HAS_NEOPIXEL // Enable the use of neopixels
#define NEOPIXEL_COUNT 3 // How many neopixels are connected #define NEOPIXEL_COUNT 3 // How many neopixels are connected

View File

@@ -1,7 +1,7 @@
// EByte EoRA-Hub // EByte EoRA-Hub
// Uses E80 (LR1121) LoRa module // Uses E80 (LR1121) LoRa module
#define LED_POWER 35 #define LED_PIN 35
// Button - user interface // Button - user interface
#define BUTTON_PIN 0 // BOOT button #define BUTTON_PIN 0 // BOOT button

View File

@@ -1,5 +1,5 @@
// LED - status indication // LED - status indication
#define LED_POWER 37 #define LED_PIN 37
// Button - user interface // Button - user interface
#define BUTTON_PIN 0 // This is the BOOT button, and it has its own pull-up resistor #define BUTTON_PIN 0 // This is the BOOT button, and it has its own pull-up resistor

View File

@@ -100,7 +100,7 @@
*/ */
// Status // Status
#define LED_POWER 1 #define LED_PIN 1
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
// External notification // External notification
// FIXME: Check if EXT_NOTIFY_OUT actualy has any effect and removes the need for setting the external notication pin in the // FIXME: Check if EXT_NOTIFY_OUT actualy has any effect and removes the need for setting the external notication pin in the

View File

@@ -1,5 +1,5 @@
// Status // Status
#define LED_POWER 1 #define LED_PIN 1
#define PIN_BUTTON1 47 // 功能键 #define PIN_BUTTON1 47 // 功能键
#define PIN_BUTTON2 4 // 电源键 #define PIN_BUTTON2 4 // 电源键

View File

@@ -8,11 +8,5 @@ void earlyInitVariant()
Wire.begin(48, 47); Wire.begin(48, 47);
io.pinMode(PCA_PIN_EINK_EN, OUTPUT); io.pinMode(PCA_PIN_EINK_EN, OUTPUT);
io.pinMode(PCA_PIN_POWER_EN, OUTPUT); io.pinMode(PCA_PIN_POWER_EN, OUTPUT);
io.pinMode(PCA_LED_POWER, OUTPUT);
io.pinMode(PCA_LED_USER, OUTPUT);
io.pinMode(PCA_LED_ENABLE, OUTPUT);
io.digitalWrite(PCA_PIN_POWER_EN, HIGH); io.digitalWrite(PCA_PIN_POWER_EN, HIGH);
io.digitalWrite(PCA_LED_USER, LOW);
io.digitalWrite(PCA_LED_ENABLE, LOW);
} }

View File

@@ -8,10 +8,8 @@
// LED // LED
// Both of these are on the GPIO expander // Both of these are on the GPIO expander
#define PCA_LED_USER 1 // the Blue LED #define PCA_LED_USER 1 // the Blue LED
#define PCA_LED_ENABLE 2 // the power supply to the LEDs, in an OR arrangement with VBUS power #define PCA_LED_POWER 3 // the Red LED? Seems to have hardware logic to blink when USB is plugged in.
#define PCA_LED_POWER 3 // the Red LED? Seems to have hardware logic to blink when USB is plugged in.
#define POWER_LED_HARDWARE_BLINKS_WHILE_CHARGING
// USB_CHECK // USB_CHECK
#define EXT_PWR_DETECT 12 #define EXT_PWR_DETECT 12

View File

@@ -11,7 +11,7 @@
#define I2C_SDA 12 #define I2C_SDA 12
#define I2C_SCL 14 #define I2C_SCL 14
#define LED_POWER 46 #define LED_PIN 46
#define LED_STATE_ON 0 // State when LED is litted #define LED_STATE_ON 0 // State when LED is litted
// #define BUTTON_PIN 15 // Pico OLED 1.3 User key 0 - removed User key 1 (17) // #define BUTTON_PIN 15 // Pico OLED 1.3 User key 0 - removed User key 1 (17)

View File

@@ -26,7 +26,7 @@
// #define GPS_RX_PIN 44 // #define GPS_RX_PIN 44
// #define GPS_TX_PIN 43 // #define GPS_TX_PIN 43
#define LED_POWER 41 #define LED_PIN 41
#define BUTTON_PIN 2 #define BUTTON_PIN 2
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -11,7 +11,7 @@
#define I2C_SDA 18 // 1 // I2C pins for this board #define I2C_SDA 18 // 1 // I2C pins for this board
#define I2C_SCL 17 // 2 #define I2C_SCL 17 // 2
// #define LED_POWER 38 // This is a RGB LED not a standard LED // #define LED_PIN 38 // This is a RGB LED not a standard LED
#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 38 // gpio pin used to send data to the neopixels #define NEOPIXEL_DATA 38 // gpio pin used to send data to the neopixels

View File

@@ -11,7 +11,7 @@
#define I2C_SDA 18 // 1 // I2C pins for this board #define I2C_SDA 18 // 1 // I2C pins for this board
#define I2C_SCL 17 // 2 #define I2C_SCL 17 // 2
// #define LED_POWER 38 // This is a RGB LED not a standard LED // #define LED_PIN 38 // This is a RGB LED not a standard LED
#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 38 // gpio pin used to send data to the neopixels #define NEOPIXEL_DATA 38 // gpio pin used to send data to the neopixels

View File

@@ -6,7 +6,7 @@
#define I2C_SDA1 45 #define I2C_SDA1 45
#define I2C_SCL1 46 #define I2C_SCL1 46
#define LED_POWER 6 #define LED_PIN 6
#define LED_STATE_ON 1 #define LED_STATE_ON 1
#define BUTTON_PIN 0 #define BUTTON_PIN 0

View File

@@ -1,5 +1,5 @@
#define LED_POWER 33 #define LED_PIN 33
#define LED_POWER2 34 #define LED_PIN2 34
#define EXT_PWR_DETECT 35 #define EXT_PWR_DETECT 35
#define BUTTON_PIN 18 #define BUTTON_PIN 18

View File

@@ -1,4 +1,4 @@
#define LED_POWER LED #define LED_PIN LED
#define USE_SSD1306 // Heltec_v3 has a SSD1306 display #define USE_SSD1306 // Heltec_v3 has a SSD1306 display

View File

@@ -26,7 +26,7 @@ build_flags =
${heltec_v4_base.build_flags} ${heltec_v4_base.build_flags}
-D HELTEC_V4_OLED -D HELTEC_V4_OLED
-D USE_SSD1306 ; Heltec_v4 has an SSD1315 display (compatible with SSD1306 driver) -D USE_SSD1306 ; Heltec_v4 has an SSD1315 display (compatible with SSD1306 driver)
-D LED_POWER=35 -D LED_PIN=35
-D RESET_OLED=21 -D RESET_OLED=21
-D I2C_SDA=17 -D I2C_SDA=17
-D I2C_SCL=18 -D I2C_SCL=18

View File

@@ -1,4 +1,4 @@
#define LED_POWER 45 // LED is not populated on earliest board variant #define LED_PIN 45 // LED is not populated on earliest board variant
#define BUTTON_PIN 0 #define BUTTON_PIN 0
#define PIN_BUTTON2 21 // Second built-in button #define PIN_BUTTON2 21 // Second built-in button
#define ALT_BUTTON_PIN PIN_BUTTON2 // Send the up event #define ALT_BUTTON_PIN PIN_BUTTON2 // Send the up event

View File

@@ -1,4 +1,4 @@
#define LED_POWER 45 // LED is not populated on earliest board variant #define LED_PIN 45 // LED is not populated on earliest board variant
#define BUTTON_PIN 0 #define BUTTON_PIN 0
#define PIN_BUTTON2 21 // Second built-in button #define PIN_BUTTON2 21 // Second built-in button
#define ALT_BUTTON_PIN PIN_BUTTON2 // Send the up event #define ALT_BUTTON_PIN PIN_BUTTON2 // Send the up event

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define BUTTON_PIN 0 #define BUTTON_PIN 0
// I2C // I2C

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define BUTTON_PIN 0 #define BUTTON_PIN 0
// I2C // I2C

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define _VARIANT_HELTEC_WIRELESS_TRACKER #define _VARIANT_HELTEC_WIRELESS_TRACKER
#define HELTEC_TRACKER_V1_X #define HELTEC_TRACKER_V1_X

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define HELTEC_TRACKER_V1_X #define HELTEC_TRACKER_V1_X

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define _VARIANT_HELTEC_WIRELESS_TRACKER #define _VARIANT_HELTEC_WIRELESS_TRACKER

View File

@@ -1,7 +1,7 @@
#define I2C_SCL SCL #define I2C_SCL SCL
#define I2C_SDA SDA #define I2C_SDA SDA
#define LED_POWER LED #define LED_PIN LED
#define VEXT_ENABLE Vext // active low, powers the oled display and the lora antenna boost #define VEXT_ENABLE Vext // active low, powers the oled display and the lora antenna boost
#define VEXT_ON_VALUE LOW #define VEXT_ON_VALUE LOW

View File

@@ -13,7 +13,7 @@
#define ADC_CHANNEL ADC1_GPIO4_CHANNEL #define ADC_CHANNEL ADC1_GPIO4_CHANNEL
// LED // LED
#define LED_POWER 21 #define LED_PIN 21
// Button // Button
#define BUTTON_PIN 0 #define BUTTON_PIN 0

View File

@@ -1,7 +1,7 @@
#define I2C_SDA 11 // I2C pins for this board #define I2C_SDA 11 // I2C pins for this board
#define I2C_SCL 10 #define I2C_SCL 10
#define LED_POWER 1 // If defined we will blink this LED #define LED_PIN 1 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses #define BUTTON_PIN 0 // If defined, this will be used for user button presses
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -4,7 +4,7 @@
#define USE_SSD1306 #define USE_SSD1306
#define DISPLAY_FLIP_SCREEN #define DISPLAY_FLIP_SCREEN
#define LED_POWER 15 // If defined we will blink this LED #define LED_PIN 15 // If defined we will blink this LED
#define HAS_NEOPIXEL // Enable the use of neopixels #define HAS_NEOPIXEL // Enable the use of neopixels
#define NEOPIXEL_COUNT 3 // How many neopixels are connected #define NEOPIXEL_COUNT 3 // How many neopixels are connected

View File

@@ -24,7 +24,7 @@
#define PIN_LED1 LED_GREEN #define PIN_LED1 LED_GREEN
#define LED_NOTIFICATION LED_BLUE #define LED_NOTIFICATION LED_BLUE
#define LED_POWER LED_GREEN #define LED_PIN LED_GREEN
#define ledOff(pin) pinMode(pin, INPUT) #define ledOff(pin) pinMode(pin, INPUT)
#define LED_STATE_ON 1 // State when LED is litted #define LED_STATE_ON 1 // State when LED is litted

View File

@@ -32,7 +32,7 @@
#define PIN_LED1 LED_GREEN #define PIN_LED1 LED_GREEN
#define LED_NOTIFICATION LED_BLUE #define LED_NOTIFICATION LED_BLUE
#define LED_POWER LED_GREEN #define LED_PIN LED_GREEN
#define ledOff(pin) pinMode(pin, INPUT) #define ledOff(pin) pinMode(pin, INPUT)
#define LED_STATE_ON 1 // State when LED is litted #define LED_STATE_ON 1 // State when LED is litted

View File

@@ -30,7 +30,7 @@ Expansion Board Infomation : https://www.seeedstudio.com/Seeeduino-XIAO-Expansio
L76K GPS Module Information : https://www.seeedstudio.com/L76K-GNSS-Module-for-Seeed-Studio-XIAO-p-5864.html L76K GPS Module Information : https://www.seeedstudio.com/L76K-GNSS-Module-for-Seeed-Studio-XIAO-p-5864.html
*/ */
#define LED_POWER 48 #define LED_PIN 48
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit
#define BUTTON_PIN 21 // This is the Program Button #define BUTTON_PIN 21 // This is the Program Button

View File

@@ -67,7 +67,7 @@
#endif #endif
// LED // LED
#define LED_POWER 18 #define LED_PIN 18
#define LED_STATE_ON 1 // HIGH = ON #define LED_STATE_ON 1 // HIGH = ON
// Battery ADC // Battery ADC

View File

@@ -12,7 +12,7 @@
#define HAS_SCREEN 1 // Allow for OLED Screens on I2C Header of shield #define HAS_SCREEN 1 // Allow for OLED Screens on I2C Header of shield
#define LED_POWER 38 // If defined we will blink this LED #define LED_PIN 38 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses, #define BUTTON_PIN 0 // If defined, this will be used for user button presses,
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -22,7 +22,7 @@
#define GPS_RX_PIN 44 #define GPS_RX_PIN 44
#define GPS_TX_PIN 43 #define GPS_TX_PIN 43
#define LED_POWER 37 #define LED_PIN 37
#define BUTTON_PIN 0 #define BUTTON_PIN 0
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -14,7 +14,7 @@
#define I2C_SDA1 43 #define I2C_SDA1 43
#define I2C_SCL1 44 #define I2C_SCL1 44
#define LED_POWER 37 // If defined we will blink this LED #define LED_PIN 37 // If defined we will blink this LED
#define BUTTON_PIN 0 // If defined, this will be used for user button presses, #define BUTTON_PIN 0 // If defined, this will be used for user button presses,
#define BUTTON_NEED_PULLUP #define BUTTON_NEED_PULLUP

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define HELTEC_TRACKER_V1_X #define HELTEC_TRACKER_V1_X

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define HELTEC_TRACKER_V1_X #define HELTEC_TRACKER_V1_X

View File

@@ -1,4 +1,4 @@
#define LED_POWER 18 #define LED_PIN 18
#define HELTEC_TRACKER_V1_X #define HELTEC_TRACKER_V1_X

View File

@@ -54,7 +54,7 @@
#define SD_SPI_FREQUENCY 25000000 #define SD_SPI_FREQUENCY 25000000
#define LED_POWER 13 // the red part of the RGB LED #define LED_PIN 13 // the red part of the RGB LED
#define LED_STATE_ON 0 // State when LED is lit #define LED_STATE_ON 0 // State when LED is lit
#define ALT_BUTTON_PIN 21 // Button 3 - square - top button in landscape mode #define ALT_BUTTON_PIN 21 // Button 3 - square - top button in landscape mode

View File

@@ -52,6 +52,7 @@ extern "C" {
// LED // LED
#define LED_RED 33 #define LED_RED 33
#define LED_POWER LED_RED #define LED_POWER LED_RED
#define LED_CHARGE LED_POWER // Signals the Status LED Module to handle this LED
#define LED_GREEN 35 #define LED_GREEN 35
#define LED_NOTIFICATION LED_GREEN #define LED_NOTIFICATION LED_GREEN
#define LED_BLUE 37 #define LED_BLUE 37

View File

@@ -32,6 +32,9 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant() void initVariant()
{ {
pinMode(LED_CHARGE, OUTPUT);
ledOff(LED_CHARGE);
pinMode(LED_PAIRING, OUTPUT); pinMode(LED_PAIRING, OUTPUT);
ledOff(LED_PAIRING); ledOff(LED_PAIRING);

View File

@@ -41,7 +41,7 @@ extern "C" {
// LEDs // LEDs
#define LED_BLUE -1 #define LED_BLUE -1
#define LED_POWER (12) #define LED_CHARGE (12)
#define LED_PAIRING (7) #define LED_PAIRING (7)
#define LED_NOTIFICATION LED_PAIRING #define LED_NOTIFICATION LED_PAIRING

View File

@@ -32,6 +32,9 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant() void initVariant()
{ {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(PIN_3V3_EN, OUTPUT); pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH); digitalWrite(PIN_3V3_EN, HIGH);
} }

View File

@@ -50,7 +50,7 @@ extern "C" {
#define PIN_LED1 (32 + 7) // P1.07 Blue D2 #define PIN_LED1 (32 + 7) // P1.07 Blue D2
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#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

View File

@@ -32,6 +32,9 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant() void initVariant()
{ {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(PIN_3V3_EN, OUTPUT); pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH); digitalWrite(PIN_3V3_EN, HIGH);
} }

View File

@@ -50,7 +50,7 @@ extern "C" {
#define PIN_LED1 (32 + 7) // P1.07 Blue D2 #define PIN_LED1 (32 + 7) // P1.07 Blue D2
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#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

View File

@@ -50,7 +50,7 @@ extern "C" {
#define PIN_LED1 (-1) #define PIN_LED1 (-1)
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#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

View File

@@ -101,6 +101,7 @@ void initVariant()
pinMode(PIN_LED2, OUTPUT); pinMode(PIN_LED2, OUTPUT);
digitalWrite(PIN_LED2, LOW); digitalWrite(PIN_LED2, LOW);
pinMode(PIN_LED2, OUTPUT); pinMode(PIN_LED2, OUTPUT);
// digitalWrite(LED_PIN, LOW);
pinMode(GPS_EN, OUTPUT); pinMode(GPS_EN, OUTPUT);
digitalWrite(GPS_EN, HIGH); digitalWrite(GPS_EN, HIGH);

View File

@@ -65,7 +65,7 @@ static const uint8_t A5 = PIN_A5;
#define LED_GREEN (13) #define LED_GREEN (13)
#define LED_BLUE (12) #define LED_BLUE (12)
#define PIN_LED1 LED_GREEN // PIN_LED1 is used in src/platform/nrf52/architecture.h to define LED_POWER #define PIN_LED1 LED_GREEN // PIN_LED1 is used in src/platform/nrf52/architecture.h to define LED_PIN
#define PIN_LED2 LED_BLUE #define PIN_LED2 LED_BLUE
#define PIN_LED3 LED_RED #define PIN_LED3 LED_RED

View File

@@ -32,6 +32,10 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant() void initVariant()
{ {
// LED1 & LED2
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(PIN_3V3_EN, OUTPUT); pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH); digitalWrite(PIN_3V3_EN, HIGH);

View File

@@ -47,7 +47,7 @@ extern "C" {
#define PIN_3V3_ACC_EN (32 + 7) // P1.7, Power to Acc #define PIN_3V3_ACC_EN (32 + 7) // P1.7, Power to Acc
#define PIN_LED1 (0 + 24) // P0.24 #define PIN_LED1 (0 + 24) // P0.24
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#define LED_BLUE -1 // Actually green #define LED_BLUE -1 // Actually green
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit

View File

@@ -32,6 +32,10 @@ const uint32_t g_ADigitalPinMap[] = {
void initVariant() void initVariant()
{ {
// LED1 & LED2
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(PIN_3V3_EN, OUTPUT); pinMode(PIN_3V3_EN, OUTPUT);
digitalWrite(PIN_3V3_EN, HIGH); digitalWrite(PIN_3V3_EN, HIGH);

View File

@@ -47,7 +47,7 @@ extern "C" {
#define PIN_3V3_ACC_EN (32 + 7) // P1.7, Power to Acc #define PIN_3V3_ACC_EN (32 + 7) // P1.7, Power to Acc
#define PIN_LED1 (0 + 24) // P0.24 #define PIN_LED1 (0 + 24) // P0.24
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#define LED_BLUE -1 // Actually green #define LED_BLUE -1 // Actually green
#define LED_STATE_ON 1 // State when LED is lit #define LED_STATE_ON 1 // State when LED is lit

View File

@@ -7,7 +7,7 @@
#define ADC_RESOLUTION (12u) #define ADC_RESOLUTION (12u)
// LEDs // LEDs
#define LED_POWER (24u) #define LED_PIN (24u)
// Serial // Serial
#define PIN_SERIAL1_TX (16u) #define PIN_SERIAL1_TX (16u)

View File

@@ -9,7 +9,7 @@
#undef GPS_RX_PIN #undef GPS_RX_PIN
#undef GPS_TX_PIN #undef GPS_TX_PIN
#define LED_POWER 27 #define LED_PIN 27
#define USE_SX1262 #define USE_SX1262

View File

@@ -20,7 +20,7 @@
#define BUTTON_PIN 7 #define BUTTON_PIN 7
// #define BUTTON_NEED_PULLUP // #define BUTTON_NEED_PULLUP
#define LED_POWER PIN_LED #define LED_PIN PIN_LED
// #define BATTERY_PIN 26 // #define BATTERY_PIN 26
// ratio of voltage divider = 3.0 (R17=200k, R18=100k) // ratio of voltage divider = 3.0 (R17=200k, R18=100k)

View File

@@ -2,7 +2,7 @@
#define BUTTON_PIN -1 // Pin 17 used for antenna switching via DIO4 #define BUTTON_PIN -1 // Pin 17 used for antenna switching via DIO4
#define LED_POWER 1 #define LED_PIN 1
#define HAS_CPU_SHUTDOWN 1 #define HAS_CPU_SHUTDOWN 1

View File

@@ -10,7 +10,7 @@
#define I2C_SDA1 2 #define I2C_SDA1 2
#define I2C_SCL1 3 #define I2C_SCL1 3
#define LED_POWER PIN_LED1 #define LED_PIN PIN_LED1
#define ledOff(pin) pinMode(pin, INPUT) #define ledOff(pin) pinMode(pin, INPUT)
#define BUTTON_PIN 9 #define BUTTON_PIN 9

View File

@@ -17,7 +17,7 @@
#define EXT_NOTIFY_OUT 22 #define EXT_NOTIFY_OUT 22
#define BUTTON_PIN -1 // Pin 17 used for antenna switching via DIO4 #define BUTTON_PIN -1 // Pin 17 used for antenna switching via DIO4
#define LED_POWER PIN_LED #define LED_PIN PIN_LED
// #define BATTERY_PIN 26 // #define BATTERY_PIN 26
// ratio of voltage divider = 3.0 (R17=200k, R18=100k) // ratio of voltage divider = 3.0 (R17=200k, R18=100k)

View File

@@ -52,7 +52,7 @@
#define BUTTON_PIN 18 #define BUTTON_PIN 18
#define EXT_NOTIFY_OUT 22 #define EXT_NOTIFY_OUT 22
#define LED_POWER PIN_LED #define LED_PIN PIN_LED
#define BATTERY_PIN 26 #define BATTERY_PIN 26
// ratio of voltage divider = 3.0 (R17=200k, R18=100k) // ratio of voltage divider = 3.0 (R17=200k, R18=100k)

Some files were not shown because too many files have changed in this diff Show More