Merge branch 'master' into shared-secret-cache

This commit is contained in:
Ben Meadors 2025-05-14 06:50:00 -05:00 committed by GitHub
commit 917b6d0cd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 59 additions and 19 deletions

View File

@ -10,7 +10,7 @@
"hwids": [["0x2886", "0x0059"]], "hwids": [["0x2886", "0x0059"]],
"usb_product": "XIAO-BOOT", "usb_product": "XIAO-BOOT",
"mcu": "nrf52840", "mcu": "nrf52840",
"variant": "Seeed_Solar_Node", "variant": "seeed_solar_node",
"bsp": { "bsp": {
"name": "adafruit" "name": "adafruit"
}, },
@ -31,7 +31,7 @@
"openocd_target": "nrf52840-mdk-rs" "openocd_target": "nrf52840-mdk-rs"
}, },
"frameworks": ["arduino"], "frameworks": ["arduino"],
"name": "Seeed_Solar_Node", "name": "seeed_solar_node",
"upload": { "upload": {
"maximum_ram_size": 248832, "maximum_ram_size": 248832,
"maximum_size": 815104, "maximum_size": 815104,

View File

@ -300,14 +300,23 @@ int32_t ButtonThread::runOnce()
#ifdef BUTTON_PIN_TOUCH #ifdef BUTTON_PIN_TOUCH
case BUTTON_EVENT_TOUCH_LONG_PRESSED: { case BUTTON_EVENT_TOUCH_LONG_PRESSED: {
LOG_BUTTON("Touch press!"); LOG_BUTTON("Touch press!");
if (screen) { // Ignore if: no screen
if (!screen)
break;
#ifdef TTGO_T_ECHO
// Ignore if: TX in progress
// Uncommon T-Echo hardware bug, LoRa TX triggers touch button
if (!RadioLibInterface::instance || RadioLibInterface::instance->isSending())
break;
#endif
// Wake if asleep // Wake if asleep
if (powerFSM.getState() == &stateDARK) if (powerFSM.getState() == &stateDARK)
powerFSM.trigger(EVENT_PRESS); powerFSM.trigger(EVENT_PRESS);
// Update display (legacy behaviour) // Update display (legacy behaviour)
screen->forceDisplay(); screen->forceDisplay();
}
break; break;
} }
#endif // BUTTON_PIN_TOUCH #endif // BUTTON_PIN_TOUCH

View File

@ -1612,6 +1612,9 @@ void Screen::handleSetOn(bool on, FrameCallback einkScreensaver)
#ifdef T_WATCH_S3 #ifdef T_WATCH_S3
PMU->enablePowerOutput(XPOWERS_ALDO2); PMU->enablePowerOutput(XPOWERS_ALDO2);
#endif #endif
#ifdef HELTEC_TRACKER_V1_X
uint8_t tft_vext_enabled = digitalRead(VEXT_ENABLE);
#endif
#if !ARCH_PORTDUINO #if !ARCH_PORTDUINO
dispdev->displayOn(); dispdev->displayOn();
#endif #endif
@ -1622,6 +1625,12 @@ void Screen::handleSetOn(bool on, FrameCallback einkScreensaver)
#endif #endif
dispdev->displayOn(); dispdev->displayOn();
#ifdef HELTEC_TRACKER_V1_X
// If the TFT VEXT power is not enabled, initialize the UI.
if (!tft_vext_enabled) {
ui->init();
}
#endif
#ifdef USE_ST7789 #ifdef USE_ST7789
pinMode(VTFT_CTRL, OUTPUT); pinMode(VTFT_CTRL, OUTPUT);
digitalWrite(VTFT_CTRL, LOW); digitalWrite(VTFT_CTRL, LOW);

View File

@ -1455,6 +1455,26 @@ void NodeDB::updateTelemetry(uint32_t nodeId, const meshtastic_Telemetry &t, RxS
notifyObservers(true); // Force an update whether or not our node counts have changed notifyObservers(true); // Force an update whether or not our node counts have changed
} }
/**
* Update the node database with a new contact
*/
void NodeDB::addFromContact(meshtastic_SharedContact contact)
{
meshtastic_NodeInfoLite *info = getOrCreateMeshNode(contact.node_num);
if (!info) {
return;
}
info->num = contact.node_num;
info->last_heard = getValidTime(RTCQualityNTP);
info->has_user = true;
info->user = TypeConversions::ConvertToUserLite(contact.user);
info->is_favorite = true;
updateGUIforNode = info;
powerFSM.trigger(EVENT_NODEDB_UPDATED);
notifyObservers(true); // Force an update whether or not our node counts have changed
saveNodeDatabaseToDisk();
}
/** Update user info and channel for this node based on received user data /** Update user info and channel for this node based on received user data
*/ */
bool NodeDB::updateUser(uint32_t nodeId, meshtastic_User &p, uint8_t channelIndex) bool NodeDB::updateUser(uint32_t nodeId, meshtastic_User &p, uint8_t channelIndex)

View File

@ -110,6 +110,8 @@ class NodeDB
/// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw /// we updateGUI and updateGUIforNode if we think our this change is big enough for a redraw
void updateFrom(const meshtastic_MeshPacket &p); void updateFrom(const meshtastic_MeshPacket &p);
void addFromContact(const meshtastic_SharedContact);
/** Update position info for this node based on received position data /** Update position info for this node based on received position data
*/ */
void updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSource src = RX_SRC_RADIO); void updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSource src = RX_SRC_RADIO);

View File

@ -286,6 +286,11 @@ bool AdminModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshta
nodeDB->removeNodeByNum(r->remove_by_nodenum); nodeDB->removeNodeByNum(r->remove_by_nodenum);
break; break;
} }
case meshtastic_AdminMessage_add_contact_tag: {
LOG_INFO("Client received add_contact command");
nodeDB->addFromContact(r->add_contact);
break;
}
case meshtastic_AdminMessage_set_favorite_node_tag: { case meshtastic_AdminMessage_set_favorite_node_tag: {
LOG_INFO("Client received set_favorite_node command"); LOG_INFO("Client received set_favorite_node command");
meshtastic_NodeInfoLite *node = nodeDB->getMeshNode(r->set_favorite_node); meshtastic_NodeInfoLite *node = nodeDB->getMeshNode(r->set_favorite_node);

View File

@ -15,7 +15,7 @@ int32_t SHTC3Sensor::runOnce()
if (!hasSensor()) { if (!hasSensor()) {
return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS; return DEFAULT_SENSOR_MINIMUM_WAIT_TIME_BETWEEN_READS;
} }
status = shtc3.begin(); status = shtc3.begin(nodeTelemetrySensorsMap[sensorType].second);
return initI2CSensor(); return initI2CSensor();
} }

View File

@ -31,7 +31,6 @@
#define ADC_CHANNEL ADC1_GPIO7_CHANNEL #define ADC_CHANNEL ADC1_GPIO7_CHANNEL
#define ADC_MULTIPLIER 4.9 * 1.03 #define ADC_MULTIPLIER 4.9 * 1.03
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 #define ADC_ATTENUATION ADC_ATTEN_DB_2_5
#define HAS_32768HZ
// LoRa // LoRa
#define USE_SX1262 #define USE_SX1262

View File

@ -30,7 +30,6 @@
#define ADC_CHANNEL ADC1_GPIO7_CHANNEL #define ADC_CHANNEL ADC1_GPIO7_CHANNEL
#define ADC_MULTIPLIER 4.9 * 1.03 #define ADC_MULTIPLIER 4.9 * 1.03
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 #define ADC_ATTENUATION ADC_ATTEN_DB_2_5
#define HAS_32768HZ
// LoRa // LoRa
#define USE_SX1262 #define USE_SX1262

View File

@ -47,7 +47,6 @@
#define ADC_CHANNEL ADC1_GPIO6_CHANNEL #define ADC_CHANNEL ADC1_GPIO6_CHANNEL
#define ADC_MULTIPLIER 4.9 * 1.03 // Voltage divider is roughly 1:1 #define ADC_MULTIPLIER 4.9 * 1.03 // Voltage divider is roughly 1:1
#define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // Voltage divider output is quite high #define ADC_ATTENUATION ADC_ATTEN_DB_2_5 // Voltage divider output is quite high
#define HAS_32768HZ
// LoRa // LoRa
#define USE_SX1262 #define USE_SX1262

View File

@ -28,7 +28,6 @@
#define ADC_MULTIPLIER 2 // Voltage divider is roughly 1:1 #define ADC_MULTIPLIER 2 // Voltage divider is roughly 1:1
#define BAT_MEASURE_ADC_UNIT 2 // Use ADC2 #define BAT_MEASURE_ADC_UNIT 2 // Use ADC2
#define ADC_ATTENUATION ADC_ATTEN_DB_12 // Voltage divider output is quite high #define ADC_ATTENUATION ADC_ATTEN_DB_12 // Voltage divider output is quite high
#define HAS_32768HZ
#define ADC_CTRL_ENABLED LOW #define ADC_CTRL_ENABLED LOW
#define NO_EXT_GPIO 1 #define NO_EXT_GPIO 1

View File

@ -29,7 +29,6 @@
#define ADC_MULTIPLIER 2 // Voltage divider is roughly 1:1 #define ADC_MULTIPLIER 2 // Voltage divider is roughly 1:1
#define BAT_MEASURE_ADC_UNIT 2 // Use ADC2 #define BAT_MEASURE_ADC_UNIT 2 // Use ADC2
#define ADC_ATTENUATION ADC_ATTEN_DB_12 // Voltage divider output is quite high #define ADC_ATTENUATION ADC_ATTEN_DB_12 // Voltage divider output is quite high
#define HAS_32768HZ
#define ADC_CTRL_ENABLED LOW #define ADC_CTRL_ENABLED LOW
#define NO_EXT_GPIO 1 #define NO_EXT_GPIO 1

View File

@ -1,13 +1,13 @@
[env:Seeed_Solar_Node] [env:seeed_solar_node]
board = Seeed_Solar_Node board = seeed_solar_node
extends = nrf52840_base extends = nrf52840_base
;board_level = extra ;board_level = extra
build_flags = ${nrf52840_base.build_flags} build_flags = ${nrf52840_base.build_flags}
-I $PROJECT_DIR/variants/Seeed_Solar_Node -I $PROJECT_DIR/variants/seeed_solar_node
-D SEEED_SOLAR_NODE -D SEEED_SOLAR_NODE
-Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52 -Isrc/platform/nrf52/softdevice -Isrc/platform/nrf52/softdevice/nrf52
board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld board_build.ldscript = src/platform/nrf52/nrf52840_s140_v7.ld
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/Seeed_Solar_Node> build_src_filter = ${nrf52_base.build_src_filter} +<../variants/seeed_solar_node>
lib_deps = lib_deps =
${nrf52840_base.lib_deps} ${nrf52840_base.lib_deps}
debug_tool = jlink debug_tool = jlink