mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-23 17:13:38 +00:00
Merge branch 'master' into backup-restore
This commit is contained in:
commit
df52bbcae3
@ -1,9 +1,10 @@
|
|||||||
|
# trunk-ignore-all(terrascan/AC_DOCKER_0002): Known terrascan issue
|
||||||
|
# trunk-ignore-all(hadolint/DL3008): Do not pin apt package versions
|
||||||
|
# trunk-ignore-all(hadolint/DL3013): Do not pin pip package versions
|
||||||
FROM mcr.microsoft.com/devcontainers/cpp:1-debian-12
|
FROM mcr.microsoft.com/devcontainers/cpp:1-debian-12
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
# trunk-ignore(terrascan/AC_DOCKER_0002): Known terrascan issue
|
|
||||||
# trunk-ignore(hadolint/DL3008): Use latest version of packages
|
|
||||||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||||
&& apt-get -y install --no-install-recommends \
|
&& apt-get -y install --no-install-recommends \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
@ -27,9 +28,11 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
|||||||
hwdata \
|
hwdata \
|
||||||
gpg \
|
gpg \
|
||||||
gnupg2 \
|
gnupg2 \
|
||||||
|
libusb-1.0-0-dev \
|
||||||
|
libi2c-dev \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN pipx install platformio==6.1.15
|
RUN pipx install platformio
|
||||||
|
|
||||||
COPY 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
|
COPY 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
|
||||||
|
|
||||||
|
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@ -2,7 +2,7 @@
|
|||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: docker
|
- package-ecosystem: docker
|
||||||
directory: devcontainer
|
directory: /.devcontainer
|
||||||
schedule:
|
schedule:
|
||||||
interval: daily
|
interval: daily
|
||||||
time: "05:00"
|
time: "05:00"
|
||||||
|
35
.github/workflows/generate-userprefs.yml
vendored
35
.github/workflows/generate-userprefs.yml
vendored
@ -1,35 +0,0 @@
|
|||||||
name: Generate UsersPrefs JSON manifest
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- userPrefs.h
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
generate-userprefs:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install Clang
|
|
||||||
run: sudo apt-get install -y clang
|
|
||||||
|
|
||||||
- name: Install trunk
|
|
||||||
run: curl https://get.trunk.io -fsSL | bash
|
|
||||||
|
|
||||||
- name: Generate userPrefs.jsom
|
|
||||||
run: python3 ./bin/build-userprefs-json.py
|
|
||||||
|
|
||||||
- name: Trunk format json
|
|
||||||
run: trunk format userPrefs.json
|
|
||||||
|
|
||||||
- name: Commit userPrefs.json
|
|
||||||
run: |
|
|
||||||
git config --global user.email "actions@github.com"
|
|
||||||
git config --global user.name "GitHub Actions"
|
|
||||||
git add userPrefs.json
|
|
||||||
git commit -m "Update userPrefs.json"
|
|
||||||
git push
|
|
10
.github/workflows/main_matrix.yml
vendored
10
.github/workflows/main_matrix.yml
vendored
@ -135,10 +135,10 @@ jobs:
|
|||||||
build_location: local
|
build_location: local
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
package-pio-deps-native:
|
package-pio-deps-native-tft:
|
||||||
uses: ./.github/workflows/package_pio_deps.yml
|
uses: ./.github/workflows/package_pio_deps.yml
|
||||||
with:
|
with:
|
||||||
pio_env: native
|
pio_env: native-tft
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
test-native:
|
test-native:
|
||||||
@ -288,7 +288,7 @@ jobs:
|
|||||||
needs:
|
needs:
|
||||||
- gather-artifacts
|
- gather-artifacts
|
||||||
- build-debian-src
|
- build-debian-src
|
||||||
- package-pio-deps-native
|
- package-pio-deps-native-tft
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -324,10 +324,10 @@ jobs:
|
|||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output/debian-src
|
path: ./output/debian-src
|
||||||
|
|
||||||
- name: Download native pio deps
|
- name: Download `native-tft` pio deps
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: platformio-deps-native-${{ steps.version.outputs.long }}
|
pattern: platformio-deps-native-tft-${{ steps.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output/pio-deps-native
|
path: ./output/pio-deps-native
|
||||||
|
|
||||||
|
4
.github/workflows/nightly.yml
vendored
4
.github/workflows/nightly.yml
vendored
@ -9,7 +9,7 @@ permissions: read-all
|
|||||||
jobs:
|
jobs:
|
||||||
trunk_check:
|
trunk_check:
|
||||||
name: Trunk Check and Upload
|
name: Trunk Check and Upload
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@ -23,7 +23,7 @@ jobs:
|
|||||||
trunk_upgrade:
|
trunk_upgrade:
|
||||||
# See: https://github.com/trunk-io/trunk-action/blob/v1/readme.md#automatic-upgrades
|
# See: https://github.com/trunk-io/trunk-action/blob/v1/readme.md#automatic-upgrades
|
||||||
name: Trunk Upgrade (PR)
|
name: Trunk Upgrade (PR)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # For trunk to create PRs
|
contents: write # For trunk to create PRs
|
||||||
pull-requests: write # For trunk to create PRs
|
pull-requests: write # For trunk to create PRs
|
||||||
|
41
.github/workflows/sec_sast_flawfinder.yml
vendored
41
.github/workflows/sec_sast_flawfinder.yml
vendored
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
name: Flawfinder Scan
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [master, develop]
|
|
||||||
paths-ignore:
|
|
||||||
- "**.md"
|
|
||||||
- "version.properties"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
flawfinder:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Flawfinder
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# step 1
|
|
||||||
- name: clone application source code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# step 2
|
|
||||||
- name: flawfinder_scan
|
|
||||||
uses: david-a-wheeler/flawfinder@2.0.19
|
|
||||||
with:
|
|
||||||
arguments: "--sarif ./"
|
|
||||||
output: "flawfinder_report.sarif"
|
|
||||||
|
|
||||||
# step 3
|
|
||||||
- name: save report as pipeline artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: flawfinder_report.sarif
|
|
||||||
overwrite: true
|
|
||||||
path: flawfinder_report.sarif
|
|
||||||
|
|
||||||
# step 4
|
|
||||||
- name: publish code scanning alerts
|
|
||||||
uses: github/codeql-action/upload-sarif@v3
|
|
||||||
with:
|
|
||||||
sarif_file: flawfinder_report.sarif
|
|
||||||
category: flawfinder
|
|
6
.github/workflows/sec_sast_semgrep_cron.yml
vendored
6
.github/workflows/sec_sast_semgrep_cron.yml
vendored
@ -3,10 +3,10 @@ name: Semgrep Full Scan
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 1 * * 6"
|
- cron: 0 1 * * 6
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
semgrep-full:
|
semgrep-full:
|
||||||
|
2
.github/workflows/sec_sast_semgrep_pull.yml
vendored
2
.github/workflows/sec_sast_semgrep_pull.yml
vendored
@ -2,6 +2,8 @@
|
|||||||
name: Semgrep Differential Scan
|
name: Semgrep Differential Scan
|
||||||
on: pull_request
|
on: pull_request
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
semgrep-diff:
|
semgrep-diff:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
2
.github/workflows/trunk_annotate_pr.yml
vendored
2
.github/workflows/trunk_annotate_pr.yml
vendored
@ -11,7 +11,7 @@ permissions: read-all
|
|||||||
jobs:
|
jobs:
|
||||||
trunk_check:
|
trunk_check:
|
||||||
name: Trunk Code Quality Annotate
|
name: Trunk Code Quality Annotate
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
permissions:
|
permissions:
|
||||||
checks: write # For trunk to post annotations
|
checks: write # For trunk to post annotations
|
||||||
contents: read # For repo checkout
|
contents: read # For repo checkout
|
||||||
|
2
.github/workflows/trunk_check.yml
vendored
2
.github/workflows/trunk_check.yml
vendored
@ -9,7 +9,7 @@ permissions: read-all
|
|||||||
jobs:
|
jobs:
|
||||||
trunk_check:
|
trunk_check:
|
||||||
name: Trunk Check Runner
|
name: Trunk Check Runner
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
permissions:
|
permissions:
|
||||||
checks: write # For trunk to post annotations
|
checks: write # For trunk to post annotations
|
||||||
contents: read # For repo checkout
|
contents: read # For repo checkout
|
||||||
|
6
.github/workflows/trunk_format_pr.yml
vendored
6
.github/workflows/trunk_format_pr.yml
vendored
@ -4,11 +4,15 @@ on:
|
|||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
trunk-fmt:
|
trunk-fmt:
|
||||||
if: github.event.issue.pull_request != null && contains(github.event.comment.body, 'trunk fmt')
|
if: github.event.issue.pull_request != null && contains(github.event.comment.body, 'trunk fmt')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
6
.github/workflows/update_protobufs.yml
vendored
6
.github/workflows/update_protobufs.yml
vendored
@ -1,10 +1,14 @@
|
|||||||
name: Update protobufs and regenerate classes
|
name: Update protobufs and regenerate classes
|
||||||
on: workflow_dispatch
|
on: workflow_dispatch
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-protobufs:
|
update-protobufs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
@ -9,15 +9,15 @@ plugins:
|
|||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- prettier@3.5.2
|
- prettier@3.5.2
|
||||||
- trufflehog@3.88.12
|
- trufflehog@3.88.14
|
||||||
- yamllint@1.35.1
|
- yamllint@1.35.1
|
||||||
- bandit@1.8.3
|
- bandit@1.8.3
|
||||||
- checkov@3.2.373
|
- checkov@3.2.378
|
||||||
- terrascan@1.19.9
|
- terrascan@1.19.9
|
||||||
- trivy@0.59.1
|
- trivy@0.59.1
|
||||||
- taplo@0.9.3
|
- taplo@0.9.3
|
||||||
- ruff@0.9.7
|
- ruff@0.9.7
|
||||||
- isort@6.0.0
|
- isort@6.0.1
|
||||||
- markdownlint@0.44.0
|
- markdownlint@0.44.0
|
||||||
- oxipng@9.1.4
|
- oxipng@9.1.4
|
||||||
- svgo@3.3.2
|
- svgo@3.3.2
|
||||||
|
@ -24,7 +24,7 @@ mkdir -p $OUTDIR/
|
|||||||
rm -r $OUTDIR/* || true
|
rm -r $OUTDIR/* || true
|
||||||
|
|
||||||
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
||||||
platformio pkg update --environment native || platformioFailed
|
pio pkg update --environment native || platformioFailed
|
||||||
pio run --environment native || platformioFailed
|
pio run --environment native || platformioFailed
|
||||||
cp .pio/build/native/program "$OUTDIR/meshtasticd_linux_$(uname -m)"
|
cp .pio/build/native/program "$OUTDIR/meshtasticd_linux_$(uname -m)"
|
||||||
cp bin/native-install.* $OUTDIR
|
cp bin/native-install.* $OUTDIR
|
||||||
|
49
bin/config.d/lora-raxda-rock2f-starter-edition-hat.yaml
Normal file
49
bin/config.d/lora-raxda-rock2f-starter-edition-hat.yaml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Lora:
|
||||||
|
|
||||||
|
### Raxda Rock 2F running Armbian Linux 6.1.99-vendor-rk35xx
|
||||||
|
### https://github.com/markbirss/rock-2f
|
||||||
|
### https://github.com/markbirss/lora-starter-edition-sx1262-i2c
|
||||||
|
### https://github.com/radxa-pkg/radxa-overlays/blob/main/arch/arm64/boot/dts/rockchip/overlays/rk3528-spi0-cs1-spidev.dts
|
||||||
|
### Require install of https://github.com/radxa-pkg/radxa-overlays and rk3528-spi0-cs1-spidev.dtbo copied to /boot/dtb/rockchip/overlay and enabled
|
||||||
|
### in /boot/armbianEnv.txt - overlays=rk3528-spi0-cs1-spidev
|
||||||
|
### The Radxa Rock 2F employs multiple gpio chips.
|
||||||
|
### Each gpio pin must be unique, but can be assigned to a specific gpio chip and line.
|
||||||
|
### In case solely a no. is given, the default gpio chip and pin == line will be employed.
|
||||||
|
###
|
||||||
|
Module: sx1262 # Radxa Rock 2F + Starter Edition SX1262 HAT by Mark Birss
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: 1.8
|
||||||
|
spidev: spidev0.1
|
||||||
|
CS: # NSS PIN_24 -> chip 4, line 14
|
||||||
|
pin: 24
|
||||||
|
gpiochip: 4
|
||||||
|
line: 14
|
||||||
|
SCK: # SCK PIN_23 -> chip 4, line 12
|
||||||
|
pin: 23
|
||||||
|
gpiochip: 4
|
||||||
|
line: 12
|
||||||
|
Busy: # BUSY PIN_7 -> chip 4, line 6
|
||||||
|
pin: 7
|
||||||
|
gpiochip: 4
|
||||||
|
line: 6
|
||||||
|
MOSI: # MOSI PIN_19 -> chip 4, line 10
|
||||||
|
pin: 19
|
||||||
|
gpiochip: 4
|
||||||
|
line: 10
|
||||||
|
MISO: # MISO PIN_21 -> chip 4, line 11
|
||||||
|
pin: 21
|
||||||
|
gpiochip: 4
|
||||||
|
line: 11
|
||||||
|
Reset: # NRST PIN_12 -> chip 1, line 13
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 1
|
||||||
|
line: 13
|
||||||
|
IRQ: # DIO1 PIN_15 -> chip 4, line 22
|
||||||
|
pin: 15
|
||||||
|
gpiochip: 4
|
||||||
|
line: 22
|
||||||
|
# RXen: # RXEN PIN_22 -> chip 3!, line 17
|
||||||
|
# pin: 22
|
||||||
|
# gpiochip: 3
|
||||||
|
# line: 17
|
||||||
|
# TXen: RADIOLIB_NC # TXEN no PIN, no line, fallback to default gpio chip
|
10
bin/config.d/lora-starter-edition-sx1262-i2c.yaml
Normal file
10
bin/config.d/lora-starter-edition-sx1262-i2c.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# https://www.waveshare.com/core1262-868m.htm
|
||||||
|
# https://github.com/markbirss/lora-starter-edition-sx1262-i2c
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Starter Edition SX1262 I2C Raspberry Pi HAT
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
CS: 8
|
||||||
|
IRQ: 22
|
||||||
|
Busy: 4
|
||||||
|
Reset: 18
|
10
bin/config.d/lora-ws-raspberry-pi-pico-to-rpi-adapter.yaml
Normal file
10
bin/config.d/lora-ws-raspberry-pi-pico-to-rpi-adapter.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# https://www.waveshare.com/pico-lora-sx1262-868m.htm
|
||||||
|
# https://github.com/markbirss/lora-ws-raspberry-pi-pico-to-rpi-adapter
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Waveshare Raspberry Pi Pico to Raspberry Pi HAT Adapter
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
CS: 21
|
||||||
|
IRQ: 16
|
||||||
|
Busy: 20
|
||||||
|
Reset: 18
|
@ -1 +1 @@
|
|||||||
Subproject commit 08410588c86f647f4e29bfd06df3807d4a1e8d7f
|
Subproject commit cbe5c14e8ad9e6de9d287cc640b44c888fdd145d
|
@ -1,3 +1,6 @@
|
|||||||
|
# trunk-ignore-all(bandit/B404): subprocess is used to call addr2line
|
||||||
|
# trunk-ignore-all(bandit/B603): subprocess is used to call addr2line
|
||||||
|
|
||||||
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
|
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 79298fcdf04c1e680f5abd875233394f44ddaf7a
|
Subproject commit 2a3a67f0431926dc3f32a8b216d264daab09b9bf
|
File diff suppressed because it is too large
Load Diff
@ -135,7 +135,7 @@ void setupNicheGraphics();
|
|||||||
|
|
||||||
using namespace concurrency;
|
using namespace concurrency;
|
||||||
|
|
||||||
volatile static const char slipstreamTZString[] = USERPREFS_TZ_STRING;
|
volatile static const char slipstreamTZString[] = {USERPREFS_TZ_STRING};
|
||||||
|
|
||||||
// We always create a screen object, but we only init it if we find the hardware
|
// We always create a screen object, but we only init it if we find the hardware
|
||||||
graphics::Screen *screen = nullptr;
|
graphics::Screen *screen = nullptr;
|
||||||
|
@ -148,7 +148,7 @@ void Channels::initDefaultChannel(ChannelIndex chIndex)
|
|||||||
channelSettings.psk.size = sizeof(defaultpsk0);
|
channelSettings.psk.size = sizeof(defaultpsk0);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_0_NAME
|
#ifdef USERPREFS_CHANNEL_0_NAME
|
||||||
strcpy(channelSettings.name, USERPREFS_CHANNEL_0_NAME);
|
strcpy(channelSettings.name, (const char *)USERPREFS_CHANNEL_0_NAME);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_0_PRECISION
|
#ifdef USERPREFS_CHANNEL_0_PRECISION
|
||||||
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_0_PRECISION;
|
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_0_PRECISION;
|
||||||
@ -167,7 +167,7 @@ void Channels::initDefaultChannel(ChannelIndex chIndex)
|
|||||||
channelSettings.psk.size = sizeof(defaultpsk1);
|
channelSettings.psk.size = sizeof(defaultpsk1);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_1_NAME
|
#ifdef USERPREFS_CHANNEL_1_NAME
|
||||||
strcpy(channelSettings.name, USERPREFS_CHANNEL_1_NAME);
|
strcpy(channelSettings.name, (const char *)USERPREFS_CHANNEL_1_NAME);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_1_PRECISION
|
#ifdef USERPREFS_CHANNEL_1_PRECISION
|
||||||
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_1_PRECISION;
|
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_1_PRECISION;
|
||||||
@ -186,7 +186,7 @@ void Channels::initDefaultChannel(ChannelIndex chIndex)
|
|||||||
channelSettings.psk.size = sizeof(defaultpsk2);
|
channelSettings.psk.size = sizeof(defaultpsk2);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_2_NAME
|
#ifdef USERPREFS_CHANNEL_2_NAME
|
||||||
strcpy(channelSettings.name, USERPREFS_CHANNEL_2_NAME);
|
strcpy(channelSettings.name, (const char *)USERPREFS_CHANNEL_2_NAME);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CHANNEL_2_PRECISION
|
#ifdef USERPREFS_CHANNEL_2_PRECISION
|
||||||
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_2_PRECISION;
|
channelSettings.module_settings.position_precision = USERPREFS_CHANNEL_2_PRECISION;
|
||||||
|
@ -400,9 +400,16 @@ bool isBroadcast(uint32_t dest)
|
|||||||
return dest == NODENUM_BROADCAST || dest == NODENUM_BROADCAST_NO_LORA;
|
return dest == NODENUM_BROADCAST || dest == NODENUM_BROADCAST_NO_LORA;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeDB::resetRadioConfig()
|
void NodeDB::resetRadioConfig(bool is_fresh_install)
|
||||||
{
|
{
|
||||||
|
bool didFactoryReset = false;
|
||||||
|
|
||||||
radioGeneration++;
|
radioGeneration++;
|
||||||
|
|
||||||
|
if (is_fresh_install) {
|
||||||
|
radioGeneration++;
|
||||||
|
}
|
||||||
|
|
||||||
if (channelFile.channels_count != MAX_NUM_CHANNELS) {
|
if (channelFile.channels_count != MAX_NUM_CHANNELS) {
|
||||||
LOG_INFO("Set default channel and radio preferences!");
|
LOG_INFO("Set default channel and radio preferences!");
|
||||||
|
|
||||||
@ -411,6 +418,13 @@ void NodeDB::resetRadioConfig()
|
|||||||
channels.onConfigChanged();
|
channels.onConfigChanged();
|
||||||
// Update the global myRegion
|
// Update the global myRegion
|
||||||
initRegion();
|
initRegion();
|
||||||
|
|
||||||
|
#if (defined(T_DECK) || defined(T_WATCH_S3) || defined(UNPHONE) || defined(PICOMPUTER_S3)) && HAS_TFT
|
||||||
|
// as long as PhoneAPI shares BT and TFT app switch BT off
|
||||||
|
config.bluetooth.enabled = false;
|
||||||
|
if (moduleConfig.external_notification.nag_timeout == 60)
|
||||||
|
moduleConfig.external_notification.nag_timeout = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NodeDB::factoryReset(bool eraseBleBonds)
|
bool NodeDB::factoryReset(bool eraseBleBonds)
|
||||||
@ -561,14 +575,18 @@ void NodeDB::installDefaultConfig(bool preserveKey = false)
|
|||||||
#else
|
#else
|
||||||
config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_ENABLED;
|
config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_ENABLED;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USERPREFS_CONFIG_SMART_POSITION_ENABLED
|
||||||
|
config.position.position_broadcast_smart_enabled = USERPREFS_CONFIG_SMART_POSITION_ENABLED;
|
||||||
|
#else
|
||||||
config.position.position_broadcast_smart_enabled = true;
|
config.position.position_broadcast_smart_enabled = true;
|
||||||
|
#endif
|
||||||
config.position.broadcast_smart_minimum_distance = 100;
|
config.position.broadcast_smart_minimum_distance = 100;
|
||||||
config.position.broadcast_smart_minimum_interval_secs = 30;
|
config.position.broadcast_smart_minimum_interval_secs = 30;
|
||||||
if (config.device.role != meshtastic_Config_DeviceConfig_Role_ROUTER)
|
if (config.device.role != meshtastic_Config_DeviceConfig_Role_ROUTER)
|
||||||
config.device.node_info_broadcast_secs = default_node_info_broadcast_secs;
|
config.device.node_info_broadcast_secs = default_node_info_broadcast_secs;
|
||||||
config.security.serial_enabled = true;
|
config.security.serial_enabled = true;
|
||||||
config.security.admin_channel_enabled = false;
|
config.security.admin_channel_enabled = false;
|
||||||
resetRadioConfig();
|
resetRadioConfig(false, true); // This also triggers NodeInfo/Position requests since we're fresh
|
||||||
strncpy(config.network.ntp_server, "meshtastic.pool.ntp.org", 32);
|
strncpy(config.network.ntp_server, "meshtastic.pool.ntp.org", 32);
|
||||||
|
|
||||||
#if (defined(T_DECK) || defined(T_WATCH_S3) || defined(UNPHONE) || defined(PICOMPUTER_S3) || defined(SENSECAP_INDICATOR)) && \
|
#if (defined(T_DECK) || defined(T_WATCH_S3) || defined(UNPHONE) || defined(PICOMPUTER_S3) || defined(SENSECAP_INDICATOR)) && \
|
||||||
@ -631,8 +649,16 @@ void NodeDB::installDefaultConfig(bool preserveKey = false)
|
|||||||
|
|
||||||
void NodeDB::initConfigIntervals()
|
void NodeDB::initConfigIntervals()
|
||||||
{
|
{
|
||||||
|
#ifdef USERPREFS_CONFIG_GPS_UPDATE_INTERVAL
|
||||||
|
config.position.gps_update_interval = USERPREFS_CONFIG_GPS_UPDATE_INTERVAL;
|
||||||
|
#else
|
||||||
config.position.gps_update_interval = default_gps_update_interval;
|
config.position.gps_update_interval = default_gps_update_interval;
|
||||||
|
#endif
|
||||||
|
#ifdef USERPREFS_CONFIG_POSITION_BROADCAST_INTERVAL
|
||||||
|
config.position.position_broadcast_secs = USERPREFS_CONFIG_POSITION_BROADCAST_INTERVAL;
|
||||||
|
#else
|
||||||
config.position.position_broadcast_secs = default_broadcast_interval_secs;
|
config.position.position_broadcast_secs = default_broadcast_interval_secs;
|
||||||
|
#endif
|
||||||
|
|
||||||
config.power.ls_secs = default_ls_secs;
|
config.power.ls_secs = default_ls_secs;
|
||||||
config.power.min_wake_secs = default_min_wake_secs;
|
config.power.min_wake_secs = default_min_wake_secs;
|
||||||
@ -874,12 +900,12 @@ void NodeDB::installDefaultDeviceState()
|
|||||||
// Set default owner name
|
// Set default owner name
|
||||||
pickNewNodeNum(); // based on macaddr now
|
pickNewNodeNum(); // based on macaddr now
|
||||||
#ifdef USERPREFS_CONFIG_OWNER_LONG_NAME
|
#ifdef USERPREFS_CONFIG_OWNER_LONG_NAME
|
||||||
snprintf(owner.long_name, sizeof(owner.long_name), USERPREFS_CONFIG_OWNER_LONG_NAME);
|
snprintf(owner.long_name, sizeof(owner.long_name), (const char *)USERPREFS_CONFIG_OWNER_LONG_NAME);
|
||||||
#else
|
#else
|
||||||
snprintf(owner.long_name, sizeof(owner.long_name), "Meshtastic %04x", getNodeNum() & 0x0ffff);
|
snprintf(owner.long_name, sizeof(owner.long_name), "Meshtastic %04x", getNodeNum() & 0x0ffff);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USERPREFS_CONFIG_OWNER_SHORT_NAME
|
#ifdef USERPREFS_CONFIG_OWNER_SHORT_NAME
|
||||||
snprintf(owner.short_name, sizeof(owner.short_name), USERPREFS_CONFIG_OWNER_SHORT_NAME);
|
snprintf(owner.short_name, sizeof(owner.short_name), (const char *)USERPREFS_CONFIG_OWNER_SHORT_NAME);
|
||||||
#else
|
#else
|
||||||
snprintf(owner.short_name, sizeof(owner.short_name), "%04x", getNodeNum() & 0x0ffff);
|
snprintf(owner.short_name, sizeof(owner.short_name), "%04x", getNodeNum() & 0x0ffff);
|
||||||
#endif
|
#endif
|
||||||
@ -1697,4 +1723,4 @@ void recordCriticalError(meshtastic_CriticalErrorCode code, uint32_t address, co
|
|||||||
LOG_ERROR("A critical failure occurred, portduino is exiting");
|
LOG_ERROR("A critical failure occurred, portduino is exiting");
|
||||||
exit(2);
|
exit(2);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
@ -97,9 +97,12 @@ class NodeDB
|
|||||||
SEGMENT_NODEDATABASE);
|
SEGMENT_NODEDATABASE);
|
||||||
|
|
||||||
/** Reinit radio config if needed, because either:
|
/** Reinit radio config if needed, because either:
|
||||||
* sometimes a buggy android app might send us bogus settings
|
* a) sometimes a buggy android app might send us bogus settings or
|
||||||
|
* b) the client set factory_reset
|
||||||
|
* @param is_fresh_install set to true after a fresh install, to trigger NodeInfo/Position requests
|
||||||
|
* @return true if the config was completely reset, in that case, we should send it back to the client
|
||||||
*/
|
*/
|
||||||
void resetRadioConfig();
|
void resetRadioConfig(bool factory_reset = false);
|
||||||
|
|
||||||
/// given a subpacket sniffed from the network, update our DB state
|
/// given a subpacket sniffed from the network, update our DB state
|
||||||
/// 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
|
||||||
|
@ -27,9 +27,11 @@
|
|||||||
// "USERPREFS_FIXED_GPS_ALT": "0",
|
// "USERPREFS_FIXED_GPS_ALT": "0",
|
||||||
// "USERPREFS_FIXED_GPS_LAT": "48.85873920",
|
// "USERPREFS_FIXED_GPS_LAT": "48.85873920",
|
||||||
// "USERPREFS_FIXED_GPS_LON": "2.294508368",
|
// "USERPREFS_FIXED_GPS_LON": "2.294508368",
|
||||||
|
// "USERPREFS_CONFIG_SMART_POSITION_ENABLED": "false",
|
||||||
|
// "USERPREFS_CONFIG_GPS_UPDATE_INTERVAL": "600",
|
||||||
|
// "USERPREFS_CONFIG_POSITION_BROADCAST_INTERVAL": "1800",
|
||||||
// "USERPREFS_LORACONFIG_CHANNEL_NUM": "31",
|
// "USERPREFS_LORACONFIG_CHANNEL_NUM": "31",
|
||||||
// "USERPREFS_LORACONFIG_MODEM_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST",
|
// "USERPREFS_LORACONFIG_MODEM_PRESET": "meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST",
|
||||||
"USERPREFS_TZ_STRING": "tzplaceholder "
|
|
||||||
// "USERPREFS_USE_ADMIN_KEY_0": "{ 0xcd, 0xc0, 0xb4, 0x3c, 0x53, 0x24, 0xdf, 0x13, 0xca, 0x5a, 0xa6, 0x0c, 0x0d, 0xec, 0x85, 0x5a, 0x4c, 0xf6, 0x1a, 0x96, 0x04, 0x1a, 0x3e, 0xfc, 0xbb, 0x8e, 0x33, 0x71, 0xe5, 0xfc, 0xff, 0x3c }",
|
// "USERPREFS_USE_ADMIN_KEY_0": "{ 0xcd, 0xc0, 0xb4, 0x3c, 0x53, 0x24, 0xdf, 0x13, 0xca, 0x5a, 0xa6, 0x0c, 0x0d, 0xec, 0x85, 0x5a, 0x4c, 0xf6, 0x1a, 0x96, 0x04, 0x1a, 0x3e, 0xfc, 0xbb, 0x8e, 0x33, 0x71, 0xe5, 0xfc, 0xff, 0x3c }",
|
||||||
// "USERPREFS_USE_ADMIN_KEY_1": "{}",
|
// "USERPREFS_USE_ADMIN_KEY_1": "{}",
|
||||||
// "USERPREFS_USE_ADMIN_KEY_2": "{}",
|
// "USERPREFS_USE_ADMIN_KEY_2": "{}",
|
||||||
@ -37,5 +39,6 @@
|
|||||||
// "USERPREFS_OEM_FONT_SIZE": "0",
|
// "USERPREFS_OEM_FONT_SIZE": "0",
|
||||||
// "USERPREFS_OEM_IMAGE_WIDTH": "50",
|
// "USERPREFS_OEM_IMAGE_WIDTH": "50",
|
||||||
// "USERPREFS_OEM_IMAGE_HEIGHT": "28",
|
// "USERPREFS_OEM_IMAGE_HEIGHT": "28",
|
||||||
// "USERPREFS_OEM_IMAGE_DATA": "{ 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x18, 0x1F, 0xF0, 0x67, 0x00, 0x00, 0x00, 0x30, 0x1F, 0xF8, 0x33, 0x00, 0x00, 0x00, 0x30, 0x00, 0xFC, 0x31, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7E, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x1F, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x81, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xC7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00}"
|
// "USERPREFS_OEM_IMAGE_DATA": "{ 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x18, 0x1F, 0xF0, 0x67, 0x00, 0x00, 0x00, 0x30, 0x1F, 0xF8, 0x33, 0x00, 0x00, 0x00, 0x30, 0x00, 0xFC, 0x31, 0x00, 0x00, 0x00, 0x60, 0x00, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7E, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x1F, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x81, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xC7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00}",
|
||||||
|
"USERPREFS_TZ_STRING": "tzplaceholder "
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ board = wiscore_rak11300
|
|||||||
upload_protocol = picotool
|
upload_protocol = picotool
|
||||||
# keep an old SDK to use less memory.
|
# keep an old SDK to use less memory.
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#v1.2.0-gcc12
|
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#v1.2.0-gcc12
|
||||||
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#3.7.2
|
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#4.0.1
|
||||||
|
|
||||||
# add our variants files to the include and src paths
|
# add our variants files to the include and src paths
|
||||||
build_flags = ${rp2040_base.build_flags}
|
build_flags = ${rp2040_base.build_flags}
|
||||||
|
@ -4,6 +4,12 @@
|
|||||||
|
|
||||||
#define ARDUINO_ARCH_AVR
|
#define ARDUINO_ARCH_AVR
|
||||||
|
|
||||||
|
// Define I2C pins to ensure correct usage of both ports
|
||||||
|
#define I2C_SDA 20
|
||||||
|
#define I2C_SCL 21
|
||||||
|
#define I2C_SDA1 2
|
||||||
|
#define I2C_SCL1 3
|
||||||
|
|
||||||
#define LED_CONN PIN_LED2
|
#define LED_CONN PIN_LED2
|
||||||
#define LED_PIN LED_BUILTIN
|
#define LED_PIN LED_BUILTIN
|
||||||
#define ledOff(pin) pinMode(pin, INPUT)
|
#define ledOff(pin) pinMode(pin, INPUT)
|
||||||
|
@ -103,6 +103,11 @@ extern "C" {
|
|||||||
|
|
||||||
#define LR1110_GNSS_ANT_PIN (32 + 5) // P1.05 37
|
#define LR1110_GNSS_ANT_PIN (32 + 5) // P1.05 37
|
||||||
|
|
||||||
|
#define GPS_RX_PIN PIN_SERIAL1_RX
|
||||||
|
#define GPS_TX_PIN PIN_SERIAL1_TX
|
||||||
|
|
||||||
|
#define HAS_GPS 1
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user