diff --git a/.github/actions/build-variant/action.yml b/.github/actions/build-variant/action.yml
new file mode 100644
index 000000000..f9410eb03
--- /dev/null
+++ b/.github/actions/build-variant/action.yml
@@ -0,0 +1,90 @@
+name: Setup Build Variant Composite Action
+description: Variant build actions for Meshtastic Platform IO steps
+
+inputs:
+ board:
+ description: The board to build for
+ required: true
+ github_token:
+ description: GitHub token
+ required: true
+ build-script-path:
+ description: Path to the build script
+ required: true
+ remove-debug-flags:
+ description: A space separated list of files to remove debug flags from
+ required: false
+ default: ""
+ ota-firmware-source:
+ description: The OTA firmware file to pull
+ required: false
+ default: ""
+ ota-firmware-target:
+ description: The target path to store the OTA firmware file
+ required: false
+ default: ""
+ artifact-paths:
+ description: A newline separated list of paths to store as artifacts
+ required: false
+ default: ""
+ include-web-ui:
+ description: Include the web UI in the build
+ required: false
+ default: "false"
+
+runs:
+ using: composite
+ steps:
+ - name: Build base
+ id: base
+ uses: ./.github/actions/setup-base
+
+ - name: Pull web ui
+ if: inputs.include-web-ui == 'true'
+ uses: dsaltares/fetch-gh-release-asset@master
+ with:
+ repo: meshtastic/web
+ file: build.tar
+ target: build.tar
+ token: ${{ inputs.github_token }}
+
+ - name: Unpack web ui
+ if: inputs.include-web-ui == 'true'
+ shell: bash
+ run: |
+ tar -xf build.tar -C data/static
+ rm build.tar
+
+ - name: Remove debug flags for release
+ shell: bash
+ if: inputs.remove-debug-flags != ''
+ run: |
+ for INI_FILE in ${{ inputs.remove-debug-flags }}; do
+ sed -i '/DDEBUG_HEAP/d' ${INI_FILE}
+ done
+
+ - name: Build ${{ inputs.board }}
+ shell: bash
+ run: ${{ inputs.build-script-path }} ${{ inputs.board }}
+
+ - name: Pull OTA Firmware
+ if: inputs.ota-firmware-source != '' && inputs.ota-firmware-target != ''
+ uses: dsaltares/fetch-gh-release-asset@master
+ with:
+ repo: meshtastic/firmware-ota
+ file: ${{ inputs.ota-firmware-source }}
+ target: ${{ inputs.ota-firmware-target }}
+ token: ${{ inputs.github_token }}
+
+ - name: Get release version string
+ shell: bash
+ run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
+ id: version
+
+ - name: Store binaries as an artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
+ overwrite: true
+ path: |
+ ${{ inputs.artifact-paths }}
diff --git a/.github/workflows/build_esp32.yml b/.github/workflows/build_esp32.yml
index 4cbb4c7a4..041191d34 100644
--- a/.github/workflows/build_esp32.yml
+++ b/.github/workflows/build_esp32.yml
@@ -12,52 +12,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
-
- - name: Pull web ui
- uses: dsaltares/fetch-gh-release-asset@master
- with:
- repo: meshtastic/web
- file: build.tar
- target: build.tar
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Unpack web ui
- run: |
- tar -xf build.tar -C data/static
- rm build.tar
-
- - name: Remove debug flags for release
- if: ${{ github.event_name == 'workflow_dispatch' }}
- run: |
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s2.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s3.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32c3.ini
- name: Build ESP32
- run: bin/build-esp32.sh ${{ inputs.board }}
-
- - name: Pull OTA Firmware
- uses: dsaltares/fetch-gh-release-asset@master
+ id: build
+ uses: ./.github/actions/build-variant
with:
- repo: meshtastic/firmware-ota
- file: firmware.bin
- target: release/bleota.bin
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Get release version string
- shell: bash
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
- with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ remove-debug-flags: >-
+ ./arch/esp32/esp32.ini
+ ./arch/esp32/esp32s2.ini
+ ./arch/esp32/esp32s3.ini
+ ./arch/esp32/esp32c3.ini
+ build-script-path: bin/build-esp32.sh
+ ota-firmware-source: firmware.bin
+ ota-firmware-target: release/bleota.bin
+ artifact-paths: |
release/*.bin
release/*.elf
+ include-web-ui: true
diff --git a/.github/workflows/build_esp32_c3.yml b/.github/workflows/build_esp32_c3.yml
index 07727d711..ddc2e2859 100644
--- a/.github/workflows/build_esp32_c3.yml
+++ b/.github/workflows/build_esp32_c3.yml
@@ -14,50 +14,21 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
- - name: Pull web ui
- uses: dsaltares/fetch-gh-release-asset@master
+ - name: Build ESP32-C3
+ id: build
+ uses: ./.github/actions/build-variant
with:
- repo: meshtastic/web
- file: build.tar
- target: build.tar
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Unpack web ui
- run: |
- tar -xf build.tar -C data/static
- rm build.tar
- - name: Remove debug flags for release
- if: ${{ github.event_name == 'workflow_dispatch' }}
- run: |
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s2.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s3.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32c3.ini
- - name: Build ESP32
- run: bin/build-esp32.sh ${{ inputs.board }}
-
- - name: Pull OTA Firmware
- uses: dsaltares/fetch-gh-release-asset@master
- with:
- repo: meshtastic/firmware-ota
- file: firmware-c3.bin
- target: release/bleota-c3.bin
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Get release version string
- shell: bash
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
- with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ remove-debug-flags: >-
+ ./arch/esp32/esp32.ini
+ ./arch/esp32/esp32s2.ini
+ ./arch/esp32/esp32s3.ini
+ ./arch/esp32/esp32c3.ini
+ build-script-path: bin/build-esp32.sh
+ ota-firmware-source: firmware-c3.bin
+ ota-firmware-target: release/bleota-c3.bin
+ artifact-paths: |
release/*.bin
release/*.elf
diff --git a/.github/workflows/build_esp32_s3.yml b/.github/workflows/build_esp32_s3.yml
index 10773833e..29857ef17 100644
--- a/.github/workflows/build_esp32_s3.yml
+++ b/.github/workflows/build_esp32_s3.yml
@@ -12,50 +12,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
- - name: Pull web ui
- uses: dsaltares/fetch-gh-release-asset@master
+ - name: Build ESP32-S3
+ id: build
+ uses: ./.github/actions/build-variant
with:
- repo: meshtastic/web
- file: build.tar
- target: build.tar
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Unpack web ui
- run: |
- tar -xf build.tar -C data/static
- rm build.tar
- - name: Remove debug flags for release
- if: ${{ github.event_name == 'workflow_dispatch' }}
- run: |
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s2.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32s3.ini
- sed -i '/DDEBUG_HEAP/d' ./arch/esp32/esp32c3.ini
- - name: Build ESP32
- run: bin/build-esp32.sh ${{ inputs.board }}
-
- - name: Pull OTA Firmware
- uses: dsaltares/fetch-gh-release-asset@master
- with:
- repo: meshtastic/firmware-ota
- file: firmware-s3.bin
- target: release/bleota-s3.bin
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Get release version string
- shell: bash
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
- with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ remove-debug-flags: >-
+ ./arch/esp32/esp32.ini
+ ./arch/esp32/esp32s2.ini
+ ./arch/esp32/esp32s3.ini
+ ./arch/esp32/esp32c3.ini
+ build-script-path: bin/build-esp32.sh
+ ota-firmware-source: firmware-s3.bin
+ ota-firmware-target: release/bleota-s3.bin
+ artifact-paths: |
release/*.bin
release/*.elf
+ include-web-ui: true
diff --git a/.github/workflows/build_nrf52.yml b/.github/workflows/build_nrf52.yml
index ac509a096..606cb8a3e 100644
--- a/.github/workflows/build_nrf52.yml
+++ b/.github/workflows/build_nrf52.yml
@@ -12,23 +12,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
- name: Build NRF52
- run: bin/build-nrf52.sh ${{ inputs.board }}
-
- - name: Get release version string
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
+ id: build
+ uses: ./.github/actions/build-variant
with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ build-script-path: bin/build-nrf52.sh
+ artifact-paths: |
release/*.hex
release/*.uf2
release/*.elf
diff --git a/.github/workflows/build_rpi2040.yml b/.github/workflows/build_rpi2040.yml
index 6e258fe2a..b0508877d 100644
--- a/.github/workflows/build_rpi2040.yml
+++ b/.github/workflows/build_rpi2040.yml
@@ -12,22 +12,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
- name: Build Raspberry Pi 2040
- run: ./bin/build-rpi2040.sh ${{ inputs.board }}
-
- - name: Get release version string
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
+ id: build
+ uses: ./.github/actions/build-variant
with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ build-script-path: bin/build-rpi2040.sh
+ artifact-paths: |
release/*.uf2
release/*.elf
diff --git a/.github/workflows/build_stm32.yml b/.github/workflows/build_stm32.yml
index d13c52c8a..6858812e1 100644
--- a/.github/workflows/build_stm32.yml
+++ b/.github/workflows/build_stm32.yml
@@ -12,22 +12,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - name: Build base
- id: base
- uses: ./.github/actions/setup-base
- - name: Build STM32
- run: bin/build-stm32.sh ${{ inputs.board }}
-
- - name: Get release version string
- run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
- id: version
-
- - name: Store binaries as an artifact
- uses: actions/upload-artifact@v4
+ - name: Build Raspberry Pi 2040
+ id: build
+ uses: ./.github/actions/build-variant
with:
- name: firmware-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
- overwrite: true
- path: |
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ board: ${{ inputs.board }}
+ build-script-path: bin/build-stm32.sh
+ artifact-paths: |
release/*.hex
release/*.bin
diff --git a/.github/workflows/main_matrix.yml b/.github/workflows/main_matrix.yml
index 19a92d8b8..f8c7c65ab 100644
--- a/.github/workflows/main_matrix.yml
+++ b/.github/workflows/main_matrix.yml
@@ -51,6 +51,7 @@ jobs:
matrix: ${{ fromJson(needs.setup.outputs.check) }}
runs-on: ubuntu-latest
+ if: ${{ github.event_name != 'workflow_dispatch' }}
steps:
- uses: actions/checkout@v4
- name: Build base
@@ -156,10 +157,10 @@ jobs:
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v3
with:
path: ./
- merge-multiple: true
+ #merge-multiple: true
- name: Display structure of downloaded files
run: ls -R
diff --git a/protobufs b/protobufs
index 9b8490784..9651aa59e 160000
--- a/protobufs
+++ b/protobufs
@@ -1 +1 @@
-Subproject commit 9b84907847b67047b72f9792f4b47532b308bbe4
+Subproject commit 9651aa59eaa3b54d801b9c251efcfe842790db32
diff --git a/src/configuration.h b/src/configuration.h
index 3976a105d..15170e2c6 100644
--- a/src/configuration.h
+++ b/src/configuration.h
@@ -213,7 +213,7 @@ along with this program. If not, see .
#ifndef WIRE_INTERFACES_COUNT
// Officially an NRF52 macro
// Repurposed cross-platform to identify devices using Wire1
-#if defined(I2C_SDA1) || defined(PIN_WIRE_SDA)
+#if defined(I2C_SDA1) || defined(PIN_WIRE1_SDA)
#define WIRE_INTERFACES_COUNT 2
#elif HAS_WIRE
#define WIRE_INTERFACES_COUNT 1
diff --git a/src/detect/ScanI2CTwoWire.cpp b/src/detect/ScanI2CTwoWire.cpp
index eb1bae31a..ddd5224d6 100644
--- a/src/detect/ScanI2CTwoWire.cpp
+++ b/src/detect/ScanI2CTwoWire.cpp
@@ -334,11 +334,10 @@ void ScanI2CTwoWire::scanPort(I2CPort port, uint8_t *address, uint8_t asize)
// Check register 0x0F for 0x3300 response to ID LIS3DH chip.
registerValue = getRegisterValue(ScanI2CTwoWire::RegisterLocation(addr, 0x0F), 2);
- if (registerValue == 0x3300) {
+ if (registerValue == 0x3300 || registerValue == 0x3333) { // RAK4631 WisBlock has LIS3DH register at 0x3333
type = LIS3DH;
LOG_INFO("LIS3DH accelerometer found\n");
}
-
break;
}
case SHT31_4x_ADDR:
@@ -435,4 +434,4 @@ size_t ScanI2CTwoWire::countDevices() const
{
return foundDevices.size();
}
-#endif
+#endif
\ No newline at end of file
diff --git a/src/gps/GPS.cpp b/src/gps/GPS.cpp
index a2730a918..7c8184071 100644
--- a/src/gps/GPS.cpp
+++ b/src/gps/GPS.cpp
@@ -665,7 +665,7 @@ bool GPS::setup()
// As the M10 has no flash, the best we can do to preserve the config is to set it in RAM and BBR.
// BBR will survive a restart, and power off for a while, but modules with small backup
// batteries or super caps will not retain the config for a long power off time.
- msglen = makeUBXPacket(0x06, 0x09, sizeof(_message_SAVE), _message_SAVE);
+ msglen = makeUBXPacket(0x06, 0x09, sizeof(_message_SAVE_10), _message_SAVE_10);
_serial_gps->write(UBXscratch, msglen);
if (getACK(0x06, 0x09, 2000) != GNSS_RESPONSE_OK) {
LOG_WARN("Unable to save GNSS module configuration.\n");
diff --git a/src/gps/GPS.h b/src/gps/GPS.h
index 48aecc8b9..317d80544 100644
--- a/src/gps/GPS.h
+++ b/src/gps/GPS.h
@@ -134,6 +134,7 @@ class GPS : private concurrency::OSThread
static const uint8_t _message_GGA[];
static const uint8_t _message_PMS[];
static const uint8_t _message_SAVE[];
+ static const uint8_t _message_SAVE_10[];
// VALSET Commands for M10
static const uint8_t _message_VALSET_PM[];
diff --git a/src/gps/ubx.h b/src/gps/ubx.h
index 64e45f160..c73a7efb3 100644
--- a/src/gps/ubx.h
+++ b/src/gps/ubx.h
@@ -323,6 +323,13 @@ const uint8_t GPS::_message_SAVE[] = {
0x17 // deviceMask: BBR, Flash, EEPROM, and SPI Flash
};
+const uint8_t GPS::_message_SAVE_10[] = {
+ 0x00, 0x00, 0x00, 0x00, // clearMask: no sections cleared
+ 0xFF, 0xFF, 0x00, 0x00, // saveMask: save all sections
+ 0x00, 0x00, 0x00, 0x00, // loadMask: no sections loaded
+ 0x01 // deviceMask: only save to BBR
+};
+
// As the M10 has no flash, the best we can do to preserve the config is to set it in RAM and BBR.
// BBR will survive a restart, and power off for a while, but modules with small backup
// batteries or super caps will not retain the config for a long power off time.
@@ -342,36 +349,36 @@ const uint8_t GPS::_message_SAVE[] = {
// has details on low-power modes
/*
-CFG-PM2 has been replaced by many CFG-PM commands
-CFG-PMS has been removed
-
-CFG-PM-OPERATEMODE E1 (0 | 1 | 2) -> 1 (PSMOO), because sporadic position updates are required instead of continous tracking <10s
-(PSMCT) CFG-PM-POSUPDATEPERIOD U4 -> 0ms, no self-timed wakup because receiver power mode is controlled via "software standby
-mode" by legacy UBX-RXM-PMREQ request CFG-PM-ACQPERIOD U4 -> 0ms, because receiver power mode is controlled via "software standby
-mode" by legacy UBX-RXM-PMREQ request CFG-PM-ONTIME U4 -> 0ms, optional I guess CFG-PM-EXTINTBACKUP L -> 1, force receiver into
-BACKUP mode when EXTINT (should be connected to GPS_EN_PIN) pin is "low"
-
-This is required because the receiver never enters low power mode if microcontroller is in deep-sleep.
-Maybe the changing UART_RX levels trigger a wakeup but even with UBX-RXM-PMREQ[12] = 0x00 (all external wakeup sources disabled)
-the receivcer remains in aquisition state -> potentially a bug
-
-Workaround: Control the EXTINT pin by the GPS_EN_PIN signal
-
-As mentioned in the M10 operational issues down below, power save won't allow the use of BDS B1C.
-CFG-SIGNAL-BDS_B1C_ENA L -> 0
+OPERATEMODE E1 2 (0 | 1 | 2)
+POSUPDATEPERIOD U4 5
+ACQPERIOD U4 10
+GRIDOFFSET U4 0
+ONTIME U2 1
+MINACQTIME U1 0
+MAXACQTIME U1 0
+DONOTENTEROFF L 1
+WAITTIMEFIX L 1
+UPDATEEPH L 1
+EXTINTWAKE L 0 no ext ints
+EXTINTBACKUP L 0 no ext ints
+EXTINTINACTIVE L 0 no ext ints
+EXTINTACTIVITY U4 0 no ext ints
+LIMITPEAKCURRENT L 1
// Ram layer config message:
-// 01 01 00 00 01 00 D0 20 01 02 00 D0 40 00 00 00 00 03 00 D0 40 00 00 00 00 05 00 D0 30 00 00 0D 00 D0 10 01
+// b5 62 06 8a 26 00 00 01 00 00 01 00 d0 20 02 02 00 d0 40 05 00 00 00 05 00 d0 30 01 00 08 00 d0 10 01 09 00 d0 10 01 10 00 d0
+// 10 01 8b de
// BBR layer config message:
-// 01 02 00 00 01 00 D0 20 01 02 00 D0 40 00 00 00 00 03 00 D0 40 00 00 00 00 05 00 D0 30 00 00 0D 00 D0 10 01
+// b5 62 06 8a 26 00 00 02 00 00 01 00 d0 20 02 02 00 d0 40 05 00 00 00 05 00 d0 30 01 00 08 00 d0 10 01 09 00 d0 10 01 10 00 d0
+// 10 01 8c 03
*/
-const uint8_t GPS::_message_VALSET_PM_RAM[] = {0x01, 0x01, 0x00, 0x00, 0x0F, 0x00, 0x31, 0x10, 0x00, 0x01, 0x00, 0xD0, 0x20, 0x01,
- 0x02, 0x00, 0xD0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xD0, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0x00, 0xD0, 0x30, 0x00, 0x00, 0x0D, 0x00, 0xD0, 0x10, 0x01};
-const uint8_t GPS::_message_VALSET_PM_BBR[] = {0x01, 0x02, 0x00, 0x00, 0x0F, 0x00, 0x31, 0x10, 0x00, 0x01, 0x00, 0xD0, 0x20, 0x01,
- 0x02, 0x00, 0xD0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xD0, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0x00, 0xD0, 0x30, 0x00, 0x00, 0x0D, 0x00, 0xD0, 0x10, 0x01};
+const uint8_t GPS::_message_VALSET_PM_RAM[] = {0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x20, 0x02, 0x02, 0x00, 0xd0, 0x40,
+ 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xd0, 0x30, 0x01, 0x00, 0x08, 0x00, 0xd0,
+ 0x10, 0x01, 0x09, 0x00, 0xd0, 0x10, 0x01, 0x10, 0x00, 0xd0, 0x10, 0x01};
+const uint8_t GPS::_message_VALSET_PM_BBR[] = {0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x20, 0x02, 0x02, 0x00, 0xd0, 0x40,
+ 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xd0, 0x30, 0x01, 0x00, 0x08, 0x00, 0xd0,
+ 0x10, 0x01, 0x09, 0x00, 0xd0, 0x10, 0x01, 0x10, 0x00, 0xd0, 0x10, 0x01};
/*
CFG-ITFM replaced by 5 valset messages which can be combined into one for RAM and one for BBR
diff --git a/src/main.cpp b/src/main.cpp
index 1924c0a48..a341e093b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -11,9 +11,6 @@
#include "airtime.h"
#include "buzz.h"
-#include "error.h"
-#include "power.h"
-// #include "debug.h"
#include "FSCommon.h"
#include "Led.h"
#include "RTC.h"
@@ -22,6 +19,8 @@
#include "concurrency/OSThread.h"
#include "concurrency/Periodic.h"
#include "detect/ScanI2C.h"
+#include "error.h"
+#include "power.h"
#if !MESHTASTIC_EXCLUDE_I2C
#include "detect/ScanI2CTwoWire.h"
@@ -39,7 +38,6 @@
#include "target_specific.h"
#include
#include
-// #include
#ifdef ARCH_ESP32
#include "freertosinc.h"
@@ -1221,10 +1219,6 @@ void loop()
{
runASAP = false;
- // axpDebugOutput.loop();
-
- // heap_caps_check_integrity_all(true); // FIXME - disable this expensive check
-
#ifdef ARCH_ESP32
esp32Loop();
#endif
@@ -1233,9 +1227,6 @@ void loop()
#endif
powerCommandsCheck();
- // For debugging
- // if (rIf) ((RadioLibInterface *)rIf)->isActivelyReceiving();
-
#ifdef DEBUG_STACK
static uint32_t lastPrint = 0;
if (!Throttle::isWithinTimespanMs(lastPrint, 10 * 1000L)) {
@@ -1244,23 +1235,14 @@ void loop()
}
#endif
- // TODO: This should go into a thread handled by FreeRTOS.
- // handleWebResponse();
-
service->loop();
long delayMsec = mainController.runOrDelay();
- /* if (mainController.nextThread && delayMsec)
- LOG_DEBUG("Next %s in %ld\n", mainController.nextThread->ThreadName.c_str(),
- mainController.nextThread->tillRun(millis())); */
-
// We want to sleep as long as possible here - because it saves power
if (!runASAP && loopCanSleep()) {
- // if(delayMsec > 100) LOG_DEBUG("sleeping %ld\n", delayMsec);
mainDelay.delay(delayMsec);
}
- // if (didWake) LOG_DEBUG("wake!\n");
}
#endif
diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h
index aa83ff27a..9ba69c612 100644
--- a/src/mesh/generated/meshtastic/mesh.pb.h
+++ b/src/mesh/generated/meshtastic/mesh.pb.h
@@ -109,7 +109,7 @@ typedef enum _meshtastic_HardwareModel {
meshtastic_HardwareModel_NRF52840_PCA10059 = 40,
/* Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 */
meshtastic_HardwareModel_DR_DEV = 41,
- /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */
+ /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */
meshtastic_HardwareModel_M5STACK = 42,
/* New Heltec LoRA32 with ESP32-S3 CPU */
meshtastic_HardwareModel_HELTEC_V3 = 43,
@@ -198,11 +198,13 @@ typedef enum _meshtastic_HardwareModel {
https://www.adafruit.com/product/938
^^^ short A0 to switch to I2C address 0x3C */
meshtastic_HardwareModel_RP2040_FEATHER_RFM95 = 76,
- /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */
+ /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */
meshtastic_HardwareModel_M5STACK_COREBASIC = 77,
meshtastic_HardwareModel_M5STACK_CORE2 = 78,
/* Pico2 with Waveshare Hat, same as Pico */
meshtastic_HardwareModel_RPI_PICO2 = 79,
+ /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ */
+ meshtastic_HardwareModel_M5STACK_CORES3 = 80,
/* ------------------------------------------------------------------------------------------------------------------------------------------
Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
------------------------------------------------------------------------------------------------------------------------------------------ */
diff --git a/src/meshUtils.cpp b/src/meshUtils.cpp
index c6f2c69b4..4819f6ed7 100644
--- a/src/meshUtils.cpp
+++ b/src/meshUtils.cpp
@@ -60,10 +60,17 @@ char *strnstr(const char *s, const char *find, size_t slen)
void printBytes(const char *label, const uint8_t *p, size_t numbytes)
{
- LOG_DEBUG("%s: ", label);
- for (size_t i = 0; i < numbytes; i++)
- LOG_DEBUG("%02x ", p[i]);
- LOG_DEBUG("\n");
+ char *messageBuffer;
+ int labelSize = strlen(label);
+ if (labelSize < 100 && numbytes < 64) {
+ messageBuffer = new char[labelSize + (numbytes * 3) + 2];
+ strncpy(messageBuffer, label, labelSize);
+ for (size_t i = 0; i < numbytes; i++)
+ snprintf(messageBuffer + labelSize + i * 3, 4, " %02x", p[i]);
+ strcpy(messageBuffer + labelSize + numbytes * 3, "\n");
+ LOG_DEBUG(messageBuffer);
+ delete messageBuffer;
+ }
}
bool memfll(const uint8_t *mem, uint8_t find, size_t numbytes)