mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-22 03:02:08 +10:00
Compare commits
220
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7b7c3f90d | ||
|
|
fc2316b292 | ||
|
|
263ed1d0ce | ||
|
|
7d10602f6a | ||
|
|
6f0e3c5b68 | ||
|
|
d05232b8b2 | ||
|
|
e42ff3590c | ||
|
|
7527233130 | ||
|
|
197226365b | ||
|
|
eeb95d6bff | ||
|
|
323830c7cc | ||
|
|
a9acd506a8 | ||
|
|
a1d6c6db62 | ||
|
|
0f2d224e74 | ||
|
|
381cefa6b2 | ||
|
|
a50cbdc95b | ||
|
|
e7c7af40ae | ||
|
|
48ae4b6c7a | ||
|
|
ae5019bec6 | ||
|
|
3cd3fd3386 | ||
|
|
839cf554b7 | ||
|
|
216655f05f | ||
|
|
2c633b6458 | ||
|
|
7fdee353b5 | ||
|
|
16cf962351 | ||
|
|
12f0a74557 | ||
|
|
2dd9c5eef2 | ||
|
|
98963218ad | ||
|
|
6628c9e66e | ||
|
|
d96770007d | ||
|
|
1370b234eb | ||
|
|
9ba44bfbfb | ||
|
|
934c3fa8be | ||
|
|
7f0cd70c07 | ||
|
|
d5fe7dc9e6 | ||
|
|
98efb25a0c | ||
|
|
8dc3c0541b | ||
|
|
fc6c89abeb | ||
|
|
c7feef00c0 | ||
|
|
8c905427a1 | ||
|
|
90befeeeb1 | ||
|
|
9e61c44629 | ||
|
|
3ad80b80ee | ||
|
|
8fe12e9fda | ||
|
|
4e05f20c58 | ||
|
|
33d526f6f9 | ||
|
|
0abd3cdde8 | ||
|
|
870ba80092 | ||
|
|
2955c12d2a | ||
|
|
198339873a | ||
|
|
29d70853e6 | ||
|
|
976d201fc1 | ||
|
|
80763ca235 | ||
|
|
844f5b46d0 | ||
|
|
aec98b61b9 | ||
|
|
99abfebc4a | ||
|
|
068f5af4d8 | ||
|
|
993c242202 | ||
|
|
3d4f0b895b | ||
|
|
3b29eea577 | ||
|
|
e7e34e86d5 | ||
|
|
5a009889cc | ||
|
|
c4bac04be3 | ||
|
|
b9bdc87367 | ||
|
|
3b079c91bf | ||
|
|
d693fd4232 | ||
|
|
163c54877c | ||
|
|
2e2993f180 | ||
|
|
450f2adab0 | ||
|
|
0ad1b66387 | ||
|
|
5716aeba3b | ||
|
|
723209b198 | ||
|
|
5a8ce60d68 | ||
|
|
c77b10a317 | ||
|
|
8fa5b4f7ce | ||
|
|
e30294b6da | ||
|
|
948c28afff | ||
|
|
d09433e453 | ||
|
|
139b970409 | ||
|
|
1fe9a41fb9 | ||
|
|
2aefd386b6 | ||
|
|
532a63e541 | ||
|
|
e4c5bfd161 | ||
|
|
ea3386f34a | ||
|
|
e1d238b75f | ||
|
|
286bc852b3 | ||
|
|
e282491cd8 | ||
|
|
58fee80b30 | ||
|
|
3673af46cf | ||
|
|
7404228555 | ||
|
|
76b6eaa48a | ||
|
|
344fe2f70b | ||
|
|
458e46b1ea | ||
|
|
6f5448fa61 | ||
|
|
d369825c38 | ||
|
|
4fbd5c9f80 | ||
|
|
aebcb34c80 | ||
|
|
39aefde18d | ||
|
|
b7379f1516 | ||
|
|
fe8bfa0069 | ||
|
|
52750927e3 | ||
|
|
3ef7a15a17 | ||
|
|
b155a63d3b | ||
|
|
60730a73c2 | ||
|
|
421f9afead | ||
|
|
429cf51539 | ||
|
|
d9e2b12097 | ||
|
|
d7d08a4725 | ||
|
|
0668b82858 | ||
|
|
0797378a4d | ||
|
|
a79b75a0d5 | ||
|
|
391928ed08 | ||
|
|
6cbb9ab09a | ||
|
|
f185abbcdd | ||
|
|
5d12edbe07 | ||
|
|
398d1adea1 | ||
|
|
393cd96ba2 | ||
|
|
6658ec2603 | ||
|
|
b941dab900 | ||
|
|
ffe6f706f9 | ||
|
|
0ed537a336 | ||
|
|
86dad90573 | ||
|
|
20db5fdbb7 | ||
|
|
5b1ea922f3 | ||
|
|
5b94f580dc | ||
|
|
3d524be965 | ||
|
|
4ec59ce75d | ||
|
|
cb28c38828 | ||
|
|
969aefa551 | ||
|
|
3f5828c0e9 | ||
|
|
5cf365245e | ||
|
|
fdd17ac75c | ||
|
|
9e40c8893f | ||
|
|
afd5e29bce | ||
|
|
20f838a61e | ||
|
|
58736f5184 | ||
|
|
22031c5886 | ||
|
|
fe4e75eb66 | ||
|
|
42075da09e | ||
|
|
6ba82ed5b6 | ||
|
|
935b0504d4 | ||
|
|
a8fed3256e | ||
|
|
1626836a71 | ||
|
|
66161da2a7 | ||
|
|
6bbdfe1797 | ||
|
|
7ea28d34b2 | ||
|
|
65bf1630b3 | ||
|
|
3972fe1fd0 | ||
|
|
5ced739a57 | ||
|
|
b7bf251798 | ||
|
|
90742fc87e | ||
|
|
f7f356e2e2 | ||
|
|
1fad7facd6 | ||
|
|
153ab81a9f | ||
|
|
8d73d67246 | ||
|
|
0d46943bb8 | ||
|
|
deb45e471c | ||
|
|
3601eabbf8 | ||
|
|
eb2f3cef89 | ||
|
|
85be5965b0 | ||
|
|
1e34c1ef1b | ||
|
|
5f852a1c05 | ||
|
|
1d90ea6f1d | ||
|
|
65eee22396 | ||
|
|
cb938266c7 | ||
|
|
8093e2ed5a | ||
|
|
80af726877 | ||
|
|
3f5dc78744 | ||
|
|
563adc6aaa | ||
|
|
67f806b0a5 | ||
|
|
c7dc536640 | ||
|
|
6920a5f8b1 | ||
|
|
2b7a230977 | ||
|
|
1e16185fdd | ||
|
|
60c2592694 | ||
|
|
fc0ad4956e | ||
|
|
43aa90fc3f | ||
|
|
c28bdbd7e6 | ||
|
|
857c7b3a3a | ||
|
|
83cac93ca8 | ||
|
|
d34fa3e7df | ||
|
|
75cb8bb5ea | ||
|
|
2a99cc6a25 | ||
|
|
b5f98d1270 | ||
|
|
ef697319da | ||
|
|
efd68f9fad | ||
|
|
3a74e049ab | ||
|
|
3b1b308357 | ||
|
|
5a068431ed | ||
|
|
25f086a64f | ||
|
|
a93d4d7e9d | ||
|
|
54781cf51a | ||
|
|
ad7d19c317 | ||
|
|
58496e56d2 | ||
|
|
2c18a41613 | ||
|
|
c65eecc295 | ||
|
|
cac45d9ced | ||
|
|
02d42f87d3 | ||
|
|
9c439f8d0a | ||
|
|
cf998f03b6 | ||
|
|
f9d1f2414a | ||
|
|
13b25c0614 | ||
|
|
607b631114 | ||
|
|
99e88bb499 | ||
|
|
4f84cf011d | ||
|
|
0726a9f774 | ||
|
|
f8cc1d6046 | ||
|
|
f615990c00 | ||
|
|
8f81b194d3 | ||
|
|
6bc3e31537 | ||
|
|
15460c8f97 | ||
|
|
a77ac21e0d | ||
|
|
2b6d8f6824 | ||
|
+19 |
4c91beeda9 | ||
|
|
d0cf79a991 | ||
|
|
5408e81de7 | ||
|
|
357a33f454 | ||
|
|
4fccda26c6 | ||
|
|
f94c01b452 | ||
|
|
321ccbf5e2 |
@@ -100,7 +100,7 @@ runs:
|
|||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}
|
name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ runs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
@@ -4,16 +4,16 @@
|
|||||||
|
|
||||||
- Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first
|
- Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first
|
||||||
to say "Hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback
|
to say "Hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback
|
||||||
is appreciated." This will allow other devs to potentially save you time by not accidentially duplicating work etc...
|
is appreciated." This will allow other devs to potentially save you time by not accidentally duplicating work etc...
|
||||||
- Please do not check in files that don't have real changes
|
- Please do not check in files that don't have real changes
|
||||||
- Please do not reformat lines that you didn't have to change the code on
|
- Please do not reformat lines that you didn't have to change the code on
|
||||||
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor along with the ['Trunk Check' extension](https://marketplace.visualstudio.com/items?itemName=trunk.io) (In beta for windows, WSL2 for the linux version),
|
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor along with the ['Trunk Check' extension](https://marketplace.visualstudio.com/items?itemName=trunk.io) (In beta for windows, WSL2 for the Linux version),
|
||||||
because it automatically follows our indentation rules and its auto reformatting will not cause spurious changes to lines.
|
because it automatically follows our indentation rules and its auto reformatting will not cause spurious changes to lines.
|
||||||
- If your PR fixes a bug, mention "fixes #bugnum" somewhere in your pull request description.
|
- If your PR fixes a bug, mention "fixes #bugnum" somewhere in your pull request description.
|
||||||
- If your other co-developers have comments on your PR please tweak as needed.
|
- If your other co-developers have comments on your PR please tweak as needed.
|
||||||
- Please also enable "Allow edits by maintainers".
|
- Please also enable "Allow edits by maintainers".
|
||||||
- Please do not submit untested code.
|
- Please do not submit untested code.
|
||||||
- If you do not have the affected hardware to test your code changes adequately against regressions, please indicate this, so that contributors and commnunity members can help test your changes.
|
- If you do not have the affected hardware to test your code changes adequately against regressions, please indicate this, so that contributors and community members can help test your changes.
|
||||||
- If your PR gets accepted you can request a "Contributor" role in the Meshtastic Discord
|
- If your PR gets accepted you can request a "Contributor" role in the Meshtastic Discord
|
||||||
|
|
||||||
## 🤝 Attestations
|
## 🤝 Attestations
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-debian-src:
|
build-debian-src:
|
||||||
@@ -28,8 +27,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
path: meshtasticd
|
path: meshtasticd
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -42,7 +39,8 @@ jobs:
|
|||||||
sudo mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
|
sudo mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
|
||||||
|
|
||||||
- name: Import GPG key
|
- name: Import GPG key
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
if: github.event_name != 'pull_request' && github.event_name != 'pull_request_target'
|
||||||
|
uses: crazy-max/ghaction-import-gpg@v7
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
||||||
id: gpg
|
id: gpg
|
||||||
@@ -60,11 +58,11 @@ jobs:
|
|||||||
run: debian/ci_pack_sdeb.sh
|
run: debian/ci_pack_sdeb.sh
|
||||||
env:
|
env:
|
||||||
SERIES: ${{ inputs.series }}
|
SERIES: ${{ inputs.series }}
|
||||||
GPG_KEY_ID: ${{ steps.gpg.outputs.keyid }}
|
GPG_KEY_ID: ${{ steps.gpg.outputs.keyid || '' }}
|
||||||
PKG_VERSION: ${{ steps.version.outputs.deb }}
|
PKG_VERSION: ${{ steps.version.outputs.deb }}
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ jobs:
|
|||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Build ${{ inputs.platform }}
|
- name: Build ${{ inputs.platform }}
|
||||||
id: build
|
id: build
|
||||||
@@ -111,7 +109,7 @@ jobs:
|
|||||||
echo "</details>" >> $GITHUB_STEP_SUMMARY
|
echo "</details>" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
id: upload-firmware
|
id: upload-firmware
|
||||||
with:
|
with:
|
||||||
name: firmware-${{ inputs.platform }}-${{ inputs.pio_env }}-${{ inputs.version }}
|
name: firmware-${{ inputs.platform }}-${{ inputs.pio_env }}-${{ inputs.version }}
|
||||||
@@ -127,7 +125,7 @@ jobs:
|
|||||||
release/device-*.bat
|
release/device-*.bat
|
||||||
|
|
||||||
- name: Store manifests as an artifact
|
- name: Store manifests as an artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
id: upload-manifest
|
id: upload-manifest
|
||||||
with:
|
with:
|
||||||
name: manifest-${{ inputs.platform }}-${{ inputs.pio_env }}-${{ inputs.version }}
|
name: manifest-${{ inputs.platform }}-${{ inputs.pio_env }}-${{ inputs.version }}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ jobs:
|
|||||||
|
|
||||||
gather-artifacts:
|
gather-artifacts:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [version, build]
|
needs: [version, build]
|
||||||
@@ -98,7 +98,7 @@ jobs:
|
|||||||
ref: ${{github.event.pull_request.head.ref}}
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
path: ./
|
path: ./
|
||||||
pattern: firmware-*-*
|
pattern: firmware-*-*
|
||||||
@@ -111,7 +111,7 @@ jobs:
|
|||||||
run: mv -b -t ./ ./bin/device-*.sh ./bin/device-*.bat
|
run: mv -b -t ./ ./bin/device-*.sh ./bin/device-*.bat
|
||||||
|
|
||||||
- name: Repackage in single firmware zip
|
- name: Repackage in single firmware zip
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: firmware-${{inputs.target}}-${{ needs.version.outputs.long }}
|
name: firmware-${{inputs.target}}-${{ needs.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
@@ -127,7 +127,7 @@ jobs:
|
|||||||
./Meshtastic_nRF52_factory_erase*.uf2
|
./Meshtastic_nRF52_factory_erase*.uf2
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: firmware-*-${{ needs.version.outputs.long }}
|
pattern: firmware-*-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -146,7 +146,7 @@ jobs:
|
|||||||
run: zip -j -9 -r ./firmware-${{inputs.target}}-${{ needs.version.outputs.long }}.zip ./output
|
run: zip -j -9 -r ./firmware-${{inputs.target}}-${{ needs.version.outputs.long }}.zip ./output
|
||||||
|
|
||||||
- name: Repackage in single elfs zip
|
- name: Repackage in single elfs zip
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{inputs.target}}-${{ needs.version.outputs.long }}.zip
|
name: debug-elfs-${{inputs.target}}-${{ needs.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- develop # Default branch, same as 'cron' above
|
||||||
paths:
|
paths:
|
||||||
- debian/**
|
- debian/**
|
||||||
- "*.rpkg"
|
- "*.rpkg"
|
||||||
@@ -16,7 +16,7 @@ on:
|
|||||||
- .github/workflows/hook_copr.yml
|
- .github/workflows/hook_copr.yml
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -35,8 +35,8 @@ jobs:
|
|||||||
series:
|
series:
|
||||||
- jammy # 22.04 LTS
|
- jammy # 22.04 LTS
|
||||||
- noble # 24.04 LTS
|
- noble # 24.04 LTS
|
||||||
- plucky # 25.04
|
|
||||||
- questing # 25.10
|
- questing # 25.10
|
||||||
|
- resolute # 26.04 LTS
|
||||||
uses: ./.github/workflows/package_ppa.yml
|
uses: ./.github/workflows/package_ppa.yml
|
||||||
with:
|
with:
|
||||||
ppa_repo: ppa:meshtastic/daily
|
ppa_repo: ppa:meshtastic/daily
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ on:
|
|||||||
value: ${{ jobs.docker-build.outputs.digest }}
|
value: ${{ jobs.docker-build.outputs.digest }}
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -50,35 +50,41 @@ jobs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: |
|
run: |
|
||||||
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Docker login
|
|
||||||
if: ${{ inputs.push }}
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: meshtastic
|
|
||||||
password: ${{ secrets.DOCKER_FIRMWARE_TOKEN }}
|
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v4
|
||||||
|
with:
|
||||||
|
cache-image: true
|
||||||
|
|
||||||
- name: Docker setup
|
- name: Docker setup
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v4
|
||||||
|
with:
|
||||||
|
# Add Google/Amazon DockerHub mirrors to buildkit config
|
||||||
|
# https://docs.docker.com/build/ci/github-actions/configure-builder/#registry-mirror
|
||||||
|
buildkitd-config-inline: |
|
||||||
|
[registry."docker.io"]
|
||||||
|
mirrors = ["mirror.gcr.io", "public.ecr.aws"]
|
||||||
|
|
||||||
- name: Sanitize platform string
|
- name: Sanitize platform string
|
||||||
id: sanitize_platform
|
id: sanitize_platform
|
||||||
# Replace slashes with underscores
|
# Replace slashes with underscores
|
||||||
run: echo "cleaned_platform=${{ inputs.platform }}" | sed 's/\//_/g' >> $GITHUB_OUTPUT
|
run: echo "cleaned_platform=${{ inputs.platform }}" | sed 's/\//_/g' >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Docker login
|
||||||
|
if: ${{ inputs.push }}
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
username: meshtastic
|
||||||
|
password: ${{ secrets.DOCKER_FIRMWARE_TOKEN }}
|
||||||
|
|
||||||
- name: Docker tag
|
- name: Docker tag
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v6
|
||||||
with:
|
with:
|
||||||
images: meshtastic/meshtasticd
|
images: meshtastic/meshtasticd
|
||||||
tags: |
|
tags: |
|
||||||
@@ -86,7 +92,7 @@ jobs:
|
|||||||
flavor: latest=false
|
flavor: latest=false
|
||||||
|
|
||||||
- name: Docker build and push
|
- name: Docker build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v7
|
||||||
id: docker_variant
|
id: docker_variant
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
@@ -97,3 +103,6 @@ jobs:
|
|||||||
platforms: ${{ inputs.platform }}
|
platforms: ${{ inputs.platform }}
|
||||||
build-args: |
|
build-args: |
|
||||||
PIO_ENV=${{ inputs.pio_env }}
|
PIO_ENV=${{ inputs.pio_env }}
|
||||||
|
# Cache image layers in GitHub Actions cache to speed up subsequent builds.
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -86,8 +86,6 @@ jobs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: |
|
run: |
|
||||||
@@ -139,14 +137,14 @@ jobs:
|
|||||||
id: tags
|
id: tags
|
||||||
|
|
||||||
- name: Docker login
|
- name: Docker login
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
username: meshtastic
|
username: meshtastic
|
||||||
password: ${{ secrets.DOCKER_FIRMWARE_TOKEN }}
|
password: ${{ secrets.DOCKER_FIRMWARE_TOKEN }}
|
||||||
|
|
||||||
- name: Docker meta (Debian)
|
- name: Docker meta (Debian)
|
||||||
id: meta_debian
|
id: meta_debian
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v6
|
||||||
with:
|
with:
|
||||||
images: meshtastic/meshtasticd
|
images: meshtastic/meshtasticd
|
||||||
tags: |
|
tags: |
|
||||||
@@ -167,7 +165,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Docker meta (Alpine)
|
- name: Docker meta (Alpine)
|
||||||
id: meta_alpine
|
id: meta_alpine
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v6
|
||||||
with:
|
with:
|
||||||
images: meshtastic/meshtasticd
|
images: meshtastic/meshtasticd
|
||||||
tags: |
|
tags: |
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-copr-hook:
|
build-copr-hook:
|
||||||
@@ -22,8 +21,6 @@ jobs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{ github.ref }}
|
|
||||||
repository: ${{ github.repository }}
|
|
||||||
|
|
||||||
- name: Trigger COPR build
|
- name: Trigger COPR build
|
||||||
uses: vidplace7/copr-build@main
|
uses: vidplace7/copr-build@main
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ on:
|
|||||||
- "**.md"
|
- "**.md"
|
||||||
- version.properties
|
- version.properties
|
||||||
|
|
||||||
# Note: This is different from "pull_request". Need to specify ref when doing checkouts.
|
pull_request:
|
||||||
pull_request_target:
|
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
@@ -29,6 +28,8 @@ on:
|
|||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
setup:
|
setup:
|
||||||
strategy:
|
strategy:
|
||||||
@@ -88,15 +89,12 @@ jobs:
|
|||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
- name: Check ${{ matrix.check.board }}
|
- name: Check ${{ matrix.check.board }}
|
||||||
uses: meshtastic/gh-action-firmware@main
|
uses: meshtastic/gh-action-firmware@main
|
||||||
with:
|
with:
|
||||||
pio_platform: ${{ matrix.check.platform }}
|
pio_platform: ${{ matrix.check.platform }}
|
||||||
pio_env: ${{ matrix.check.board }}
|
pio_env: ${{ matrix.check.board }}
|
||||||
pio_target: check
|
pio_target: check
|
||||||
pio_opts: --fail-on-defect=low
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
needs: [setup, version]
|
needs: [setup, version]
|
||||||
@@ -127,9 +125,16 @@ jobs:
|
|||||||
|
|
||||||
test-native:
|
test-native:
|
||||||
if: ${{ !contains(github.ref_name, 'event/') && github.repository == 'meshtastic/firmware' }}
|
if: ${{ !contains(github.ref_name, 'event/') && github.repository == 'meshtastic/firmware' }}
|
||||||
|
permissions: # Needed for dorny/test-reporter.
|
||||||
|
contents: read
|
||||||
|
actions: read
|
||||||
|
checks: write
|
||||||
uses: ./.github/workflows/test_native.yml
|
uses: ./.github/workflows/test_native.yml
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
|
permissions: # Needed for pushing to GHCR.
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -154,9 +159,6 @@ jobs:
|
|||||||
gather-artifacts:
|
gather-artifacts:
|
||||||
# trunk-ignore(checkov/CKV2_GHA_1)
|
# trunk-ignore(checkov/CKV2_GHA_1)
|
||||||
if: github.repository == 'meshtastic/firmware'
|
if: github.repository == 'meshtastic/firmware'
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -174,11 +176,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
path: ./
|
path: ./
|
||||||
pattern: firmware-${{matrix.arch}}-*
|
pattern: firmware-${{matrix.arch}}-*
|
||||||
@@ -188,7 +187,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Repackage in single firmware zip
|
- name: Repackage in single firmware zip
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
@@ -206,7 +205,7 @@ jobs:
|
|||||||
./Meshtastic_nRF52_factory_erase*.uf2
|
./Meshtastic_nRF52_factory_erase*.uf2
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -225,20 +224,13 @@ jobs:
|
|||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
||||||
|
|
||||||
- name: Repackage in single elfs zip
|
- name: Repackage in single elfs zip
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: ./*.elf
|
path: ./*.elf
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
- uses: scruplelesswizard/comment-artifact@main
|
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
|
||||||
with:
|
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
description: "Download firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip. This artifact will be available for 90 days from creation"
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
shame:
|
shame:
|
||||||
if: github.repository == 'meshtastic/firmware'
|
if: github.repository == 'meshtastic/firmware'
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@@ -246,42 +238,44 @@ jobs:
|
|||||||
needs: [build]
|
needs: [build]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
if: github.event_name == 'pull_request_target'
|
if: github.event_name == 'pull_request'
|
||||||
with:
|
with:
|
||||||
filter: blob:none # means we download all the git history but none of the commit (except ones with checkout like the head)
|
filter: blob:none # means we download all the git history but none of the commit (except ones with checkout like the head)
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Download the current manifests
|
- name: Download the current manifests
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
path: ./manifests-new/
|
path: ./manifests-new/
|
||||||
pattern: manifest-*
|
pattern: manifest-*
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
- name: Upload combined manifests for later commit and global stats crunching.
|
- name: Upload combined manifests for later commit and global stats crunching.
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
id: upload-manifest
|
id: upload-manifest
|
||||||
with:
|
with:
|
||||||
name: manifests-${{ github.sha }}
|
name: manifests-${{ github.sha }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: manifests-new/*.mt.json
|
path: manifests-new/*.mt.json
|
||||||
- name: Find the merge base
|
- name: Find the merge base
|
||||||
if: github.event_name == 'pull_request_target'
|
if: github.event_name == 'pull_request'
|
||||||
run: echo "MERGE_BASE=$(git merge-base "origin/$base" "$head")" >> $GITHUB_ENV
|
run: echo "MERGE_BASE=$(git merge-base "origin/$base" "$head")" >> $GITHUB_ENV
|
||||||
env:
|
env:
|
||||||
base: ${{ github.base_ref }}
|
base: ${{ github.base_ref }}
|
||||||
head: ${{ github.sha }}
|
head: ${{ github.sha }}
|
||||||
# Currently broken (for-loop through EVERY artifact -- rate limiting)
|
# Currently broken (for-loop through EVERY artifact -- rate limiting)
|
||||||
# - name: Download the old manifests
|
# - name: Download the old manifests
|
||||||
# if: github.event_name == 'pull_request_target'
|
# if: github.event_name == 'pull_request'
|
||||||
# run: gh run download -R "$repo" --name "manifests-$merge_base" --dir manifest-old/
|
# run: gh run download -R "$repo" --name "manifests-$merge_base" --dir manifest-old/
|
||||||
# env:
|
# env:
|
||||||
# GH_TOKEN: ${{ github.token }}
|
# GH_TOKEN: ${{ github.token }}
|
||||||
# merge_base: ${{ env.MERGE_BASE }}
|
# merge_base: ${{ env.MERGE_BASE }}
|
||||||
# repo: ${{ github.repository }}
|
# repo: ${{ github.repository }}
|
||||||
# - name: Do scan and post comment
|
# - name: Do scan and post comment
|
||||||
# if: github.event_name == 'pull_request_target'
|
# if: github.event_name == 'pull_request'
|
||||||
# run: python3 bin/shame.py ${{ github.event.pull_request.number }} manifests-old/ manifests-new/
|
# run: python3 bin/shame.py ${{ github.event.pull_request.number }} manifests-old/ manifests-new/
|
||||||
|
|
||||||
release-artifacts:
|
release-artifacts:
|
||||||
|
permissions: # Needed for 'gh release upload'.
|
||||||
|
contents: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' && github.repository == 'meshtastic/firmware' }}
|
if: ${{ github.event_name == 'workflow_dispatch' && github.repository == 'meshtastic/firmware' }}
|
||||||
outputs:
|
outputs:
|
||||||
@@ -307,15 +301,17 @@ jobs:
|
|||||||
id: release_notes
|
id: release_notes
|
||||||
run: |
|
run: |
|
||||||
chmod +x ./bin/generate_release_notes.py
|
chmod +x ./bin/generate_release_notes.py
|
||||||
NOTES=$(./bin/generate_release_notes.py ${{ needs.version.outputs.long }})
|
NOTES=$(./bin/generate_release_notes.py ${{ needs.version.outputs.long }} --compare-ref HEAD 2>release_notes.log)
|
||||||
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
||||||
echo "$NOTES" >> $GITHUB_OUTPUT
|
echo "$NOTES" >> $GITHUB_OUTPUT
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "### Release note range" >> $GITHUB_STEP_SUMMARY
|
||||||
|
cat release_notes.log >> $GITHUB_STEP_SUMMARY
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v3
|
||||||
id: create_release
|
id: create_release
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
@@ -325,14 +321,14 @@ jobs:
|
|||||||
body: ${{ steps.release_notes.outputs.notes }}
|
body: ${{ steps.release_notes.outputs.notes }}
|
||||||
|
|
||||||
- name: Download source deb
|
- name: Download source deb
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: firmware-debian-${{ needs.version.outputs.deb }}~UNRELEASED-src
|
pattern: firmware-debian-${{ needs.version.outputs.deb }}~UNRELEASED-src
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output/debian-src
|
path: ./output/debian-src
|
||||||
|
|
||||||
- name: Download `native-tft` pio deps
|
- name: Download `native-tft` pio deps
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: platformio-deps-native-tft-${{ needs.version.outputs.long }}
|
pattern: platformio-deps-native-tft-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -356,7 +352,7 @@ jobs:
|
|||||||
}' > firmware-${{ needs.version.outputs.long }}.json
|
}' > firmware-${{ needs.version.outputs.long }}.json
|
||||||
|
|
||||||
- name: Save Release manifest artifact
|
- name: Save Release manifest artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: manifest-${{ needs.version.outputs.long }}
|
name: manifest-${{ needs.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
@@ -373,6 +369,8 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
release-firmware:
|
release-firmware:
|
||||||
|
permissions: # Needed for 'gh release upload'.
|
||||||
|
contents: write
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -397,7 +395,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
pattern: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -414,7 +412,7 @@ jobs:
|
|||||||
- name: Zip firmware
|
- name: Zip firmware
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
- uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -455,14 +453,14 @@ jobs:
|
|||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
|
|
||||||
- name: Get firmware artifacts
|
- name: Get firmware artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: firmware-{${{ env.targets }}}-${{ needs.version.outputs.long }}
|
pattern: firmware-{${{ env.targets }}}-${{ needs.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./publish
|
path: ./publish
|
||||||
|
|
||||||
- name: Get manifest artifact
|
- name: Get manifest artifact
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: manifest-${{ needs.version.outputs.long }}
|
pattern: manifest-${{ needs.version.outputs.long }}
|
||||||
path: ./publish
|
path: ./publish
|
||||||
@@ -470,7 +468,7 @@ jobs:
|
|||||||
- name: Generate release notes
|
- name: Generate release notes
|
||||||
run: |
|
run: |
|
||||||
chmod +x ./bin/generate_release_notes.py
|
chmod +x ./bin/generate_release_notes.py
|
||||||
./bin/generate_release_notes.py ${{ needs.version.outputs.long }} > ./publish/release_notes.md
|
./bin/generate_release_notes.py ${{ needs.version.outputs.long }} --compare-ref HEAD > ./publish/release_notes.md
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|||||||
@@ -1,371 +0,0 @@
|
|||||||
name: Merge Queue
|
|
||||||
# Not sure how concurrency works in merge_queue, removing for now.
|
|
||||||
# concurrency:
|
|
||||||
# group: merge-queue-${{ github.head_ref || github.run_id }}
|
|
||||||
# cancel-in-progress: true
|
|
||||||
on:
|
|
||||||
# Merge group is a special trigger that is used to trigger the workflow when a merge group is created.
|
|
||||||
merge_group:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
setup:
|
|
||||||
strategy:
|
|
||||||
fail-fast: true
|
|
||||||
matrix:
|
|
||||||
arch:
|
|
||||||
- all
|
|
||||||
- check
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
cache: pip
|
|
||||||
- run: pip install -U platformio
|
|
||||||
- name: Generate matrix
|
|
||||||
id: jsonStep
|
|
||||||
run: |
|
|
||||||
if [[ "$GITHUB_HEAD_REF" == "" ]]; then
|
|
||||||
TARGETS=$(./bin/generate_ci_matrix.py ${{matrix.arch}})
|
|
||||||
else
|
|
||||||
TARGETS=$(./bin/generate_ci_matrix.py ${{matrix.arch}} --level pr)
|
|
||||||
fi
|
|
||||||
echo "Name: $GITHUB_REF_NAME Base: $GITHUB_BASE_REF Ref: $GITHUB_REF"
|
|
||||||
echo "${{matrix.arch}}=$TARGETS" >> $GITHUB_OUTPUT
|
|
||||||
outputs:
|
|
||||||
all: ${{ steps.jsonStep.outputs.all }}
|
|
||||||
check: ${{ steps.jsonStep.outputs.check }}
|
|
||||||
|
|
||||||
version:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- name: Get release version string
|
|
||||||
run: |
|
|
||||||
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
env:
|
|
||||||
BUILD_LOCATION: local
|
|
||||||
outputs:
|
|
||||||
long: ${{ steps.version.outputs.long }}
|
|
||||||
deb: ${{ steps.version.outputs.deb }}
|
|
||||||
|
|
||||||
check:
|
|
||||||
needs: setup
|
|
||||||
strategy:
|
|
||||||
fail-fast: true
|
|
||||||
matrix:
|
|
||||||
check: ${{ fromJson(needs.setup.outputs.check) }}
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- name: Build base
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-base
|
|
||||||
- name: Check ${{ matrix.check.board }}
|
|
||||||
run: bin/check-all.sh ${{ matrix.check.board }}
|
|
||||||
|
|
||||||
build:
|
|
||||||
needs: [setup, version]
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
build: ${{ fromJson(needs.setup.outputs.all) }}
|
|
||||||
uses: ./.github/workflows/build_firmware.yml
|
|
||||||
with:
|
|
||||||
version: ${{ needs.version.outputs.long }}
|
|
||||||
pio_env: ${{ matrix.build.board }}
|
|
||||||
platform: ${{ matrix.build.platform }}
|
|
||||||
|
|
||||||
build-debian-src:
|
|
||||||
if: github.repository == 'meshtastic/firmware'
|
|
||||||
uses: ./.github/workflows/build_debian_src.yml
|
|
||||||
with:
|
|
||||||
series: UNRELEASED
|
|
||||||
build_location: local
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
package-pio-deps-native-tft:
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
uses: ./.github/workflows/package_pio_deps.yml
|
|
||||||
with:
|
|
||||||
pio_env: native-tft
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
test-native:
|
|
||||||
if: ${{ !contains(github.ref_name, 'event/') }}
|
|
||||||
uses: ./.github/workflows/test_native.yml
|
|
||||||
|
|
||||||
docker:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
distro: [debian, alpine]
|
|
||||||
platform: [linux/amd64, linux/arm64, linux/arm/v7]
|
|
||||||
pio_env: [native, native-tft]
|
|
||||||
exclude:
|
|
||||||
- distro: alpine
|
|
||||||
platform: linux/arm/v7
|
|
||||||
- pio_env: native-tft
|
|
||||||
platform: linux/arm64
|
|
||||||
- pio_env: native-tft
|
|
||||||
platform: linux/arm/v7
|
|
||||||
uses: ./.github/workflows/docker_build.yml
|
|
||||||
with:
|
|
||||||
distro: ${{ matrix.distro }}
|
|
||||||
platform: ${{ matrix.platform }}
|
|
||||||
runs-on: ${{ contains(matrix.platform, 'arm') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
|
|
||||||
pio_env: ${{ matrix.pio_env }}
|
|
||||||
push: false
|
|
||||||
|
|
||||||
gather-artifacts:
|
|
||||||
# trunk-ignore(checkov/CKV2_GHA_1)
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
arch:
|
|
||||||
- esp32
|
|
||||||
- esp32s3
|
|
||||||
- esp32c3
|
|
||||||
- esp32c6
|
|
||||||
- nrf52840
|
|
||||||
- rp2040
|
|
||||||
- rp2350
|
|
||||||
- stm32
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [version, build]
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
path: ./
|
|
||||||
pattern: firmware-${{matrix.arch}}-*
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
|
|
||||||
- name: Move files up
|
|
||||||
run: mv -b -t ./ ./bin/device-*.sh ./bin/device-*.bat
|
|
||||||
|
|
||||||
- name: Repackage in single firmware zip
|
|
||||||
uses: actions/upload-artifact@v6
|
|
||||||
with:
|
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
./firmware-*.bin
|
|
||||||
./firmware-*.uf2
|
|
||||||
./firmware-*.hex
|
|
||||||
./firmware-*.zip
|
|
||||||
./device-*.sh
|
|
||||||
./device-*.bat
|
|
||||||
./littlefs-*.bin
|
|
||||||
./bleota*bin
|
|
||||||
./Meshtastic_nRF52_factory_erase*.uf2
|
|
||||||
retention-days: 30
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output
|
|
||||||
|
|
||||||
# For diagnostics
|
|
||||||
- name: Show artifacts
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Device scripts permissions
|
|
||||||
run: |
|
|
||||||
chmod +x ./output/device-install.sh || true
|
|
||||||
chmod +x ./output/device-update.sh || true
|
|
||||||
|
|
||||||
- name: Zip firmware
|
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
|
||||||
|
|
||||||
- name: Repackage in single elfs zip
|
|
||||||
uses: actions/upload-artifact@v6
|
|
||||||
with:
|
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
overwrite: true
|
|
||||||
path: ./*.elf
|
|
||||||
retention-days: 30
|
|
||||||
|
|
||||||
- uses: scruplelesswizard/comment-artifact@main
|
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
|
||||||
with:
|
|
||||||
name: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
description: "Download firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip. This artifact will be available for 90 days from creation"
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
release-artifacts:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
outputs:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
needs:
|
|
||||||
- version
|
|
||||||
- gather-artifacts
|
|
||||||
- build-debian-src
|
|
||||||
- package-pio-deps-native-tft
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
id: create_release
|
|
||||||
with:
|
|
||||||
draft: true
|
|
||||||
prerelease: true
|
|
||||||
name: Meshtastic Firmware ${{ needs.version.outputs.long }} Alpha
|
|
||||||
tag_name: v${{ needs.version.outputs.long }}
|
|
||||||
body: |
|
|
||||||
Autogenerated by github action, developer should edit as required before publishing...
|
|
||||||
|
|
||||||
- name: Download source deb
|
|
||||||
uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
pattern: firmware-debian-${{ needs.version.outputs.deb }}~UNRELEASED-src
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output/debian-src
|
|
||||||
|
|
||||||
- name: Download `native-tft` pio deps
|
|
||||||
uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
pattern: platformio-deps-native-tft-${{ needs.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output/pio-deps-native-tft
|
|
||||||
|
|
||||||
- name: Zip Linux sources
|
|
||||||
working-directory: output
|
|
||||||
run: |
|
|
||||||
zip -j -9 -r ./meshtasticd-${{ needs.version.outputs.deb }}-src.zip ./debian-src
|
|
||||||
zip -9 -r ./platformio-deps-native-tft-${{ needs.version.outputs.long }}.zip ./pio-deps-native-tft
|
|
||||||
|
|
||||||
# For diagnostics
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Add Linux sources to GtiHub Release
|
|
||||||
# Only run when targeting master branch with workflow_dispatch
|
|
||||||
if: ${{ github.ref_name == 'master' }}
|
|
||||||
run: |
|
|
||||||
gh release upload v${{ needs.version.outputs.long }} ./output/meshtasticd-${{ needs.version.outputs.deb }}-src.zip
|
|
||||||
gh release upload v${{ needs.version.outputs.long }} ./output/platformio-deps-native-tft-${{ needs.version.outputs.long }}.zip
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
release-firmware:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
arch:
|
|
||||||
- esp32
|
|
||||||
- esp32s3
|
|
||||||
- esp32c3
|
|
||||||
- esp32c6
|
|
||||||
- nrf52840
|
|
||||||
- rp2040
|
|
||||||
- rp2350
|
|
||||||
- stm32
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
needs: [release-artifacts, version]
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
pattern: firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Device scripts permissions
|
|
||||||
run: |
|
|
||||||
chmod +x ./output/device-install.sh || true
|
|
||||||
chmod +x ./output/device-update.sh || true
|
|
||||||
|
|
||||||
- name: Zip firmware
|
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./output
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./elfs
|
|
||||||
|
|
||||||
- name: Zip debug elfs
|
|
||||||
run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip ./elfs
|
|
||||||
|
|
||||||
# For diagnostics
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Add bins and debug elfs to GitHub Release
|
|
||||||
# Only run when targeting master branch with workflow_dispatch
|
|
||||||
if: ${{ github.ref_name == 'master' }}
|
|
||||||
run: |
|
|
||||||
gh release upload v${{ needs.version.outputs.long }} ./firmware-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip
|
|
||||||
gh release upload v${{ needs.version.outputs.long }} ./debug-elfs-${{matrix.arch}}-${{ needs.version.outputs.long }}.zip
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
publish-firmware:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
needs: [release-firmware, version]
|
|
||||||
env:
|
|
||||||
targets: |-
|
|
||||||
esp32,esp32s3,esp32c3,esp32c6,nrf52840,rp2040,rp2350,stm32
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v6
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v7
|
|
||||||
with:
|
|
||||||
pattern: firmware-{${{ env.targets }}}-${{ needs.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./publish
|
|
||||||
|
|
||||||
- name: Publish firmware to meshtastic.github.io
|
|
||||||
uses: peaceiris/actions-gh-pages@v4
|
|
||||||
env:
|
|
||||||
# On event/* branches, use the event name as the destination prefix
|
|
||||||
DEST_PREFIX: ${{ contains(github.ref_name, 'event/') && format('{0}/', github.ref_name) || '' }}
|
|
||||||
with:
|
|
||||||
deploy_key: ${{ secrets.DIST_PAGES_DEPLOY_KEY }}
|
|
||||||
external_repository: meshtastic/meshtastic.github.io
|
|
||||||
publish_branch: master
|
|
||||||
publish_dir: ./publish
|
|
||||||
destination_dir: ${{ env.DEST_PREFIX }}firmware-${{ needs.version.outputs.long }}
|
|
||||||
keep_files: true
|
|
||||||
user_name: github-actions[bot]
|
|
||||||
user_email: github-actions[bot]@users.noreply.github.com
|
|
||||||
commit_message: ${{ needs.version.outputs.long }}
|
|
||||||
enable_jekyll: true
|
|
||||||
@@ -38,7 +38,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Apply quality label if needed
|
- name: Apply quality label if needed
|
||||||
if: steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
|
if: steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
env:
|
env:
|
||||||
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
|
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
|
||||||
with:
|
with:
|
||||||
@@ -80,7 +80,7 @@ jobs:
|
|||||||
# ─────────────────────────────────────────────────────────────────────────
|
# ─────────────────────────────────────────────────────────────────────────
|
||||||
- name: Determine if completeness check should be skipped
|
- name: Determine if completeness check should be skipped
|
||||||
if: steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == ''
|
if: steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == ''
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
id: check-skip
|
id: check-skip
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -134,7 +134,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Process analysis result
|
- name: Process analysis result
|
||||||
if: (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '') && steps.check-skip.outputs.should_skip != 'true' && steps.analysis.outputs.response != ''
|
if: (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '') && steps.check-skip.outputs.should_skip != 'true' && steps.analysis.outputs.response != ''
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
id: process
|
id: process
|
||||||
env:
|
env:
|
||||||
AI_RESPONSE: ${{ steps.analysis.outputs.response }}
|
AI_RESPONSE: ${{ steps.analysis.outputs.response }}
|
||||||
@@ -174,7 +174,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Apply triage label
|
- name: Apply triage label
|
||||||
if: steps.process.outputs.label != '' && steps.process.outputs.label != 'none'
|
if: steps.process.outputs.label != '' && steps.process.outputs.label != 'none'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
env:
|
env:
|
||||||
LABEL_NAME: ${{ steps.process.outputs.label }}
|
LABEL_NAME: ${{ steps.process.outputs.label }}
|
||||||
with:
|
with:
|
||||||
@@ -200,7 +200,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Comment on issue
|
- name: Comment on issue
|
||||||
if: steps.process.outputs.should_comment == 'true'
|
if: steps.process.outputs.should_comment == 'true'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
env:
|
env:
|
||||||
COMMENT_BODY: ${{ steps.process.outputs.comment_body }}
|
COMMENT_BODY: ${{ steps.process.outputs.comment_body }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
# Step 1: Check if PR already has automation/type labels (skip if so)
|
# Step 1: Check if PR already has automation/type labels (skip if so)
|
||||||
# ─────────────────────────────────────────────────────────────────────────
|
# ─────────────────────────────────────────────────────────────────────────
|
||||||
- name: Check existing labels
|
- name: Check existing labels
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
id: check-labels
|
id: check-labels
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Apply quality label if needed
|
- name: Apply quality label if needed
|
||||||
if: steps.check-labels.outputs.skip_all != 'true' && steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
|
if: steps.check-labels.outputs.skip_all != 'true' && steps.quality.outputs.response != '' && steps.quality.outputs.response != 'ok'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
id: quality-label
|
id: quality-label
|
||||||
env:
|
env:
|
||||||
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
|
QUALITY_LABEL: ${{ steps.quality.outputs.response }}
|
||||||
@@ -113,7 +113,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Apply type label
|
- name: Apply type label
|
||||||
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && steps.classify.outputs.response != ''
|
if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && steps.classify.outputs.response != ''
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
env:
|
env:
|
||||||
TYPE_LABEL: ${{ steps.classify.outputs.response }}
|
TYPE_LABEL: ${{ steps.classify.outputs.response }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-debian-src:
|
build-debian-src:
|
||||||
@@ -58,7 +57,7 @@ jobs:
|
|||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pkg-pio-libdeps:
|
pkg-pio-libdeps:
|
||||||
@@ -27,8 +26,6 @@ jobs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v6
|
uses: actions/setup-python@v6
|
||||||
@@ -54,9 +51,19 @@ jobs:
|
|||||||
PLATFORMIO_LIBDEPS_DIR: pio/libdeps
|
PLATFORMIO_LIBDEPS_DIR: pio/libdeps
|
||||||
PLATFORMIO_PACKAGES_DIR: pio/packages
|
PLATFORMIO_PACKAGES_DIR: pio/packages
|
||||||
PLATFORMIO_CORE_DIR: pio/core
|
PLATFORMIO_CORE_DIR: pio/core
|
||||||
|
PLATFORMIO_SETTING_ENABLE_TELEMETRY: 0
|
||||||
|
PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL: 3650
|
||||||
|
PLATFORMIO_SETTING_CHECK_PRUNE_SYSTEM_THRESHOLD: 10240
|
||||||
|
|
||||||
|
- name: Mangle platformio cache
|
||||||
|
# Add "1" to epoch-timestamps of all downloads in the cache.
|
||||||
|
# This is a hack to prevent internet access at build-time.
|
||||||
|
run: |
|
||||||
|
cp pio/core/.cache/downloads/usage.db pio/core/.cache/downloads/usage.db.bak
|
||||||
|
jq -c 'with_entries(.value |= (. | tostring + "1" | tonumber))' pio/core/.cache/downloads/usage.db.bak > pio/core/.cache/downloads/usage.db
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: platformio-deps-${{ inputs.pio_env }}-${{ steps.version.outputs.long }}
|
name: platformio-deps-${{ inputs.pio_env }}-${{ steps.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ on:
|
|||||||
secrets:
|
secrets:
|
||||||
PPA_GPG_PRIVATE_KEY:
|
PPA_GPG_PRIVATE_KEY:
|
||||||
required: true
|
required: true
|
||||||
|
PPA_SFTP_PRIVATE_KEY:
|
||||||
|
required: true
|
||||||
inputs:
|
inputs:
|
||||||
ppa_repo:
|
ppa_repo:
|
||||||
description: Meshtastic PPA to target
|
description: Meshtastic PPA to target
|
||||||
@@ -16,8 +18,7 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: read
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-debian-src:
|
build-debian-src:
|
||||||
@@ -28,6 +29,7 @@ jobs:
|
|||||||
build_location: ppa
|
build_location: ppa
|
||||||
|
|
||||||
package-ppa:
|
package-ppa:
|
||||||
|
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
needs: build-debian-src
|
needs: build-debian-src
|
||||||
steps:
|
steps:
|
||||||
@@ -36,17 +38,15 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
path: meshtasticd
|
path: meshtasticd
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -y --fix-missing
|
sudo apt-get update -y --fix-missing
|
||||||
sudo apt-get install -y dput
|
sudo apt-get install -y dput openssh-client
|
||||||
|
|
||||||
- name: Import GPG key
|
- name: Import GPG key
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
uses: crazy-max/ghaction-import-gpg@v7
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
||||||
id: gpg
|
id: gpg
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -68,7 +68,42 @@ jobs:
|
|||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
run: ls -lah
|
run: ls -lah
|
||||||
|
|
||||||
- name: Publish with dput
|
- name: Trust Launchpad's SSH key
|
||||||
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
|
||||||
run: |
|
run: |
|
||||||
dput ${{ inputs.ppa_repo }} meshtasticd_${{ steps.version.outputs.deb }}~${{ inputs.series }}_source.changes
|
mkdir -p ~/.ssh
|
||||||
|
ssh-keyscan -H ppa.launchpad.net >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
- name: Setup dput config
|
||||||
|
env:
|
||||||
|
ppa_login: meshtasticorg
|
||||||
|
run: |
|
||||||
|
sudo tee /etc/meshtastic-dput.cf >/dev/null <<EOF
|
||||||
|
[ppa]
|
||||||
|
fqdn = ppa.launchpad.net
|
||||||
|
method = ftp
|
||||||
|
incoming = ~%(ppa)s
|
||||||
|
login = anonymous
|
||||||
|
|
||||||
|
[ssh-ppa]
|
||||||
|
fqdn = ppa.launchpad.net
|
||||||
|
method = sftp
|
||||||
|
incoming = ~%(ssh-ppa)s
|
||||||
|
login = ${ppa_login}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Import SSH key
|
||||||
|
uses: webfactory/ssh-agent@v0.10.0
|
||||||
|
with:
|
||||||
|
ssh-private-key: ${{ secrets.PPA_SFTP_PRIVATE_KEY }}
|
||||||
|
id: ssh
|
||||||
|
|
||||||
|
- name: Publish with dput (sftp)
|
||||||
|
timeout-minutes: 30 # dput is terrible, sometimes runs 'forever'
|
||||||
|
env:
|
||||||
|
up_ppa_repo: ${{ inputs.ppa_repo }}
|
||||||
|
up_series: ${{ inputs.series }}
|
||||||
|
up_version: ${{ steps.version.outputs.deb }}
|
||||||
|
run: >
|
||||||
|
dput -c /etc/meshtastic-dput.cf
|
||||||
|
ssh-${up_ppa_repo}
|
||||||
|
meshtasticd_${up_version}~${up_series}_source.changes
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check for PR labels
|
- name: Check for PR labels
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const labels = context.payload.pull_request.labels.map(label => label.name);
|
const labels = context.payload.pull_request.labels.map(label => label.name);
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Download test artifacts
|
- name: Download test artifacts
|
||||||
if: needs.native-tests.result != 'skipped'
|
if: needs.native-tests.result != 'skipped'
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: platformio-test-report-${{ steps.version.outputs.long }}
|
name: platformio-test-report-${{ steps.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
@@ -177,7 +177,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Comment test results on PR
|
- name: Comment test results on PR
|
||||||
if: github.event_name == 'pull_request' && needs.native-tests.result != 'skipped'
|
if: github.event_name == 'pull_request' && needs.native-tests.result != 'skipped'
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ jobs:
|
|||||||
series:
|
series:
|
||||||
- jammy # 22.04 LTS
|
- jammy # 22.04 LTS
|
||||||
- noble # 24.04 LTS
|
- noble # 24.04 LTS
|
||||||
- plucky # 25.04
|
|
||||||
- questing # 25.10
|
- questing # 25.10
|
||||||
|
- resolute # 26.04 LTS
|
||||||
uses: ./.github/workflows/package_ppa.yml
|
uses: ./.github/workflows/package_ppa.yml
|
||||||
with:
|
with:
|
||||||
ppa_repo: |-
|
ppa_repo: |-
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
|
|
||||||
# step 3
|
# step 3
|
||||||
- name: save report as pipeline artifact
|
- name: save report as pipeline artifact
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: report.sarif
|
name: report.sarif
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Stale PR+Issues
|
- name: Stale PR+Issues
|
||||||
uses: actions/stale@v10.1.1
|
uses: actions/stale@v10.2.0
|
||||||
with:
|
with:
|
||||||
days-before-stale: 45
|
days-before-stale: 45
|
||||||
stale-issue-message: This issue has not had any comment or update in the last month. If it is still relevant, please post update comments. If no comments are made, this issue will be closed automagically in 7 days.
|
stale-issue-message: This issue has not had any comment or update in the last month. If it is still relevant, please post update comments. If no comments are made, this issue will be closed automagically in 7 days.
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Setup native build
|
- name: Setup native build
|
||||||
@@ -59,7 +57,7 @@ jobs:
|
|||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Save coverage information
|
- name: Save coverage information
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
if: always() # run this step even if previous step failed
|
if: always() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}
|
name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}
|
||||||
@@ -72,8 +70,6 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Setup native build
|
- name: Setup native build
|
||||||
@@ -94,7 +90,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Save test results
|
- name: Save test results
|
||||||
if: always() # run this step even if previous step failed
|
if: always() # run this step even if previous step failed
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: platformio-test-report-${{ steps.version.outputs.long }}
|
name: platformio-test-report-${{ steps.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
@@ -108,7 +104,7 @@ jobs:
|
|||||||
sed -i -e "s#${PWD}#.#" coverage_tests.info # Make paths relative.
|
sed -i -e "s#${PWD}#.#" coverage_tests.info # Make paths relative.
|
||||||
|
|
||||||
- name: Save coverage information
|
- name: Save coverage information
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
if: always() # run this step even if previous step failed
|
if: always() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}
|
name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}
|
||||||
@@ -128,29 +124,26 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download test artifacts
|
- name: Download test artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
name: platformio-test-report-${{ steps.version.outputs.long }}
|
name: platformio-test-report-${{ steps.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
- name: Test Report
|
- name: Test Report
|
||||||
uses: dorny/test-reporter@v2.5.0
|
uses: dorny/test-reporter@v3.0.0
|
||||||
with:
|
with:
|
||||||
name: PlatformIO Tests
|
name: PlatformIO Tests
|
||||||
path: testreport.xml
|
path: testreport.xml
|
||||||
reporter: java-junit
|
reporter: java-junit
|
||||||
|
|
||||||
- name: Download coverage artifacts
|
- name: Download coverage artifacts
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v8
|
||||||
with:
|
with:
|
||||||
pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}
|
pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}
|
||||||
path: code-coverage-report
|
path: code-coverage-report
|
||||||
@@ -163,7 +156,7 @@ jobs:
|
|||||||
genhtml --quiet --legend --prefix "${PWD}" code-coverage-report/coverage_src.info --output-directory code-coverage-report
|
genhtml --quiet --legend --prefix "${PWD}" code-coverage-report/coverage_src.info --output-directory code-coverage-report
|
||||||
|
|
||||||
- name: Save Code Coverage Report
|
- name: Save Code Coverage Report
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: code-coverage-report-${{ steps.version.outputs.long }}
|
name: code-coverage-report-${{ steps.version.outputs.long }}
|
||||||
path: code-coverage-report
|
path: code-coverage-report
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
node-version: 24
|
node-version: 24
|
||||||
|
|
||||||
- name: Setup pnpm
|
- name: Setup pnpm
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v6
|
||||||
with:
|
with:
|
||||||
version: latest
|
version: latest
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ permissions: read-all
|
|||||||
jobs:
|
jobs:
|
||||||
update-protobufs:
|
update-protobufs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions: # Needed for peter-evans/create-pull-request.
|
||||||
contents: write
|
contents: write
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
+13
-13
@@ -4,31 +4,31 @@ cli:
|
|||||||
plugins:
|
plugins:
|
||||||
sources:
|
sources:
|
||||||
- id: trunk
|
- id: trunk
|
||||||
ref: v1.7.4
|
ref: v1.7.6
|
||||||
uri: https://github.com/trunk-io/plugins
|
uri: https://github.com/trunk-io/plugins
|
||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- checkov@3.2.501
|
- checkov@3.2.517
|
||||||
- renovate@43.10.3
|
- renovate@43.110.9
|
||||||
- prettier@3.8.1
|
- prettier@3.8.1
|
||||||
- trufflehog@3.93.3
|
- trufflehog@3.94.3
|
||||||
- yamllint@1.38.0
|
- yamllint@1.38.0
|
||||||
- bandit@1.9.3
|
- bandit@1.9.4
|
||||||
- trivy@0.69.1
|
- trivy@0.69.3
|
||||||
- taplo@0.10.0
|
- taplo@0.10.0
|
||||||
- ruff@0.15.1
|
- ruff@0.15.9
|
||||||
- isort@7.0.0
|
- isort@8.0.1
|
||||||
- markdownlint@0.47.0
|
- markdownlint@0.48.0
|
||||||
- oxipng@10.1.0
|
- oxipng@10.1.0
|
||||||
- svgo@4.0.0
|
- svgo@4.0.1
|
||||||
- actionlint@1.7.10
|
- actionlint@1.7.12
|
||||||
- flake8@7.3.0
|
- flake8@7.3.0
|
||||||
- hadolint@2.14.0
|
- hadolint@2.14.0
|
||||||
- shfmt@3.6.0
|
- shfmt@3.6.0
|
||||||
- shellcheck@0.11.0
|
- shellcheck@0.11.0
|
||||||
- black@26.1.0
|
- black@26.3.1
|
||||||
- git-diff-check
|
- git-diff-check
|
||||||
- gitleaks@8.30.0
|
- gitleaks@8.30.1
|
||||||
- clang-format@16.0.3
|
- clang-format@16.0.3
|
||||||
ignore:
|
ignore:
|
||||||
- linters: [ALL]
|
- linters: [ALL]
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# Lightweight container for running native PlatformIO tests on non-Linux hosts
|
||||||
|
FROM python:3.14-slim-trixie
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV PIP_ROOT_USER_ACTION=ignore
|
||||||
|
|
||||||
|
# hadolint ignore=DL3008
|
||||||
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
|
g++ git ca-certificates pkg-config \
|
||||||
|
libgpiod-dev libyaml-cpp-dev libbluetooth-dev libi2c-dev libuv1-dev \
|
||||||
|
libusb-1.0-0-dev libulfius-dev liborcania-dev libssl-dev \
|
||||||
|
libx11-dev libinput-dev libxkbcommon-x11-dev libsqlite3-dev libsdl2-dev \
|
||||||
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& pip install --no-cache-dir platformio==6.1.19 \
|
||||||
|
&& useradd --create-home --shell /usr/sbin/nologin meshtastic
|
||||||
|
|
||||||
|
WORKDIR /firmware
|
||||||
|
RUN chown -R meshtastic:meshtastic /firmware
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
||||||
|
CMD platformio --version || exit 1
|
||||||
|
|
||||||
|
USER meshtastic
|
||||||
|
|
||||||
|
# Run tests by default; override with docker run args for specific filters
|
||||||
|
CMD ["platformio", "test", "-e", "coverage", "-v"]
|
||||||
+1
-1
@@ -23,4 +23,4 @@ for BOARD in $BOARDS; do
|
|||||||
CHECK="${CHECK} -e ${BOARD}"
|
CHECK="${CHECK} -e ${BOARD}"
|
||||||
done
|
done
|
||||||
|
|
||||||
pio check --flags "-DAPP_VERSION=${APP_VERSION} --suppressions-list=suppressions.txt --inline-suppr" $CHECK --skip-packages --pattern="src/" --fail-on-defect=medium --fail-on-defect=high
|
pio check --flags "-DAPP_VERSION=${APP_VERSION} --suppressions-list=suppressions.txt --inline-suppr" $CHECK --skip-packages --pattern="src/" --fail-on-defect=low --fail-on-defect=medium --fail-on-defect=high
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ Logging:
|
|||||||
LogLevel: info # debug, info, warn, error
|
LogLevel: info # debug, info, warn, error
|
||||||
# TraceFile: /var/log/meshtasticd.json
|
# TraceFile: /var/log/meshtasticd.json
|
||||||
# JSONFile: /packets.json # File location for JSON output of decoded packets
|
# JSONFile: /packets.json # File location for JSON output of decoded packets
|
||||||
|
# JSONFileRotate: 60 # Rotate JSON file every N minutes, or 0 for no rotation
|
||||||
# JSONFilter: position # filter for packets to save to JSON file
|
# JSONFilter: position # filter for packets to save to JSON file
|
||||||
# AsciiLogs: true # default if not specified is !isatty() on stdout
|
# AsciiLogs: true # default if not specified is !isatty() on stdout
|
||||||
|
|
||||||
@@ -214,3 +215,4 @@ General:
|
|||||||
AvailableDirectory: /etc/meshtasticd/available.d/
|
AvailableDirectory: /etc/meshtasticd/available.d/
|
||||||
# MACAddress: AA:BB:CC:DD:EE:FF
|
# MACAddress: AA:BB:CC:DD:EE:FF
|
||||||
# MACAddressSource: eth0
|
# MACAddressSource: eth0
|
||||||
|
# APIPort: 4403
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: BananaPi-BPI-R4-sx1262
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- bananapi_bpi-r4 # OpenWrt target
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # BananaPi-BPI-R4 SPI via 26p GPIO Header
|
Module: sx1262 # BananaPi-BPI-R4 SPI via 26p GPIO Header
|
||||||
## CS: 28
|
## CS: 28
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
## https://www.mikroe.com/lr-iot-click
|
## https://www.mikroe.com/lr-iot-click
|
||||||
|
Meta:
|
||||||
|
name: OpenWRT One mikroBUS LR-IOT-CLICK
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- openwrt_one # OpenWrt target
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: lr1110 # OpenWRT ONE mikroBUS with LR-IOT-CLICK
|
Module: lr1110 # OpenWRT ONE mikroBUS with LR-IOT-CLICK
|
||||||
# CS: 25
|
# CS: 25
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: OpenWRT One mikroBUS sx1262
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- openwrt_one # OpenWrt target
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
IRQ: 10
|
IRQ: 10
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# meshtasticd configuration files
|
||||||
|
|
||||||
|
This directory contains YAML configuration files for meshtasticd. Each file describes a specific hardware configuration, including the LoRa module and pin assignments. These configurations are used by meshtasticd to correctly interface with the hardware.
|
||||||
|
|
||||||
|
## Metadata structure
|
||||||
|
|
||||||
|
Each configuration file includes a `Meta` section that provides information about the configuration.
|
||||||
|
This configuration is consumed by configuration-selection tools.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv-Pi E22-900M30S # A unique identifier for this configuration.
|
||||||
|
support: community # community, official, or deprecated; determined by Meshtastic Leads.
|
||||||
|
compatible: # A list of compatible products or platforms.
|
||||||
|
- raspberry-pi
|
||||||
|
```
|
||||||
|
`name`: A unique identifier for the configuration, typically reflecting the hardware it supports.
|
||||||
|
|
||||||
|
`support`: Indicates the level of support for this configuration. It can be one of the following:
|
||||||
|
|
||||||
|
- `community`: Supported by the Meshtastic community. Meshtastic Members may not possess, or have not tested this configuration.
|
||||||
|
- `official`: Fully supported by Meshtastic. Meshtastic Members have tested and verified this configuration.
|
||||||
|
- `deprecated`: No longer recommended for deployment by Meshtastic.
|
||||||
|
|
||||||
|
`compatible`: A list of compatible products or platforms that can use this configuration.
|
||||||
|
This will vary depending on the intended use case / platform.
|
||||||
|
Multiple compatible entries can be included. E.g. Armbian `BOARD` value or OpenWrt `TARGET` value.
|
||||||
|
These tags can be consumed by different configuration-selection tools, filtering based upon their platform/etc.
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Waveshare 1.44inch LCD HAT
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
### Waveshare 1.44inch LCD HAT
|
### Waveshare 1.44inch LCD HAT
|
||||||
Display:
|
Display:
|
||||||
Panel: ST7735S
|
Panel: ST7735S
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Waveshare 2.8inch LCD HAT
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Display:
|
Display:
|
||||||
|
|
||||||
### Waveshare 2.8inch RPi LCD
|
### Waveshare 2.8inch RPi LCD
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Adafruit RFM9x
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: RF95 # Adafruit RFM9x
|
Module: RF95 # Adafruit RFM9x
|
||||||
Reset: 25
|
Reset: 25
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# MeshAdv-Pi E22-900M30S
|
# MeshAdv-Pi E22-900M30S
|
||||||
# https://github.com/chrismyers2000/MeshAdv-Pi-Hat
|
# https://github.com/chrismyers2000/MeshAdv-Pi-Hat
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv-Pi E22-900M30S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 21
|
CS: 21
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# MeshAdv Mini E22-900M22S
|
# MeshAdv Mini E22-900M22S
|
||||||
# https://github.com/chrismyers2000/MeshAdv-Mini
|
# https://github.com/chrismyers2000/MeshAdv-Mini
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv Mini E22-900M22S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # Ebyte E22-900M22S
|
Module: sx1262 # Ebyte E22-900M22S
|
||||||
CS: 8
|
CS: 8
|
||||||
|
|||||||
@@ -1,11 +1,20 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
|
|
||||||
### RAK13300in Slot 1
|
### RAK13300 in Slot 1
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
IRQ: 22 #IO6
|
IRQ: 22 #IO6
|
||||||
Reset: 16 # IO4
|
Reset: 16 # IO4
|
||||||
Busy: 24 # IO5
|
Busy: 24 # IO5
|
||||||
# Ant_sw: 13 # IO3
|
# Ant_sw: 13 # IO3
|
||||||
|
Enable_Pins:
|
||||||
|
- 12
|
||||||
|
- 13
|
||||||
DIO3_TCXO_VOLTAGE: true
|
DIO3_TCXO_VOLTAGE: true
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
spidev: spidev0.0
|
spidev: spidev0.0
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 2
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
### RAK13300in Slot 2 pins
|
### RAK13300 in Slot 2 pins
|
||||||
IRQ: 18 #IO6
|
IRQ: 18 #IO6
|
||||||
Reset: 24 # IO4
|
Reset: 24 # IO4
|
||||||
Busy: 19 # IO5
|
Busy: 19 # IO5
|
||||||
# Ant_sw: 23 # IO3
|
# Ant_sw: 23 # IO3
|
||||||
|
Enable_Pins:
|
||||||
|
- 26
|
||||||
|
- 23
|
||||||
spidev: spidev0.1
|
spidev: spidev0.1
|
||||||
# CS: 7
|
# CS: 7
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 1
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
|
||||||
|
### RAK13302 in Slot 1
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: 22 #IO6
|
||||||
|
Reset: 16 # IO4
|
||||||
|
Busy: 24 # IO5
|
||||||
|
# Ant_sw: 13 # IO3
|
||||||
|
Enable_Pins:
|
||||||
|
- 12
|
||||||
|
- 13
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: 8
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 2
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
### RAK13302 in Slot 2 pins
|
||||||
|
IRQ: 18 #IO6
|
||||||
|
Reset: 24 # IO4
|
||||||
|
Busy: 19 # IO5
|
||||||
|
# Ant_sw: 23 # IO3
|
||||||
|
Enable_Pins:
|
||||||
|
- 26
|
||||||
|
- 23
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: 7
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# MeshAdv-Pi E22-900M30S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Pi-Hat
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv-Pi E22-900M30S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
CS: # GPIO0_A1 (physical 40)
|
||||||
|
pin: 1
|
||||||
|
gpiochip: 0
|
||||||
|
line: 1
|
||||||
|
IRQ: # GPIO0_A3 (physical 36)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
Busy: # GPIO0_A0 (physical 38)
|
||||||
|
pin: 0
|
||||||
|
gpiochip: 0
|
||||||
|
line: 0
|
||||||
|
Reset: # GPIO0_B4 (physical 12)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
TXen: # GPIO1_D1 (physical 33)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
RXen: # GPIO1_B3 (physical 32)
|
||||||
|
pin: 43
|
||||||
|
gpiochip: 1
|
||||||
|
line: 11
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
# Only for E22-900M33S:
|
||||||
|
# Limit the output power to 8 dBm
|
||||||
|
# SX126X_MAX_POWER: 8
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# MeshAdv Mini E22-900M22S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Mini
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv Mini E22-900M22S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Ebyte E22-900M22S
|
||||||
|
CS: # GPIO0_B6 (physical 24, SPI1_CSN0)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
IRQ: # GPIO0_A3 (physical 36)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
Busy: # GPIO0_A0 (physical 38)
|
||||||
|
pin: 0
|
||||||
|
gpiochip: 0
|
||||||
|
line: 0
|
||||||
|
Reset: # GPIO1_C3 (physical 18)
|
||||||
|
pin: 51
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
RXen: # GPIO1_B3 (physical 32)
|
||||||
|
pin: 43
|
||||||
|
gpiochip: 1
|
||||||
|
line: 11
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_A5 (IO6, physical 15)
|
||||||
|
pin: 5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 5
|
||||||
|
Reset: # GPIO0_A3 (IO4, physical 36)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
Busy: # GPIO1_C3 (IO5, physical 18)
|
||||||
|
pin: 51
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3, physical 16)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 43 # GPIO1_B3 (physical 32)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 11
|
||||||
|
- pin: 57 # GPIO1_D1 (physical 33)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_B6 (SPI1_CSN0, physical 24)
|
||||||
|
# pin: 14
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 14
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B4 (IO6, physical 12)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
Reset: # GPIO1_C3 (IO4, physical 18)
|
||||||
|
pin: 51
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
Busy: # GPIO0_B3 (IO5, physical 35)
|
||||||
|
pin: 11
|
||||||
|
gpiochip: 0
|
||||||
|
line: 11
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3, physical 16)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 2 # GPIO0_A2 (physical 37)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
- pin: 50 # GPIO1_C2 (physical 16)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_A7 (SPI1_CSN1, physical 26)
|
||||||
|
# pin: 7
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 7
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_A5 (IO6, physical 15)
|
||||||
|
pin: 5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 5
|
||||||
|
Reset: # GPIO0_A3 (IO4, physical 36)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
Busy: # GPIO1_C3 (IO5, physical 18)
|
||||||
|
pin: 51
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3, physical 16)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 43 # GPIO1_B3 (physical 32)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 11
|
||||||
|
- pin: 57 # GPIO1_D1 (physical 33)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_B6 (SPI1_CSN0, physical 24)
|
||||||
|
# pin: 14
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 14
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B4 (IO6, physical 12)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
Reset: # GPIO1_C3 (IO4, physical 18)
|
||||||
|
pin: 51
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
Busy: # GPIO0_B3 (IO5, physical 35)
|
||||||
|
pin: 11
|
||||||
|
gpiochip: 0
|
||||||
|
line: 11
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3, physical 16)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 2 # GPIO0_A2 (physical 37)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
- pin: 50 # GPIO1_C2 (physical 16)
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_A7 (SPI1_CSN1, physical 26)
|
||||||
|
# pin: 7
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 7
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
Meta:
|
||||||
|
name: Waveshare SX1262
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- ebyte-ecb41-pge # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Waveshare SX126X XXXM
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
CS: # GPIO0_A1 (physical 40)
|
||||||
|
pin: 1
|
||||||
|
gpiochip: 0
|
||||||
|
line: 1
|
||||||
|
IRQ: # GPIO0_A3 (physical 36)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
Busy: # GPIO0_A0 (physical 38)
|
||||||
|
pin: 0
|
||||||
|
gpiochip: 0
|
||||||
|
line: 0
|
||||||
|
Reset: # GPIO0_B4 (physical 12)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
SX126X_ANT_SW: # GPIO1_B2 (physical 31)
|
||||||
|
pin: 42
|
||||||
|
gpiochip: 1
|
||||||
|
line: 10
|
||||||
|
spidev: spidev0.0
|
||||||
+6
-4
@@ -1,4 +1,10 @@
|
|||||||
---
|
---
|
||||||
|
Meta:
|
||||||
|
name: Femtofox Ebyte E80-900M22S with TCXO
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-pico-mini # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
## Ebyte E80-900M22S
|
## Ebyte E80-900M22S
|
||||||
## This is a bit experimental
|
## This is a bit experimental
|
||||||
@@ -12,9 +18,5 @@ Lora:
|
|||||||
Busy: 22 #pin16 / GPIO54 1C6
|
Busy: 22 #pin16 / GPIO54 1C6
|
||||||
Reset: 25 #pin13 / GPIO57 1D1
|
Reset: 25 #pin13 / GPIO57 1D1
|
||||||
|
|
||||||
|
|
||||||
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
||||||
spiSpeed: 2000000
|
spiSpeed: 2000000
|
||||||
|
|
||||||
General:
|
|
||||||
MACAddressSource: eth0
|
|
||||||
+6
-3
@@ -1,4 +1,10 @@
|
|||||||
---
|
---
|
||||||
|
Meta:
|
||||||
|
name: Femtofox SX1262 TCXO
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-pico-mini # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
## Ebyte E22-900M30S, E22-900M22S with or without external RF switching setup
|
## Ebyte E22-900M30S, E22-900M22S with or without external RF switching setup
|
||||||
## HT-RA62 (Has internal switching, but whatever)
|
## HT-RA62 (Has internal switching, but whatever)
|
||||||
@@ -16,6 +22,3 @@ Lora:
|
|||||||
# TXen: bridge to DIO2 on E22 module
|
# TXen: bridge to DIO2 on E22 module
|
||||||
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
||||||
spiSpeed: 2000000
|
spiSpeed: 2000000
|
||||||
|
|
||||||
General:
|
|
||||||
MACAddressSource: eth0
|
|
||||||
+6
-3
@@ -1,4 +1,10 @@
|
|||||||
---
|
---
|
||||||
|
Meta:
|
||||||
|
name: Femtofox SX1262 XTAL
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-pico-mini # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
## Ebyte E22-900MM22S with no external RF switching setup
|
## Ebyte E22-900MM22S with no external RF switching setup
|
||||||
## Waveshare SX126X XXXM, AI Thinker RA-01SH
|
## Waveshare SX126X XXXM, AI Thinker RA-01SH
|
||||||
@@ -16,6 +22,3 @@ Lora:
|
|||||||
# TXen: bridge to DIO2 on E22 module
|
# TXen: bridge to DIO2 on E22 module
|
||||||
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
spidev: spidev0.0 #pins are (CS=16, CLK=17, MOSI=18, MISO=19)
|
||||||
spiSpeed: 2000000
|
spiSpeed: 2000000
|
||||||
|
|
||||||
General:
|
|
||||||
MACAddressSource: eth0
|
|
||||||
@@ -1,11 +1,21 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1 (Autoconf default)
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
|
|
||||||
### RAK13300in Slot 1
|
### RAK13300 in Slot 1
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
IRQ: 22 #IO6
|
IRQ: 22 #IO6
|
||||||
Reset: 16 # IO4
|
Reset: 16 # IO4
|
||||||
Busy: 24 # IO5
|
Busy: 24 # IO5
|
||||||
# Ant_sw: 13 # IO3
|
Enable_Pins:
|
||||||
|
- 12
|
||||||
|
- 13
|
||||||
DIO3_TCXO_VOLTAGE: true
|
DIO3_TCXO_VOLTAGE: true
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
spidev: spidev0.0
|
spidev: spidev0.0
|
||||||
|
# GPIO_DETECT_PA: 13
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Luckfox Lyra PicoCalc Wio LoRa SX1262
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-plus # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# For use with Armbian luckfox-lyra-ultra-w
|
||||||
|
# Enable overlay 'luckfox-lyra-ultra-w-spi0-cs0-spidev' with armbian-config
|
||||||
|
# https://github.com/wehooper4/Meshtastic-Hardware/tree/main/Luckfox%20Ultra%20Hat
|
||||||
|
# 1 Watt Lyra Ultra hat
|
||||||
|
Meta:
|
||||||
|
name: wehooper4 Luckfox Ultra 1W
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-pico-ultra # Armbian
|
||||||
|
- luckfox-lyra-ultra # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
CS: 10
|
||||||
|
IRQ: 5
|
||||||
|
Busy: 11
|
||||||
|
Reset: 9
|
||||||
|
RXen: 14
|
||||||
|
|
||||||
|
spidev: spidev0.0 #pins are (CS=10, CLK=8, MOSI=6, MISO=7)
|
||||||
|
spiSpeed: 2000000
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# For use with Armbian luckfox-lyra-ultra-w
|
||||||
|
# Enable overlay 'luckfox-lyra-ultra-w-spi0-cs0-spidev' with armbian-config
|
||||||
|
# https://github.com/wehooper4/Meshtastic-Hardware/tree/main/Luckfox%20Ultra%20Hat
|
||||||
|
# 2 Watt Lyra Ultra hat
|
||||||
|
Meta:
|
||||||
|
name: wehooper4 Luckfox Ultra 2W
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-pico-ultra # Armbian
|
||||||
|
- luckfox-lyra-ultra # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
SX126X_MAX_POWER: 8
|
||||||
|
CS: 10
|
||||||
|
IRQ: 5
|
||||||
|
Busy: 11
|
||||||
|
Reset: 9
|
||||||
|
RXen: 14
|
||||||
|
|
||||||
|
spidev: spidev0.0 #pins are (CS=10, CLK=8, MOSI=6, MISO=7)
|
||||||
|
spiSpeed: 2000000
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# For use with Armbian luckfox-lyra // luckfox-lyra-plus
|
||||||
|
# Enable overlay 'luckfox-lyra-plus-spi0-cs0_rmio13-spidev' with armbian-config
|
||||||
|
# Waveshare LoRa HAT for Raspberry Pi Pico
|
||||||
|
# https://www.waveshare.com/wiki/Pico-LoRa-SX1262
|
||||||
|
Meta:
|
||||||
|
name: Waveshare LoRa HAT for Raspberry Pi Pico
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-plus # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
CS: # GPIO0_B5
|
||||||
|
pin: 13
|
||||||
|
gpiochip: 0
|
||||||
|
line: 13
|
||||||
|
IRQ: # GPIO1_C2
|
||||||
|
pin: 50
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
Busy: # GPIO0_B4
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
Reset: # GPIO0_A2
|
||||||
|
pin: 2
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# MeshAdv-Pi E22-900M30S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Pi-Hat
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv-Pi E22-900M30S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
CS: # GPIO0_C2 (physical 40)
|
||||||
|
pin: 18
|
||||||
|
gpiochip: 0
|
||||||
|
line: 18
|
||||||
|
IRQ: # GPIO1_D1 (physical 36)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
Busy: # GPIO0_C1 (physical 38)
|
||||||
|
pin: 17
|
||||||
|
gpiochip: 0
|
||||||
|
line: 17
|
||||||
|
Reset: # GPIO0_B6 (physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
TXen: # GPIO1_C2 (physical 33)
|
||||||
|
pin: 50
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
RXen: # GPIO1_D2 (physical 32)
|
||||||
|
pin: 58
|
||||||
|
gpiochip: 1
|
||||||
|
line: 26
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
# Only for E22-900M33S:
|
||||||
|
# Limit the output power to 8 dBm
|
||||||
|
# SX126X_MAX_POWER: 8
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# MeshAdv Mini E22-900M22S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Mini
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv Mini E22-900M22S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Ebyte E22-900M22S
|
||||||
|
CS: # GPIO0_B2_d (phys 24, RPi CE0)
|
||||||
|
pin: 10
|
||||||
|
gpiochip: 0
|
||||||
|
line: 10
|
||||||
|
IRQ: # GPIO1_D1_d (phys 36, RPi GPIO16)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
Busy: # GPIO0_C1_d (phys 38, RPi GPIO20)
|
||||||
|
pin: 17
|
||||||
|
gpiochip: 0
|
||||||
|
line: 17
|
||||||
|
Reset: # GPIO0_B4_d (phys 18, RPi GPIO24)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
RXen: # GPIO1_D2_d (phys 32, RPi GPIO12)
|
||||||
|
pin: 58
|
||||||
|
gpiochip: 1
|
||||||
|
line: 26
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_A5 (IO6)
|
||||||
|
pin: 5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 5
|
||||||
|
Reset: # GPIO1_D1 (IO4)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
Busy: # GPIO0_B4 (IO5)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 58 # GPIO1_D2
|
||||||
|
gpiochip: 1
|
||||||
|
line: 26
|
||||||
|
- pin: 50 # GPIO1_C2
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_B2
|
||||||
|
# pin: 10
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 10
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B6 (IO6)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
Reset: # GPIO0_B4 (IO4)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
Busy: # GPIO1_C0 (IO5)
|
||||||
|
pin: 48
|
||||||
|
gpiochip: 1
|
||||||
|
line: 16
|
||||||
|
# Ant_sw: # GPIO0_B5 (IO3)
|
||||||
|
# pin: 13
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 13
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 51 # GPIO1_C3
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
- pin: 13 # GPIO0_B5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 13
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_B1
|
||||||
|
# pin: 9
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 9
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_A5 (IO6)
|
||||||
|
pin: 5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 5
|
||||||
|
Reset: # GPIO1_D1 (IO4)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
Busy: # GPIO0_B4 (IO5)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
# Ant_sw: # GPIO1_C2 (IO3)
|
||||||
|
# pin: 50
|
||||||
|
# gpiochip: 1
|
||||||
|
# line: 18
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 58 # GPIO1_D2
|
||||||
|
gpiochip: 1
|
||||||
|
line: 26
|
||||||
|
- pin: 50 # GPIO1_C2
|
||||||
|
gpiochip: 1
|
||||||
|
line: 18
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_B2
|
||||||
|
# pin: 10
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 10
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B6 (IO6)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
Reset: # GPIO0_B4 (IO4)
|
||||||
|
pin: 12
|
||||||
|
gpiochip: 0
|
||||||
|
line: 12
|
||||||
|
Busy: # GPIO1_C0 (IO5)
|
||||||
|
pin: 48
|
||||||
|
gpiochip: 1
|
||||||
|
line: 16
|
||||||
|
# Ant_sw: # GPIO0_B5 (IO3)
|
||||||
|
# pin: 13
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 13
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 51 # GPIO1_C3
|
||||||
|
gpiochip: 1
|
||||||
|
line: 19
|
||||||
|
- pin: 13 # GPIO0_B5
|
||||||
|
gpiochip: 0
|
||||||
|
line: 13
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_B1
|
||||||
|
# pin: 9
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 9
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
Meta:
|
||||||
|
name: Waveshare SX1262
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- luckfox-lyra-zero-w # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Waveshare SX126X XXXM
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
CS: # GPIO0_C2 (physical 40)
|
||||||
|
pin: 18
|
||||||
|
gpiochip: 0
|
||||||
|
line: 18
|
||||||
|
IRQ: # GPIO1_D1 (physical 36)
|
||||||
|
pin: 57
|
||||||
|
gpiochip: 1
|
||||||
|
line: 25
|
||||||
|
Busy: # GPIO0_C1 (physical 38)
|
||||||
|
pin: 17
|
||||||
|
gpiochip: 0
|
||||||
|
line: 17
|
||||||
|
Reset: # GPIO0_B6 (physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
SX126X_ANT_SW: # GPIO1_B3 (physical 31)
|
||||||
|
pin: 43
|
||||||
|
gpiochip: 1
|
||||||
|
line: 11
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Lora Meshstick SX1262
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- usb
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 0
|
CS: 0
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
# MeshAdv-Pi E22-900M30S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Pi-Hat
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv-Pi E22-900M30S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
CS: # GPIO0_B0 (physical 40)
|
||||||
|
pin: 8
|
||||||
|
gpiochip: 0
|
||||||
|
line: 8
|
||||||
|
IRQ: # GPIO3_B0 (physical 36)
|
||||||
|
pin: 104
|
||||||
|
gpiochip: 3
|
||||||
|
line: 8
|
||||||
|
Busy: # GPIO0_B1 (physical 38)
|
||||||
|
pin: 9
|
||||||
|
gpiochip: 0
|
||||||
|
line: 9
|
||||||
|
Reset: # GPIO0_B6 (physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
TXen: # GPIO0_A3 (physical 33)
|
||||||
|
pin: 3
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
RXen: # GPIO0_A2 (physical 32)
|
||||||
|
pin: 2
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
# Only for E22-900M33S:
|
||||||
|
# Limit the output power to 8 dBm
|
||||||
|
# SX126X_MAX_POWER: 8
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
# MeshAdv Mini E22-900M22S
|
||||||
|
# https://github.com/chrismyers2000/MeshAdv-Mini
|
||||||
|
Meta:
|
||||||
|
name: MeshAdv Mini E22-900M22S
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Ebyte E22-900M22S
|
||||||
|
CS: # GPIO0_C3 (physical 24, SPI0_CSN0)
|
||||||
|
pin: 19
|
||||||
|
gpiochip: 0
|
||||||
|
line: 19
|
||||||
|
IRQ: # GPIO3_B0 (physical 36)
|
||||||
|
pin: 104
|
||||||
|
gpiochip: 3
|
||||||
|
line: 8
|
||||||
|
Busy: # GPIO0_B1 (physical 38)
|
||||||
|
pin: 9
|
||||||
|
gpiochip: 0
|
||||||
|
line: 9
|
||||||
|
Reset: # GPIO3_A6 (physical 18)
|
||||||
|
pin: 102
|
||||||
|
gpiochip: 3
|
||||||
|
line: 6
|
||||||
|
RXen: # GPIO0_A2 (physical 32)
|
||||||
|
pin: 2
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO3_B5 (IO6, physical 15)
|
||||||
|
pin: 109
|
||||||
|
gpiochip: 3
|
||||||
|
line: 13
|
||||||
|
Reset: # GPIO3_B0 (IO4, physical 36)
|
||||||
|
pin: 104
|
||||||
|
gpiochip: 3
|
||||||
|
line: 8
|
||||||
|
Busy: # GPIO3_A6 (IO5, physical 18)
|
||||||
|
pin: 102
|
||||||
|
gpiochip: 3
|
||||||
|
line: 6
|
||||||
|
# Ant_sw: # GPIO0_A3 (IO3, physical 33)
|
||||||
|
# pin: 3
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 3
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 2 # GPIO0_A2 (physical 32)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
- pin: 3 # GPIO0_A3 (physical 33)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_C3 (SPI0_CSN0, physical 24)
|
||||||
|
# pin: 19
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 19
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13300 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B6 (IO6, physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
Reset: # GPIO3_A6 (IO4, physical 18)
|
||||||
|
pin: 102
|
||||||
|
gpiochip: 3
|
||||||
|
line: 6
|
||||||
|
Busy: # GPIO0_B2 (IO5, physical 35)
|
||||||
|
pin: 10
|
||||||
|
gpiochip: 0
|
||||||
|
line: 10
|
||||||
|
# Ant_sw: # GPIO3_A7 (IO3, physical 16)
|
||||||
|
# pin: 103
|
||||||
|
# gpiochip: 3
|
||||||
|
# line: 7
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 106 # GPIO3_B2 (physical 37)
|
||||||
|
gpiochip: 3
|
||||||
|
line: 10
|
||||||
|
- pin: 103 # GPIO3_A7 (physical 16)
|
||||||
|
gpiochip: 3
|
||||||
|
line: 7
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_B7 (SPI0_CSN1, physical 26)
|
||||||
|
# pin: 15
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 15
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 1
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO3_B5 (IO6, physical 15)
|
||||||
|
pin: 109
|
||||||
|
gpiochip: 3
|
||||||
|
line: 13
|
||||||
|
Reset: # GPIO3_B0 (IO4, physical 36)
|
||||||
|
pin: 104
|
||||||
|
gpiochip: 3
|
||||||
|
line: 8
|
||||||
|
Busy: # GPIO3_A6 (IO5, physical 18)
|
||||||
|
pin: 102
|
||||||
|
gpiochip: 3
|
||||||
|
line: 6
|
||||||
|
# Ant_sw: # GPIO0_A3 (IO3, physical 33)
|
||||||
|
# pin: 3
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 3
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 2 # GPIO0_A2 (physical 32)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 2
|
||||||
|
- pin: 3 # GPIO0_A3 (physical 33)
|
||||||
|
gpiochip: 0
|
||||||
|
line: 3
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: spidev0.0
|
||||||
|
# CS: # GPIO0_C3 (SPI0_CSN0, physical 24)
|
||||||
|
# pin: 19
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 19
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: RAK6421 + RAK13302 Slot 2
|
||||||
|
support: community # Promote when tested
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
IRQ: # GPIO0_B6 (IO6, physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
Reset: # GPIO3_A6 (IO4, physical 18)
|
||||||
|
pin: 102
|
||||||
|
gpiochip: 3
|
||||||
|
line: 6
|
||||||
|
Busy: # GPIO0_B2 (IO5, physical 35)
|
||||||
|
pin: 10
|
||||||
|
gpiochip: 0
|
||||||
|
line: 10
|
||||||
|
# Ant_sw: # GPIO3_A7 (IO3, physical 16)
|
||||||
|
# pin: 103
|
||||||
|
# gpiochip: 3
|
||||||
|
# line: 7
|
||||||
|
Enable_Pins:
|
||||||
|
- pin: 106 # GPIO3_B2 (physical 37)
|
||||||
|
gpiochip: 3
|
||||||
|
line: 10
|
||||||
|
- pin: 103 # GPIO3_A7 (physical 16)
|
||||||
|
gpiochip: 3
|
||||||
|
line: 7
|
||||||
|
spidev: spidev0.1
|
||||||
|
# CS: # GPIO0_B7 (SPI0_CSN1, physical 26)
|
||||||
|
# pin: 15
|
||||||
|
# gpiochip: 0
|
||||||
|
# line: 15
|
||||||
|
TX_GAIN_LORA: [9, 9, 10, 11, 9, 8, 9, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 8]
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# !! WARNING: Hats on the OK3506 board are installed "backwards" (facing outwards)
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: Waveshare SX1262
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- forlinx-ok3506-s12 # Armbian
|
||||||
|
|
||||||
|
Lora:
|
||||||
|
Module: sx1262 # Waveshare SX126X XXXM
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
CS: # GPIO0_B0 (physical 40)
|
||||||
|
pin: 8
|
||||||
|
gpiochip: 0
|
||||||
|
line: 8
|
||||||
|
IRQ: # GPIO3_B0 (physical 36)
|
||||||
|
pin: 104
|
||||||
|
gpiochip: 3
|
||||||
|
line: 8
|
||||||
|
Busy: # GPIO0_B1 (physical 38)
|
||||||
|
pin: 9
|
||||||
|
gpiochip: 0
|
||||||
|
line: 9
|
||||||
|
Reset: # GPIO0_B6 (physical 12)
|
||||||
|
pin: 14
|
||||||
|
gpiochip: 0
|
||||||
|
line: 14
|
||||||
|
SX126X_ANT_SW: # GPIO3_B3 (physical 31)
|
||||||
|
pin: 107
|
||||||
|
gpiochip: 3
|
||||||
|
line: 11
|
||||||
|
spidev: spidev0.0
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Lora Meshstick SX1262
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- usb
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: lr1121
|
Module: lr1121
|
||||||
CS: 0
|
CS: 0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Pinedio USB SX1262
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- usb
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 0
|
CS: 0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: raxda-rock2f-starter-edition-hat
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- rock-2f # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
|
|
||||||
### Raxda Rock 2F running Armbian Linux 6.1.99-vendor-rk35xx
|
### Raxda Rock 2F running Armbian Linux 6.1.99-vendor-rk35xx
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# https://www.waveshare.com/core1262-868m.htm
|
# https://www.waveshare.com/core1262-868m.htm
|
||||||
# https://github.com/markbirss/lora-starter-edition-sx1262-i2c
|
# https://github.com/markbirss/lora-starter-edition-sx1262-i2c
|
||||||
|
Meta:
|
||||||
|
name: lora-starter-edition-sx1262-i2c
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # Starter Edition SX1262 I2C Raspberry Pi HAT
|
Module: sx1262 # Starter Edition SX1262 I2C Raspberry Pi HAT
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: meshstick-1262
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- usb
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 0
|
CS: 0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: meshtoad-e22
|
||||||
|
support: official
|
||||||
|
compatible:
|
||||||
|
- usb
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 0
|
CS: 0
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: umesh-1262-30dbm
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- clockwork-uconsole
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262
|
Module: sx1262
|
||||||
CS: 0
|
CS: 0
|
||||||
@@ -13,8 +19,7 @@ Lora:
|
|||||||
# USB_Serialnum: 12345678
|
# USB_Serialnum: 12345678
|
||||||
SX126X_MAX_POWER: 22
|
SX126X_MAX_POWER: 22
|
||||||
# Reduce output power to improve EMI
|
# Reduce output power to improve EMI
|
||||||
NUM_PA_POINTS: 22
|
TX_GAIN_LORA: [12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 9, 8, 8, 7]
|
||||||
TX_GAIN_LORA: 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 9, 8, 8, 7
|
|
||||||
# Note: This module integrates an additional PA to achieve higher output power.
|
# Note: This module integrates an additional PA to achieve higher output power.
|
||||||
# The 'power' parameter here does not represent the actual RF output.
|
# The 'power' parameter here does not represent the actual RF output.
|
||||||
# TX_GAIN_LORA defines the gain offset applied at each SX1262 input power step (1–22 dBm).
|
# TX_GAIN_LORA defines the gain offset applied at each SX1262 input power step (1–22 dBm).
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: umesh-1268-30dbm
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- clockwork-uconsole
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1268
|
Module: sx1268
|
||||||
CS: 0
|
CS: 0
|
||||||
@@ -13,8 +19,7 @@ Lora:
|
|||||||
# USB_Serialnum: 12345678
|
# USB_Serialnum: 12345678
|
||||||
SX126X_MAX_POWER: 22
|
SX126X_MAX_POWER: 22
|
||||||
# Reduce output power to improve EMI
|
# Reduce output power to improve EMI
|
||||||
NUM_PA_POINTS: 22
|
TX_GAIN_LORA: [12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 9, 8, 8, 7]
|
||||||
TX_GAIN_LORA: 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 9, 8, 8, 7
|
|
||||||
# Note: This module integrates an additional PA to achieve higher output power.
|
# Note: This module integrates an additional PA to achieve higher output power.
|
||||||
# The 'power' parameter here does not represent the actual RF output.
|
# The 'power' parameter here does not represent the actual RF output.
|
||||||
# TX_GAIN_LORA defines the gain offset applied at each SX1262 input power step (1–22 dBm).
|
# TX_GAIN_LORA defines the gain offset applied at each SX1262 input power step (1–22 dBm).
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
Meta:
|
||||||
|
name: Waveshare SX1262
|
||||||
|
support: deprecated
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # Waveshare SX126X XXXM
|
Module: sx1262 # Waveshare SX126X XXXM
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# https://www.waveshare.com/pico-lora-sx1262-868m.htm
|
# https://www.waveshare.com/pico-lora-sx1262-868m.htm
|
||||||
# https://github.com/markbirss/lora-ws-raspberry-pi-pico-to-rpi-adapter
|
# https://github.com/markbirss/lora-ws-raspberry-pi-pico-to-rpi-adapter
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: ws-raspberry-pico-to-rpi-adapter
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- raspberry-pi
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # Waveshare Raspberry Pi Pico to Raspberry Pi HAT Adapter
|
Module: sx1262 # Waveshare Raspberry Pi Pico to Raspberry Pi HAT Adapter
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
|||||||
@@ -15,6 +15,12 @@
|
|||||||
# 5 CS 24
|
# 5 CS 24
|
||||||
# 26 DIO1/IRQ 26
|
# 26 DIO1/IRQ 26
|
||||||
|
|
||||||
|
Meta:
|
||||||
|
name: ws-raspberry-pico-to-orangepi-03
|
||||||
|
support: community
|
||||||
|
compatible:
|
||||||
|
- orange-pi-zero-3 # Armbian
|
||||||
|
|
||||||
Lora:
|
Lora:
|
||||||
Module: sx1262 # Waveshare Raspberry Pico Lora module
|
Module: sx1262 # Waveshare Raspberry Pico Lora module
|
||||||
DIO2_AS_RF_SWITCH: true
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ for pio_env in pio_envs:
|
|||||||
env = {
|
env = {
|
||||||
"ci": {"board": pio_env, "platform": env_platform},
|
"ci": {"board": pio_env, "platform": env_platform},
|
||||||
"board_level": cfg.get(f"env:{pio_env}", "board_level", default=None),
|
"board_level": cfg.get(f"env:{pio_env}", "board_level", default=None),
|
||||||
"board_check": bool(cfg.get(f"env:{pio_env}", "board_check", default=False)),
|
"board_check": cfg.get(f"env:{pio_env}", "board_check", default="false").strip().lower() == "true",
|
||||||
}
|
}
|
||||||
all_envs.append(env)
|
all_envs.append(env)
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,31 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""Generate release notes from the actual release commit range."""
|
||||||
Generate release notes from merged PRs on develop and master branches.
|
|
||||||
Categorizes PRs into Enhancements and Bug Fixes/Maintenance sections.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import subprocess
|
import argparse
|
||||||
import re
|
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
|
|
||||||
def get_last_release_tag():
|
def get_last_release_tag(compare_ref, exclude_tag=None):
|
||||||
"""Get the most recent release tag."""
|
"""Get the most recent version tag merged into compare_ref."""
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
["git", "describe", "--tags", "--abbrev=0"],
|
["git", "tag", "--merged", compare_ref, "--sort=-version:refname", "v*"],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
check=True,
|
check=True,
|
||||||
)
|
)
|
||||||
return result.stdout.strip()
|
|
||||||
|
for line in result.stdout.splitlines():
|
||||||
|
candidate = line.strip()
|
||||||
|
if not candidate:
|
||||||
|
continue
|
||||||
|
if exclude_tag and candidate == exclude_tag:
|
||||||
|
continue
|
||||||
|
return candidate
|
||||||
|
|
||||||
|
raise subprocess.CalledProcessError(result.returncode, result.args, output=result.stdout, stderr=result.stderr)
|
||||||
|
|
||||||
|
|
||||||
def get_tag_date(tag):
|
def get_tag_date(tag):
|
||||||
@@ -33,18 +39,18 @@ def get_tag_date(tag):
|
|||||||
return result.stdout.strip()
|
return result.stdout.strip()
|
||||||
|
|
||||||
|
|
||||||
def get_merged_prs_since_tag(tag, branch):
|
def get_merged_prs_in_range(tag, compare_ref):
|
||||||
"""Get all merged PRs since the given tag on the specified branch."""
|
"""Get all merged PRs in the git range between tag and compare_ref."""
|
||||||
# Get commits since tag on the branch - look for PR numbers in parentheses
|
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
[
|
[
|
||||||
"git",
|
"git",
|
||||||
"log",
|
"log",
|
||||||
f"{tag}..origin/{branch}",
|
f"{tag}..{compare_ref}",
|
||||||
"--oneline",
|
"--oneline",
|
||||||
],
|
],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
check=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
prs = []
|
prs = []
|
||||||
@@ -65,6 +71,25 @@ def get_merged_prs_since_tag(tag, branch):
|
|||||||
return prs
|
return prs
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
"""Parse CLI arguments."""
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Generate release notes from the actual release commit range."
|
||||||
|
)
|
||||||
|
parser.add_argument("new_version", help="Version that will be tagged for this release")
|
||||||
|
parser.add_argument(
|
||||||
|
"--base-tag",
|
||||||
|
dest="base_tag",
|
||||||
|
help="Existing version tag to diff from. Defaults to the latest version tag merged into the compare ref.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--compare-ref",
|
||||||
|
default="HEAD",
|
||||||
|
help="Git ref to diff to. Defaults to HEAD.",
|
||||||
|
)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def get_pr_details(pr_number):
|
def get_pr_details(pr_number):
|
||||||
"""Get PR details from GitHub API via gh CLI."""
|
"""Get PR details from GitHub API via gh CLI."""
|
||||||
try:
|
try:
|
||||||
@@ -268,28 +293,28 @@ def get_new_contributors(pr_details_list, tag, repo="meshtastic/firmware"):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) < 2:
|
args = parse_args()
|
||||||
print("Usage: generate_release_notes.py <new_version>", file=sys.stderr)
|
new_version = args.new_version
|
||||||
sys.exit(1)
|
compare_ref = args.compare_ref
|
||||||
|
current_tag = f"v{new_version}"
|
||||||
new_version = sys.argv[1]
|
|
||||||
|
|
||||||
# Get last release tag
|
# Get last release tag
|
||||||
try:
|
try:
|
||||||
last_tag = get_last_release_tag()
|
last_tag = args.base_tag or get_last_release_tag(compare_ref, exclude_tag=current_tag)
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
print("Error: Could not find last release tag", file=sys.stderr)
|
print("Error: Could not find last release tag", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Collect PRs from both branches
|
print(
|
||||||
all_pr_numbers = set()
|
f"Resolved release note range: {last_tag}..{compare_ref}",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
|
||||||
for branch in ["develop", "master"]:
|
try:
|
||||||
try:
|
all_pr_numbers = set(get_merged_prs_in_range(last_tag, compare_ref))
|
||||||
prs = get_merged_prs_since_tag(last_tag, branch)
|
except subprocess.CalledProcessError as e:
|
||||||
all_pr_numbers.update(prs)
|
print(f"Error: Could not get PRs for range {last_tag}..{compare_ref}: {e}", file=sys.stderr)
|
||||||
except Exception as e:
|
sys.exit(1)
|
||||||
print(f"Warning: Could not get PRs from {branch}: {e}", file=sys.stderr)
|
|
||||||
|
|
||||||
# Get details for all PRs
|
# Get details for all PRs
|
||||||
enhancements = []
|
enhancements = []
|
||||||
|
|||||||
@@ -87,6 +87,12 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="2.7.22" date="2026-04-06">
|
||||||
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.22</url>
|
||||||
|
</release>
|
||||||
|
<release version="2.7.21" date="2026-03-11">
|
||||||
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.21</url>
|
||||||
|
</release>
|
||||||
<release version="2.7.20" date="2026-02-11">
|
<release version="2.7.20" date="2026-02-11">
|
||||||
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.20</url>
|
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.20</url>
|
||||||
</release>
|
</release>
|
||||||
|
|||||||
Executable
+44
@@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Run native PlatformIO tests inside Docker (for macOS / non-Linux hosts).
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ./bin/test-native-docker.sh # run all native tests
|
||||||
|
# ./bin/test-native-docker.sh -f test_transmit_history # run specific test filter
|
||||||
|
# ./bin/test-native-docker.sh --rebuild # force rebuild the image
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
IMAGE_NAME="meshtastic-native-test"
|
||||||
|
|
||||||
|
REBUILD=false
|
||||||
|
EXTRA_ARGS=()
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
if [[ "$arg" == "--rebuild" ]]; then
|
||||||
|
REBUILD=true
|
||||||
|
else
|
||||||
|
EXTRA_ARGS+=("$arg")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if $REBUILD || ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||||
|
echo "Building test image (first run may take a few minutes)..."
|
||||||
|
docker build -t "$IMAGE_NAME" -f "$ROOT_DIR/Dockerfile.test" "$ROOT_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Disable BUILD_EPOCH to avoid full rebuilds between test runs (matches CI)
|
||||||
|
sed_cmd='s/-DBUILD_EPOCH=$UNIX_TIME/#-DBUILD_EPOCH=$UNIX_TIME/'
|
||||||
|
|
||||||
|
# Default: run all tests. Pass extra args (e.g. -f test_transmit_history) through.
|
||||||
|
if [[ ${#EXTRA_ARGS[@]} -eq 0 ]]; then
|
||||||
|
CMD=("platformio" "test" "-e" "coverage" "-v")
|
||||||
|
else
|
||||||
|
CMD=("platformio" "test" "-e" "coverage" "-v" "${EXTRA_ARGS[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec docker run --rm \
|
||||||
|
-v "$ROOT_DIR:/src:ro" \
|
||||||
|
"$IMAGE_NAME" \
|
||||||
|
bash -c "rm -rf /tmp/fw-test && cp -a /src /tmp/fw-test && cd /tmp/fw-test && sed -i '${sed_cmd}' platformio.ini && ${CMD[*]}"
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino": {
|
||||||
|
"ldscript": "nrf52840_s140_v6.ld"
|
||||||
|
},
|
||||||
|
"core": "nRF5",
|
||||||
|
"cpu": "cortex-m4",
|
||||||
|
"extra_flags": "-DNRF52840_XXAA",
|
||||||
|
"f_cpu": "64000000L",
|
||||||
|
"hwids": [
|
||||||
|
["0x239A", "0x4405"],
|
||||||
|
["0x239A", "0x0029"],
|
||||||
|
["0x239A", "0x002A"],
|
||||||
|
["0x2886", "0x1667"]
|
||||||
|
],
|
||||||
|
"usb_product": "HT-n5262G",
|
||||||
|
"mcu": "nrf52840",
|
||||||
|
"variant": "heltec_mesh_node_t096",
|
||||||
|
"variants_dir": "variants",
|
||||||
|
"bsp": {
|
||||||
|
"name": "adafruit"
|
||||||
|
},
|
||||||
|
"softdevice": {
|
||||||
|
"sd_flags": "-DS140",
|
||||||
|
"sd_name": "s140",
|
||||||
|
"sd_version": "6.1.1",
|
||||||
|
"sd_fwid": "0x00B6"
|
||||||
|
},
|
||||||
|
"bootloader": {
|
||||||
|
"settings_addr": "0xFF000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"connectivity": ["bluetooth"],
|
||||||
|
"debug": {
|
||||||
|
"jlink_device": "nRF52840_xxAA",
|
||||||
|
"onboard_tools": ["jlink"],
|
||||||
|
"svd_path": "nrf52840.svd",
|
||||||
|
"openocd_target": "nrf52840-mdk-rs"
|
||||||
|
},
|
||||||
|
"frameworks": ["arduino"],
|
||||||
|
"name": "Heltec nrf (Adafruit BSP)",
|
||||||
|
"upload": {
|
||||||
|
"maximum_ram_size": 248832,
|
||||||
|
"maximum_size": 815104,
|
||||||
|
"speed": 115200,
|
||||||
|
"protocol": "nrfutil",
|
||||||
|
"protocols": ["jlink", "nrfjprog", "nrfutil", "stlink"],
|
||||||
|
"use_1200bps_touch": true,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"wait_for_upload_port": true
|
||||||
|
},
|
||||||
|
"url": "https://heltec.org/",
|
||||||
|
"vendor": "Heltec"
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino": {
|
||||||
|
"ldscript": "esp32s3_out.ld",
|
||||||
|
"partitions": "default.csv"
|
||||||
|
},
|
||||||
|
"core": "esp32",
|
||||||
|
"extra_flags": [
|
||||||
|
"-DBOARD_HAS_PSRAM",
|
||||||
|
"-DARDUINO_ESP32S3_DEV",
|
||||||
|
"-DARDUINO_USB_MODE=1",
|
||||||
|
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||||
|
"-DARDUINO_RUNNING_CORE=1",
|
||||||
|
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||||
|
],
|
||||||
|
"f_cpu": "240000000L",
|
||||||
|
"f_flash": "80000000L",
|
||||||
|
"flash_mode": "qio",
|
||||||
|
"hwids": [["0x303A", "0x1001"]],
|
||||||
|
"mcu": "esp32s3",
|
||||||
|
"variant": "esp32s3"
|
||||||
|
},
|
||||||
|
"connectivity": ["wifi"],
|
||||||
|
"debug": {
|
||||||
|
"default_tool": "esp-builtin",
|
||||||
|
"onboard_tools": ["esp-builtin"],
|
||||||
|
"openocd_target": "esp32s3.cfg"
|
||||||
|
},
|
||||||
|
"frameworks": ["arduino", "espidf"],
|
||||||
|
"name": "LilyGo Mini-Epaper-S3 (4 MB Flash, 2MB PSRAM)",
|
||||||
|
"upload": {
|
||||||
|
"flash_size": "4MB",
|
||||||
|
"maximum_ram_size": 327680,
|
||||||
|
"maximum_size": 4194304,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"speed": 460800
|
||||||
|
},
|
||||||
|
"url": "https://www.lilygo.cc",
|
||||||
|
"vendor": "LilyGo"
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino": {
|
||||||
|
"ldscript": "esp32s3_out.ld",
|
||||||
|
"memory_type": "qio_opi",
|
||||||
|
"partitions": "default_16MB.csv"
|
||||||
|
},
|
||||||
|
"core": "esp32",
|
||||||
|
"extra_flags": [
|
||||||
|
"-DBOARD_HAS_PSRAM",
|
||||||
|
"-DARDUINO_RUNNING_CORE=1",
|
||||||
|
"-DARDUINO_EVENT_RUNNING_CORE=0",
|
||||||
|
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||||
|
"-DARDUINO_USB_MODE=1"
|
||||||
|
],
|
||||||
|
"f_cpu": "240000000L",
|
||||||
|
"f_flash": "80000000L",
|
||||||
|
"flash_mode": "qio",
|
||||||
|
"hwids": [["0x303A", "0x1001"]],
|
||||||
|
"mcu": "esp32s3",
|
||||||
|
"variant": "esp32s3"
|
||||||
|
},
|
||||||
|
"connectivity": ["wifi", "bluetooth", "lora"],
|
||||||
|
"debug": {
|
||||||
|
"openocd_target": "esp32s3.cfg"
|
||||||
|
},
|
||||||
|
"frameworks": ["arduino", "espidf"],
|
||||||
|
"name": "LilyGo T5-ePaper-S3",
|
||||||
|
"upload": {
|
||||||
|
"flash_size": "16MB",
|
||||||
|
"maximum_ram_size": 327680,
|
||||||
|
"maximum_size": 16777216,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"speed": 921600
|
||||||
|
},
|
||||||
|
"url": "https://lilygo.cc/products/t5-e-paper-s3-pro",
|
||||||
|
"vendor": "LILYGO"
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"arduino": {
|
||||||
|
"ldscript": "esp32_out.ld"
|
||||||
|
},
|
||||||
|
"core": "esp32",
|
||||||
|
"extra_flags": "-DARDUINO_T_Beam",
|
||||||
|
"f_cpu": "240000000L",
|
||||||
|
"f_flash": "40000000L",
|
||||||
|
"flash_mode": "dio",
|
||||||
|
"mcu": "esp32",
|
||||||
|
"variant": "tbeam"
|
||||||
|
},
|
||||||
|
"connectivity": ["wifi", "bluetooth", "can", "ethernet"],
|
||||||
|
"debug": {
|
||||||
|
"openocd_board": "esp-wroom-32.cfg"
|
||||||
|
},
|
||||||
|
"frameworks": ["arduino", "espidf"],
|
||||||
|
"name": "TTGO T-Beam (PSRAM Disabled)",
|
||||||
|
"upload": {
|
||||||
|
"flash_size": "4MB",
|
||||||
|
"maximum_ram_size": 1310720,
|
||||||
|
"maximum_size": 4194304,
|
||||||
|
"require_upload_port": true,
|
||||||
|
"speed": 460800
|
||||||
|
},
|
||||||
|
"url": "https://github.com/LilyGO/TTGO-T-Beam",
|
||||||
|
"vendor": "TTGO"
|
||||||
|
}
|
||||||
+1
-1
@@ -12,6 +12,6 @@ Ex:
|
|||||||
- `logo_320x480.png`
|
- `logo_320x480.png`
|
||||||
- `logo_320x240.png`
|
- `logo_320x240.png`
|
||||||
|
|
||||||
This file is copied to `data/boot/logo.png` before filesytem image compilation.
|
This file is copied to `data/boot/logo.png` before filesystem image compilation.
|
||||||
|
|
||||||
For additional examples see the [`event/defcon33` branch](https://github.com/meshtastic/firmware/tree/event/defcon33).
|
For additional examples see the [`event/defcon33` branch](https://github.com/meshtastic/firmware/tree/event/defcon33).
|
||||||
|
|||||||
Vendored
+12
@@ -1,3 +1,15 @@
|
|||||||
|
meshtasticd (2.7.22.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Version 2.7.22
|
||||||
|
|
||||||
|
-- GitHub Actions <github-actions[bot]@users.noreply.github.com> Mon, 06 Apr 2026 11:34:12 +0000
|
||||||
|
|
||||||
|
meshtasticd (2.7.21.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Version 2.7.21
|
||||||
|
|
||||||
|
-- GitHub Actions <github-actions[bot]@users.noreply.github.com> Wed, 11 Mar 2026 11:45:36 +0000
|
||||||
|
|
||||||
meshtasticd (2.7.20.0) unstable; urgency=medium
|
meshtasticd (2.7.20.0) unstable; urgency=medium
|
||||||
|
|
||||||
* Version 2.7.20
|
* Version 2.7.20
|
||||||
|
|||||||
Vendored
+14
-2
@@ -3,10 +3,17 @@ export DEBEMAIL="jbennett@incomsystems.biz"
|
|||||||
export PLATFORMIO_LIBDEPS_DIR=pio/libdeps
|
export PLATFORMIO_LIBDEPS_DIR=pio/libdeps
|
||||||
export PLATFORMIO_PACKAGES_DIR=pio/packages
|
export PLATFORMIO_PACKAGES_DIR=pio/packages
|
||||||
export PLATFORMIO_CORE_DIR=pio/core
|
export PLATFORMIO_CORE_DIR=pio/core
|
||||||
|
export PLATFORMIO_SETTING_ENABLE_TELEMETRY=0
|
||||||
|
export PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL=3650
|
||||||
|
export PLATFORMIO_SETTING_CHECK_PRUNE_SYSTEM_THRESHOLD=10240
|
||||||
|
|
||||||
# Download libraries to `pio`
|
# Download libraries to `pio`
|
||||||
platformio pkg install -e native-tft
|
platformio pkg install -e native-tft
|
||||||
platformio pkg install -e native-tft -t platformio/tool-scons@4.40502.0
|
platformio pkg install -e native-tft -t platformio/tool-scons@4.40502.0
|
||||||
|
# Mangle PlatformIO cache to prevent internet access at build-time
|
||||||
|
# Simply adds 1 to all expiry (epoch) timestamps, adding ~500 years to expiry date
|
||||||
|
cp pio/core/.cache/downloads/usage.db pio/core/.cache/downloads/usage.db.bak
|
||||||
|
jq -c 'with_entries(.value |= (. | tostring + "1" | tonumber))' pio/core/.cache/downloads/usage.db.bak >pio/core/.cache/downloads/usage.db
|
||||||
# Compress `pio` directory to prevent dh_clean from sanitizing it
|
# Compress `pio` directory to prevent dh_clean from sanitizing it
|
||||||
tar -cf pio.tar pio/
|
tar -cf pio.tar pio/
|
||||||
rm -rf pio
|
rm -rf pio
|
||||||
@@ -20,5 +27,10 @@ rm -rf debian/changelog
|
|||||||
dch --create --distribution "$SERIES" --package "$package" --newversion "$PKG_VERSION~$SERIES" \
|
dch --create --distribution "$SERIES" --package "$package" --newversion "$PKG_VERSION~$SERIES" \
|
||||||
"GitHub Actions Automatic packaging for $PKG_VERSION~$SERIES"
|
"GitHub Actions Automatic packaging for $PKG_VERSION~$SERIES"
|
||||||
|
|
||||||
# Build the source deb
|
if [[ -n $GPG_KEY_ID ]]; then
|
||||||
debuild -S -nc -k"$GPG_KEY_ID"
|
# Build and sign the source deb
|
||||||
|
debuild -S -nc -k"$GPG_KEY_ID"
|
||||||
|
else
|
||||||
|
# Build the source deb without signing (forks)
|
||||||
|
debuild -S -nc
|
||||||
|
fi
|
||||||
|
|||||||
Vendored
+4
-1
@@ -9,7 +9,10 @@
|
|||||||
PIO_ENV:=\
|
PIO_ENV:=\
|
||||||
PLATFORMIO_CORE_DIR=pio/core \
|
PLATFORMIO_CORE_DIR=pio/core \
|
||||||
PLATFORMIO_LIBDEPS_DIR=pio/libdeps \
|
PLATFORMIO_LIBDEPS_DIR=pio/libdeps \
|
||||||
PLATFORMIO_PACKAGES_DIR=pio/packages
|
PLATFORMIO_PACKAGES_DIR=pio/packages \
|
||||||
|
PLATFORMIO_SETTING_ENABLE_TELEMETRY=0 \
|
||||||
|
PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL=3650 \
|
||||||
|
PLATFORMIO_SETTING_CHECK_PRUNE_SYSTEM_THRESHOLD=10240
|
||||||
|
|
||||||
# Raspbian armhf builds should be compatible with armv6-hardfloat
|
# Raspbian armhf builds should be compatible with armv6-hardfloat
|
||||||
# https://www.valvers.com/open-software/raspberry-pi/bare-metal-programming-in-c-part-1/#rpi1-compiler-flags
|
# https://www.valvers.com/open-software/raspberry-pi/bare-metal-programming-in-c-part-1/#rpi1-compiler-flags
|
||||||
|
|||||||
+109
-97
@@ -77,10 +77,10 @@ lib_deps =
|
|||||||
https://github.com/meshtastic/TinyGPSPlus/archive/71a82db35f3b973440044c476d4bcdc673b104f4.zip
|
https://github.com/meshtastic/TinyGPSPlus/archive/71a82db35f3b973440044c476d4bcdc673b104f4.zip
|
||||||
# renovate: datasource=git-refs depName=meshtastic-ArduinoThread packageName=https://github.com/meshtastic/ArduinoThread gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-ArduinoThread packageName=https://github.com/meshtastic/ArduinoThread gitBranch=master
|
||||||
https://github.com/meshtastic/ArduinoThread/archive/b841b0415721f1341ea41cccfb4adccfaf951567.zip
|
https://github.com/meshtastic/ArduinoThread/archive/b841b0415721f1341ea41cccfb4adccfaf951567.zip
|
||||||
# renovate: datasource=custom.pio depName=Nanopb packageName=nanopb/library/Nanopb
|
# renovate: datasource=github-tags depName=Nanopb packageName=nanopb/nanopb
|
||||||
nanopb/Nanopb@0.4.91
|
https://github.com/nanopb/nanopb/archive/refs/tags/nanopb-0.4.9.1.zip
|
||||||
# renovate: datasource=custom.pio depName=ErriezCRC32 packageName=erriez/library/ErriezCRC32
|
# renovate: datasource=github-tags depName=ErriezCRC32 packageName=Erriez/ErriezCRC32
|
||||||
erriez/ErriezCRC32@1.0.1
|
https://github.com/Erriez/ErriezCRC32/archive/refs/tags/1.0.1.zip
|
||||||
|
|
||||||
; Used for the code analysis in PIO Home / Inspect
|
; Used for the code analysis in PIO Home / Inspect
|
||||||
check_tool = cppcheck
|
check_tool = cppcheck
|
||||||
@@ -95,139 +95,151 @@ check_flags =
|
|||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${env.lib_deps}
|
${env.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=NonBlockingRTTTL packageName=end2endzone/library/NonBlockingRTTTL
|
# renovate: datasource=github-tags depName=NonBlockingRTTTL packageName=end2endzone/NonBlockingRTTTL
|
||||||
end2endzone/NonBlockingRTTTL@1.4.0
|
https://github.com/end2endzone/NonBlockingRTTTL/archive/refs/tags/1.4.0.zip
|
||||||
|
build_unflags =
|
||||||
|
-std=c++11
|
||||||
|
-std=gnu++11
|
||||||
build_flags = ${env.build_flags} -Os
|
build_flags = ${env.build_flags} -Os
|
||||||
|
-std=gnu++17
|
||||||
build_src_filter = ${env.build_src_filter} -<platform/portduino/> -<graphics/niche/>
|
build_src_filter = ${env.build_src_filter} -<platform/portduino/> -<graphics/niche/>
|
||||||
|
|
||||||
; Common libs for communicating over TCP/IP networks such as MQTT
|
; Common libs for communicating over TCP/IP networks such as MQTT
|
||||||
[networking_base]
|
[networking_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=TBPubSubClient packageName=thingsboard/library/TBPubSubClient
|
# renovate: datasource=github-tags depName=TBPubSubClient packageName=thingsboard/pubsubclient
|
||||||
thingsboard/TBPubSubClient@2.12.1
|
https://github.com/thingsboard/pubsubclient/archive/refs/tags/v2.12.1.zip
|
||||||
# renovate: datasource=custom.pio depName=NTPClient packageName=arduino-libraries/library/NTPClient
|
# renovate: datasource=github-tags depName=NTPClient packageName=arduino-libraries/NTPClient
|
||||||
arduino-libraries/NTPClient@3.2.1
|
https://github.com/arduino-libraries/NTPClient/archive/refs/tags/3.2.1.zip
|
||||||
|
|
||||||
; Extra TCP/IP networking libs for supported devices
|
; Extra TCP/IP networking libs for supported devices
|
||||||
[networking_extra]
|
[networking_extra]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=Syslog packageName=arcao/library/Syslog
|
# renovate: datasource=github-tags depName=Syslog packageName=arcao/Syslog
|
||||||
arcao/Syslog@2.0.0
|
https://github.com/arcao/Syslog/archive/refs/tags/v2.0.zip
|
||||||
|
|
||||||
[radiolib_base]
|
[radiolib_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=RadioLib packageName=jgromes/library/RadioLib
|
# renovate: datasource=github-tags depName=RadioLib packageName=jgromes/RadioLib
|
||||||
jgromes/RadioLib@7.6.0
|
https://github.com/jgromes/RadioLib/archive/refs/tags/7.6.0.zip
|
||||||
|
|
||||||
[device-ui_base]
|
[device-ui_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
||||||
https://github.com/meshtastic/device-ui/archive/6c75195e9987b7a49563232234f2f868dd343cae.zip
|
https://github.com/meshtastic/device-ui/archive/1897dd17fceb1f101bb1a3245680aa3439edcfdd.zip
|
||||||
|
|
||||||
; Common libs for environmental measurements in telemetry module
|
; Common libs for environmental measurements in telemetry module
|
||||||
[environmental_base]
|
[environmental_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=Adafruit BusIO packageName=adafruit/library/Adafruit BusIO
|
# renovate: datasource=github-tags depName=Adafruit BusIO packageName=adafruit/Adafruit_BusIO
|
||||||
adafruit/Adafruit BusIO@1.17.4
|
https://github.com/adafruit/Adafruit_BusIO/archive/refs/tags/1.17.4.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit Unified Sensor packageName=adafruit/library/Adafruit Unified Sensor
|
# renovate: datasource=github-tags depName=Adafruit Unified Sensor packageName=adafruit/Adafruit_Sensor
|
||||||
adafruit/Adafruit Unified Sensor@1.1.15
|
https://github.com/adafruit/Adafruit_Sensor/archive/refs/tags/1.1.15.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit BMP280 packageName=adafruit/library/Adafruit BMP280 Library
|
# renovate: datasource=github-tags depName=Adafruit GFX packageName=adafruit/Adafruit-GFX-Library
|
||||||
adafruit/Adafruit BMP280 Library@3.0.0
|
https://github.com/adafruit/Adafruit-GFX-Library/archive/refs/tags/1.12.6.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit BMP085 packageName=adafruit/library/Adafruit BMP085 Library
|
# renovate: datasource=github-tags depName=NeoPixel packageName=adafruit/Adafruit_NeoPixel
|
||||||
adafruit/Adafruit BMP085 Library@1.2.4
|
https://github.com/adafruit/Adafruit_NeoPixel/archive/refs/tags/1.15.4.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit BME280 packageName=adafruit/library/Adafruit BME280 Library
|
# renovate: datasource=github-tags depName=Adafruit SSD1306 packageName=adafruit/Adafruit_SSD1306
|
||||||
adafruit/Adafruit BME280 Library@2.3.0
|
https://github.com/adafruit/Adafruit_SSD1306/archive/refs/tags/2.5.16.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit DPS310 packageName=adafruit/library/Adafruit DPS310
|
# renovate: datasource=github-tags depName=Adafruit BMP280 packageName=adafruit/Adafruit_BMP280_Library
|
||||||
adafruit/Adafruit DPS310@1.1.5
|
https://github.com/adafruit/Adafruit_BMP280_Library/archive/refs/tags/3.0.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MCP9808 packageName=adafruit/library/Adafruit MCP9808 Library
|
# renovate: datasource=github-tags depName=Adafruit BMP085 packageName=adafruit/Adafruit-BMP085-Library
|
||||||
adafruit/Adafruit MCP9808 Library@2.0.2
|
https://github.com/adafruit/Adafruit-BMP085-Library/archive/refs/tags/1.2.4.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit INA260 packageName=adafruit/library/Adafruit INA260 Library
|
# renovate: datasource=github-tags depName=Adafruit BME280 packageName=adafruit/Adafruit_BME280_Library
|
||||||
adafruit/Adafruit INA260 Library@1.5.3
|
https://github.com/adafruit/Adafruit_BME280_Library/archive/refs/tags/2.3.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit INA219 packageName=adafruit/library/Adafruit INA219
|
# renovate: datasource=github-tags depName=Adafruit DPS310 packageName=adafruit/Adafruit_DPS310
|
||||||
adafruit/Adafruit INA219@1.2.3
|
https://github.com/adafruit/Adafruit_DPS310/archive/refs/tags/1.1.6.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MPU6050 packageName=adafruit/library/Adafruit MPU6050
|
# renovate: datasource=github-tags depName=Adafruit SH110x packageName=adafruit/Adafruit_SH110x
|
||||||
adafruit/Adafruit MPU6050@2.2.9
|
https://github.com/adafruit/Adafruit_SH110x/archive/refs/tags/2.1.14.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit LIS3DH packageName=adafruit/library/Adafruit LIS3DH
|
# renovate: datasource=github-tags depName=Adafruit MCP9808 packageName=adafruit/Adafruit_MCP9808_Library
|
||||||
adafruit/Adafruit LIS3DH@1.3.0
|
https://github.com/adafruit/Adafruit_MCP9808_Library/archive/refs/tags/2.0.2.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit AHTX0 packageName=adafruit/library/Adafruit AHTX0
|
# renovate: datasource=github-tags depName=Adafruit INA260 packageName=adafruit/Adafruit_INA260
|
||||||
adafruit/Adafruit AHTX0@2.0.5
|
https://github.com/adafruit/Adafruit_INA260/archive/refs/tags/1.5.3.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit LSM6DS packageName=adafruit/library/Adafruit LSM6DS
|
# renovate: datasource=github-tags depName=Adafruit INA219 packageName=adafruit/Adafruit_INA219
|
||||||
adafruit/Adafruit LSM6DS@4.7.4
|
https://github.com/adafruit/Adafruit_INA219/archive/refs/tags/1.2.3.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit TSL2591 packageName=adafruit/library/Adafruit TSL2591 Library
|
# renovate: datasource=github-tags depName=Adafruit MPU6050 packageName=adafruit/Adafruit_MPU6050
|
||||||
adafruit/Adafruit TSL2591 Library@1.4.5
|
https://github.com/adafruit/Adafruit_MPU6050/archive/refs/tags/2.2.9.zip
|
||||||
# renovate: datasource=custom.pio depName=EmotiBit MLX90632 packageName=emotibit/library/EmotiBit MLX90632
|
# renovate: datasource=github-tags depName=Adafruit LIS3DH packageName=adafruit/Adafruit_LIS3DH
|
||||||
emotibit/EmotiBit MLX90632@1.0.8
|
https://github.com/adafruit/Adafruit_LIS3DH/archive/refs/tags/1.3.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MLX90614 packageName=adafruit/library/Adafruit MLX90614 Library
|
# renovate: datasource=github-tags depName=Adafruit AHTX0 packageName=adafruit/Adafruit_AHTX0
|
||||||
adafruit/Adafruit MLX90614 Library@2.1.5
|
https://github.com/adafruit/Adafruit_AHTX0/archive/refs/tags/2.0.6.zip
|
||||||
|
# renovate: datasource=github-tags depName=Adafruit LSM6DS packageName=adafruit/Adafruit_LSM6DS
|
||||||
|
https://github.com/adafruit/Adafruit_LSM6DS/archive/refs/tags/4.7.4.zip
|
||||||
|
# renovate: datasource=github-tags depName=Adafruit TSL2591 packageName=adafruit/Adafruit_TSL2591_Library
|
||||||
|
https://github.com/adafruit/Adafruit_TSL2591_Library/archive/refs/tags/1.4.5.zip
|
||||||
|
# renovate: datasource=github-tags depName=EmotiBit MLX90632 packageName=emotibit/EmotiBit_MLX90632
|
||||||
|
https://github.com/EmotiBit/EmotiBit_MLX90632/archive/refs/tags/v1.0.8.zip
|
||||||
|
# renovate: datasource=github-tags depName=Adafruit MLX90614 packageName=adafruit/Adafruit_MLX90614
|
||||||
|
https://github.com/adafruit/Adafruit-MLX90614-Library/archive/refs/tags/2.1.6.zip
|
||||||
# renovate: datasource=git-refs depName=INA3221 packageName=https://github.com/sgtwilko/INA3221 gitBranch=FixOverflow
|
# renovate: datasource=git-refs depName=INA3221 packageName=https://github.com/sgtwilko/INA3221 gitBranch=FixOverflow
|
||||||
https://github.com/sgtwilko/INA3221/archive/bb03d7e9bfcc74fc798838a54f4f99738f29fc6a.zip
|
https://github.com/sgtwilko/INA3221/archive/bb03d7e9bfcc74fc798838a54f4f99738f29fc6a.zip
|
||||||
# renovate: datasource=custom.pio depName=QMC5883L Compass packageName=mprograms/library/QMC5883LCompass
|
# renovate: datasource=github-tags depName=QMC5883L Compass packageName=mprograms/QMC5883LCompass
|
||||||
mprograms/QMC5883LCompass@1.2.3
|
https://github.com/mprograms/QMC5883LCompass/archive/refs/tags/v1.2.3.zip
|
||||||
# renovate: datasource=custom.pio depName=DFRobot_RTU packageName=dfrobot/library/DFRobot_RTU
|
# renovate: datasource=github-tags depName=DFRobot_RTU packageName=dfrobot/DFRobot_RTU
|
||||||
dfrobot/DFRobot_RTU@1.0.6
|
https://github.com/DFRobot/DFRobot_RTU/archive/refs/tags/V1.0.6.zip
|
||||||
# renovate: datasource=git-refs depName=DFRobot_RainfallSensor packageName=https://github.com/DFRobot/DFRobot_RainfallSensor gitBranch=master
|
# renovate: datasource=git-refs depName=DFRobot_RainfallSensor packageName=https://github.com/DFRobot/DFRobot_RainfallSensor gitBranch=master
|
||||||
https://github.com/DFRobot/DFRobot_RainfallSensor/archive/38fea5e02b40a5430be6dab39a99a6f6347d667e.zip
|
https://github.com/DFRobot/DFRobot_RainfallSensor/archive/38fea5e02b40a5430be6dab39a99a6f6347d667e.zip
|
||||||
# renovate: datasource=custom.pio depName=INA226 packageName=robtillaart/library/INA226
|
# renovate: datasource=github-tags depName=INA226 packageName=robtillaart/INA226
|
||||||
robtillaart/INA226@0.6.6
|
https://github.com/RobTillaart/INA226/archive/refs/tags/0.6.6.zip
|
||||||
# renovate: datasource=custom.pio depName=SparkFun MAX3010x packageName=sparkfun/library/SparkFun MAX3010x Pulse and Proximity Sensor Library
|
# renovate: datasource=github-tags depName=SparkFun MAX3010x packageName=sparkfun/SparkFun_MAX3010x_Sensor_Library
|
||||||
sparkfun/SparkFun MAX3010x Pulse and Proximity Sensor Library@1.1.2
|
https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library/archive/refs/tags/v1.1.2.zip
|
||||||
# renovate: datasource=custom.pio depName=SparkFun 9DoF IMU Breakout ICM 20948 packageName=sparkfun/library/SparkFun 9DoF IMU Breakout - ICM 20948 - Arduino Library
|
# renovate: datasource=github-tags depName=SparkFun 9DoF IMU Breakout ICM 20948 packageName=sparkfun/SparkFun_ICM-20948_ArduinoLibrary
|
||||||
sparkfun/SparkFun 9DoF IMU Breakout - ICM 20948 - Arduino Library@1.3.2
|
https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/archive/refs/tags/v1.3.2.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit LTR390 Library packageName=adafruit/library/Adafruit LTR390 Library
|
# renovate: datasource=github-tags depName=Adafruit LTR390 Library packageName=adafruit/Adafruit_LTR390
|
||||||
adafruit/Adafruit LTR390 Library@1.1.2
|
https://github.com/adafruit/Adafruit_LTR390/archive/refs/tags/1.1.2.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit PCT2075 packageName=adafruit/library/Adafruit PCT2075
|
# renovate: datasource=github-tags depName=Adafruit PCT2075 packageName=adafruit/Adafruit_PCT2075
|
||||||
adafruit/Adafruit PCT2075@1.0.6
|
https://github.com/adafruit/Adafruit_PCT2075/archive/refs/tags/1.0.6.zip
|
||||||
# renovate: datasource=custom.pio depName=DFRobot_BMM150 packageName=dfrobot/library/DFRobot_BMM150
|
# renovate: datasource=github-tags depName=DFRobot_BMM150 packageName=dfrobot/DFRobot_BMM150
|
||||||
dfrobot/DFRobot_BMM150@1.0.0
|
https://github.com/DFRobot/DFRobot_BMM150/archive/refs/tags/V1.0.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit_TSL2561 packageName=adafruit/library/Adafruit TSL2561
|
# renovate: datasource=github-tags depName=Adafruit_TSL2561 packageName=adafruit/Adafruit_TSL2561
|
||||||
adafruit/Adafruit TSL2561@1.1.2
|
https://github.com/adafruit/Adafruit_TSL2561/archive/refs/tags/1.1.3.zip
|
||||||
# renovate: datasource=custom.pio depName=BH1750_WE packageName=wollewald/library/BH1750_WE
|
# renovate: datasource=github-tags depName=BH1750_WE packageName=wollewald/BH1750_WE
|
||||||
wollewald/BH1750_WE@1.1.10
|
https://github.com/wollewald/BH1750_WE/archive/refs/tags/1.1.10.zip
|
||||||
|
|
||||||
; Common environmental sensor libraries (not included in native / portduino)
|
; Common environmental sensor libraries (not included in native / portduino)
|
||||||
[environmental_extra_common]
|
[environmental_extra_common]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=Adafruit BMP3XX packageName=adafruit/library/Adafruit BMP3XX Library
|
# renovate: datasource=github-tags depName=Adafruit BMP3XX packageName=adafruit/Adafruit_BMP3XX
|
||||||
adafruit/Adafruit BMP3XX Library@2.1.6
|
https://github.com/adafruit/Adafruit_BMP3XX/archive/refs/tags/2.1.6.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit MAX1704X packageName=adafruit/library/Adafruit MAX1704X
|
# renovate: datasource=github-tags depName=Adafruit MAX1704X packageName=adafruit/Adafruit_MAX1704X
|
||||||
adafruit/Adafruit MAX1704X@1.0.3
|
https://github.com/adafruit/Adafruit_MAX1704X/archive/refs/tags/1.0.3.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit SHTC3 packageName=adafruit/library/Adafruit SHTC3 Library
|
# renovate: datasource=github-tags depName=Adafruit SHTC3 packageName=adafruit/Adafruit_SHTC3
|
||||||
adafruit/Adafruit SHTC3 Library@1.0.2
|
https://github.com/adafruit/Adafruit_SHTC3/archive/refs/tags/1.0.2.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit LPS2X packageName=adafruit/library/Adafruit LPS2X
|
# renovate: datasource=github-tags depName=Adafruit LPS2X packageName=adafruit/Adafruit_LPS2X
|
||||||
adafruit/Adafruit LPS2X@2.0.6
|
https://github.com/adafruit/Adafruit_LPS2X/archive/refs/tags/2.0.6.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit SHT31 packageName=adafruit/library/Adafruit SHT31 Library
|
# renovate: datasource=github-tags depName=Adafruit SHT31 packageName=adafruit/Adafruit_SHT31
|
||||||
adafruit/Adafruit SHT31 Library@2.2.2
|
https://github.com/adafruit/Adafruit_SHT31/archive/refs/tags/2.2.2.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit VEML7700 packageName=adafruit/library/Adafruit VEML7700 Library
|
# renovate: datasource=github-tags depName=Adafruit VEML7700 packageName=adafruit/Adafruit_VEML7700
|
||||||
adafruit/Adafruit VEML7700 Library@2.1.6
|
https://github.com/adafruit/Adafruit_VEML7700/archive/refs/tags/2.1.6.zip
|
||||||
# renovate: datasource=custom.pio depName=Adafruit SHT4x packageName=adafruit/library/Adafruit SHT4x Library
|
# renovate: datasource=github-tags depName=Adafruit SHT4x packageName=adafruit/Adafruit_SHT4X
|
||||||
adafruit/Adafruit SHT4x Library@1.0.5
|
https://github.com/adafruit/Adafruit_SHT4X/archive/refs/tags/1.0.5.zip
|
||||||
# renovate: datasource=custom.pio depName=SparkFun Qwiic Scale NAU7802 packageName=sparkfun/library/SparkFun Qwiic Scale NAU7802 Arduino Library
|
# renovate: datasource=github-tags depName=SparkFun Qwiic Scale NAU7802 packageName=sparkfun/SparkFun_Qwiic_Scale_NAU7802_Arduino_Library
|
||||||
sparkfun/SparkFun Qwiic Scale NAU7802 Arduino Library@1.0.6
|
https://github.com/sparkfun/SparkFun_Qwiic_Scale_NAU7802_Arduino_Library/archive/refs/tags/v1.0.6.zip
|
||||||
# renovate: datasource=custom.pio depName=ClosedCube OPT3001 packageName=closedcube/library/ClosedCube OPT3001
|
# renovate: datasource=custom.pio depName=ClosedCube OPT3001 packageName=closedcube/library/ClosedCube OPT3001
|
||||||
closedcube/ClosedCube OPT3001@1.1.2
|
closedcube/ClosedCube OPT3001@1.1.2
|
||||||
# renovate: datasource=git-refs depName=meshtastic-DFRobot_LarkWeatherStation packageName=https://github.com/meshtastic/DFRobot_LarkWeatherStation gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-DFRobot_LarkWeatherStation packageName=https://github.com/meshtastic/DFRobot_LarkWeatherStation gitBranch=master
|
||||||
https://github.com/meshtastic/DFRobot_LarkWeatherStation/archive/4de3a9cadef0f6a5220a8a906cf9775b02b0040d.zip
|
https://github.com/meshtastic/DFRobot_LarkWeatherStation/archive/4de3a9cadef0f6a5220a8a906cf9775b02b0040d.zip
|
||||||
# renovate: datasource=custom.pio depName=Sensirion Core packageName=sensirion/library/Sensirion Core
|
# renovate: datasource=github-tags depName=Sensirion Core packageName=sensirion/arduino-core
|
||||||
sensirion/Sensirion Core@0.7.3
|
https://github.com/Sensirion/arduino-core/archive/refs/tags/0.7.3.zip
|
||||||
# renovate: datasource=custom.pio depName=Sensirion I2C SCD4x packageName=sensirion/library/Sensirion I2C SCD4x
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD4x packageName=sensirion/arduino-i2c-scd4x
|
||||||
sensirion/Sensirion I2C SCD4x@1.1.0
|
https://github.com/Sensirion/arduino-i2c-scd4x/archive/refs/tags/1.1.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Sensirion I2C SFA3x packageName=sensirion/library/Sensirion I2C SFA3x
|
# renovate: datasource=github-tags depName=Sensirion I2C SFA3x packageName=sensirion/arduino-i2c-sfa3x
|
||||||
sensirion/Sensirion I2C SFA3x@1.0.0
|
https://github.com/Sensirion/arduino-i2c-sfa3x/archive/refs/tags/1.0.0.zip
|
||||||
# renovate: datasource=custom.pio depName=Sensirion I2C SCD30 packageName=sensirion/library/Sensirion I2C SCD30
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD30 packageName=sensirion/arduino-i2c-scd30
|
||||||
sensirion/Sensirion I2C SCD30@1.0.0
|
https://github.com/Sensirion/arduino-i2c-scd30/archive/refs/tags/1.0.0.zip
|
||||||
|
|
||||||
; Environmental sensors with BSEC2 (Bosch proprietary IAQ)
|
; Environmental sensors with BSEC2 (Bosch proprietary IAQ)
|
||||||
[environmental_extra]
|
[environmental_extra]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${environmental_extra_common.lib_deps}
|
${environmental_extra_common.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=Bosch BSEC2 packageName=boschsensortec/library/bsec2
|
# renovate: datasource=github-tags depName=Bosch BSEC2 packageName=boschsensortec/Bosch-BSEC2-Library
|
||||||
boschsensortec/bsec2@1.10.2610
|
https://github.com/boschsensortec/Bosch-BSEC2-Library/archive/refs/tags/1.10.2610.zip
|
||||||
# renovate: datasource=custom.pio depName=Bosch BME68x packageName=boschsensortec/library/BME68x Sensor Library
|
# renovate: datasource=github-tags depName=Bosch BME68x packageName=boschsensortec/Bosch-BME68x-Library
|
||||||
boschsensortec/BME68x Sensor Library@1.3.40408
|
https://github.com/boschsensortec/Bosch-BME68x-Library/archive/refs/tags/v1.3.40408.zip
|
||||||
|
|
||||||
; Environmental sensors without BSEC (saves ~3.5KB DRAM for original ESP32 targets)
|
; Environmental sensors without BSEC (saves ~3.5KB DRAM for original ESP32 targets)
|
||||||
[environmental_extra_no_bsec]
|
[environmental_extra_no_bsec]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${environmental_extra_common.lib_deps}
|
${environmental_extra_common.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=adafruit/Adafruit BME680 Library packageName=adafruit/library/Adafruit BME680
|
# renovate: datasource=github-tags depName=Adafruit_BME680 packageName=adafruit/Adafruit_BME680
|
||||||
adafruit/Adafruit BME680 Library@^2.0.5
|
https://github.com/adafruit/Adafruit_BME680/archive/refs/tags/2.0.6.zip
|
||||||
|
|||||||
+1
-1
Submodule protobufs updated: 44298d374f...e30092e616
@@ -4,6 +4,8 @@
|
|||||||
":dependencyDashboard",
|
":dependencyDashboard",
|
||||||
":semanticCommitTypeAll(chore)",
|
":semanticCommitTypeAll(chore)",
|
||||||
":ignoreModulesAndTests",
|
":ignoreModulesAndTests",
|
||||||
|
":noUnscheduledUpdates",
|
||||||
|
"schedule:daily",
|
||||||
"group:recommended",
|
"group:recommended",
|
||||||
"replacements:all",
|
"replacements:all",
|
||||||
"workarounds:all"
|
"workarounds:all"
|
||||||
|
|||||||
+1
-3
@@ -51,9 +51,7 @@ class AudioThread : public concurrency::OSThread
|
|||||||
i2sRtttl = nullptr;
|
i2sRtttl = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtttlFile != nullptr) {
|
rtttlFile = nullptr;
|
||||||
rtttlFile = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
setCPUFast(false);
|
setCPUFast(false);
|
||||||
#ifdef T_LORA_PAGER
|
#ifdef T_LORA_PAGER
|
||||||
|
|||||||
@@ -98,7 +98,6 @@ Syslog &Syslog::logMask(uint8_t priMask)
|
|||||||
|
|
||||||
void Syslog::enable()
|
void Syslog::enable()
|
||||||
{
|
{
|
||||||
this->_client->begin(this->_port);
|
|
||||||
this->_enabled = true;
|
this->_enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,14 +165,21 @@ inline bool Syslog::_sendLog(uint16_t pri, const char *appName, const char *mess
|
|||||||
if ((pri & LOG_FACMASK) == 0)
|
if ((pri & LOG_FACMASK) == 0)
|
||||||
pri = LOG_MAKEPRI(LOG_FAC(this->_priDefault), pri);
|
pri = LOG_MAKEPRI(LOG_FAC(this->_priDefault), pri);
|
||||||
|
|
||||||
|
// W5100S: acquire UDP socket on-demand to avoid permanent socket consumption
|
||||||
|
if (!this->_client->begin(this->_port)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (this->_server != NULL) {
|
if (this->_server != NULL) {
|
||||||
result = this->_client->beginPacket(this->_server, this->_port);
|
result = this->_client->beginPacket(this->_server, this->_port);
|
||||||
} else {
|
} else {
|
||||||
result = this->_client->beginPacket(this->_ip, this->_port);
|
result = this->_client->beginPacket(this->_ip, this->_port);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != 1)
|
if (result != 1) {
|
||||||
|
this->_client->stop();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
this->_client->print('<');
|
this->_client->print('<');
|
||||||
this->_client->print(pri);
|
this->_client->print(pri);
|
||||||
@@ -193,6 +199,8 @@ inline bool Syslog::_sendLog(uint16_t pri, const char *appName, const char *mess
|
|||||||
this->_client->print(message);
|
this->_client->print(message);
|
||||||
this->_client->endPacket();
|
this->_client->endPacket();
|
||||||
|
|
||||||
|
this->_client->stop(); // W5100S: release UDP socket for other services
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user