feat: MQTT-окружения для Waveshare S3 LR1121 и переход AGENTS.md на работу в main
- добавлены Waveshare_S3_LR1121_repeater_mqtt/_espnow/_bridge: из новых плат upstream 1.18.0 только эта на ESP32; ThinkNode M8 и M4, Wio Tracker L1 1W и Muzi Base — на nRF52, WiFi нет, MQTT-сборки для них невозможны (им место в форке MeshCore, не здесь) - EnvironmentSensorManager: возвращён scanI2CBus из upstream (слияние его потеряло, потому что мы когда-то заменили полное сканирование шины поштучной проверкой адресов); при этом сохранён наш таймаут 20 мс на ESP32 и наша поддержка адреса, определённого платой - AGENTS.md: работаем в main, ветка develop устарела (эпоха EastMesh); upstream тянем релизным тегом, а не веткой dev; версия upstream — v1.18.0 Проверено сборкой после слияния: heltec_v4_repeater_mqtt, LilyGo_TBeam_1W_repeater_mqtt, Meshadventurer_sx1262_repeater_mqtt, RAK_3112_repeater_mqtt, heltec_v4_repeater_mqtt_espnow, heltec_v4_repeater_mqtt_bridge, LilyGo_Tlora_C6_repeater_mqtt_espnow (наш фикс ESP-IDF 5), LilyGo_TBeam_1W_repeater_mqtt_espnow, Waveshare_S3_LR1121_repeater_mqtt, Waveshare_S3_LR1121_repeater_mqtt_bridge MQTT-целей стало 112: 42 uplink, 34 espnow, 36 bridge
This commit is contained in:
1 parent
80d36d20bc
commit
8fa0bfe1d3
3 files changed
+70
-22
No files matched your search
@@ -213,21 +213,22 @@ static RAK12500LocationProvider RAK12500_provider;
|
||||
#endif
|
||||
|
||||
// ============================================================
|
||||
// I2C sensor probe
|
||||
// Probes only the compiled-in sensor addresses.
|
||||
// This runs before any sensor library is touched, so a missing
|
||||
// or misbehaving device cannot stall or crash the boot sequence.
|
||||
// I2C bus scan
|
||||
// Сканирует шину до обращения к библиотекам датчиков, чтобы
|
||||
// отсутствующее или зависшее устройство не тормозило загрузку.
|
||||
// ============================================================
|
||||
|
||||
static bool probeI2CAddress(TwoWire* wire, uint8_t addr) {
|
||||
static void scanI2CBus(TwoWire* wire, bool found[128]) {
|
||||
if (wire == nullptr) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
#if defined(ESP32)
|
||||
wire->setTimeOut(20);
|
||||
wire->setTimeOut(20); // PosadMesh: ограничиваем ожидание, иначе зависший датчик тянет boot
|
||||
#endif
|
||||
wire->beginTransmission(addr);
|
||||
return wire->endTransmission() == 0;
|
||||
for (uint8_t addr = 0x08; addr < 0x78; addr++) {
|
||||
wire->beginTransmission(addr);
|
||||
found[addr] = (wire->endTransmission() == 0);
|
||||
}
|
||||
}
|
||||
|
||||
static bool readI2CRegister8(TwoWire* wire, uint8_t addr, uint8_t reg, uint8_t* value) {
|
||||
@@ -953,6 +954,10 @@ bool EnvironmentSensorManager::begin() {
|
||||
MESH_DEBUG_PRINTLN("I2C using board pins SDA: %d SCL: %d", PIN_BOARD_SDA, PIN_BOARD_SCL);
|
||||
#endif
|
||||
|
||||
// Scan the I2C bus before touching any sensor library.
|
||||
bool detected[128] = {};
|
||||
scanI2CBus(TELEM_WIRE, detected);
|
||||
|
||||
// Walk the sensor table and initialize only detected devices.
|
||||
_active_sensor_count = 0;
|
||||
for (size_t i = 0; i < SENSOR_TABLE_SIZE && _active_sensor_count < MAX_ACTIVE_SENSORS; i++) {
|
||||
|
||||
Reference in new issue
Block a user