mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-24 22:10:09 +00:00
Merge branch 'master' into NextHopRouter
This commit is contained in:
commit
d5a8587deb
4
.github/actions/build-variant/action.yml
vendored
4
.github/actions/build-variant/action.yml
vendored
@ -83,13 +83,13 @@ runs:
|
|||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.version }}.zip
|
name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
${{ inputs.artifact-paths }}
|
${{ inputs.artifact-paths }}
|
||||||
|
8
.github/workflows/build_debian_src.yml
vendored
8
.github/workflows/build_debian_src.yml
vendored
@ -7,7 +7,11 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
inputs:
|
inputs:
|
||||||
series:
|
series:
|
||||||
description: Ubuntu series to target
|
description: Ubuntu/Debian series to target
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
build_location:
|
||||||
|
description: Location where build will execute
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
@ -47,6 +51,8 @@ jobs:
|
|||||||
working-directory: meshtasticd
|
working-directory: meshtasticd
|
||||||
run: |
|
run: |
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
BUILD_LOCATION: ${{ inputs.build_location }}
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Fetch libdeps, package debian source
|
- name: Fetch libdeps, package debian source
|
||||||
|
4
.github/workflows/build_docker.yml
vendored
4
.github/workflows/build_docker.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
|||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Docker login
|
- name: Docker login
|
||||||
@ -39,7 +39,7 @@ jobs:
|
|||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
push: true
|
push: true
|
||||||
tags: meshtastic/meshtasticd:${{ steps.version.outputs.version }}
|
tags: meshtastic/meshtasticd:${{ steps.version.outputs.long }}
|
||||||
|
|
||||||
- name: Docker build and push
|
- name: Docker build and push
|
||||||
if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
||||||
|
4
.github/workflows/build_native.yml
vendored
4
.github/workflows/build_native.yml
vendored
@ -25,13 +25,13 @@ jobs:
|
|||||||
run: bin/build-native.sh
|
run: bin/build-native.sh
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-native-${{ steps.version.outputs.version }}.zip
|
name: firmware-native-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
release/meshtasticd_linux_x86_64
|
release/meshtasticd_linux_x86_64
|
||||||
|
4
.github/workflows/build_raspbian.yml
vendored
4
.github/workflows/build_raspbian.yml
vendored
@ -39,13 +39,13 @@ jobs:
|
|||||||
run: bin/build-native.sh
|
run: bin/build-native.sh
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-raspbian-${{ steps.version.outputs.version }}.zip
|
name: firmware-raspbian-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
release/meshtasticd_linux_aarch64
|
release/meshtasticd_linux_aarch64
|
||||||
|
4
.github/workflows/build_raspbian_armv7l.yml
vendored
4
.github/workflows/build_raspbian_armv7l.yml
vendored
@ -39,13 +39,13 @@ jobs:
|
|||||||
run: bin/build-native.sh
|
run: bin/build-native.sh
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
- name: Store binaries as an artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip
|
name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
release/meshtasticd_linux_armv7l
|
release/meshtasticd_linux_armv7l
|
||||||
|
121
.github/workflows/main_matrix.yml
vendored
121
.github/workflows/main_matrix.yml
vendored
@ -137,6 +137,13 @@ jobs:
|
|||||||
package-native:
|
package-native:
|
||||||
uses: ./.github/workflows/package_amd64.yml
|
uses: ./.github/workflows/package_amd64.yml
|
||||||
|
|
||||||
|
build-debian-src:
|
||||||
|
uses: ./.github/workflows/build_debian_src.yml
|
||||||
|
with:
|
||||||
|
series: UNRELEASED
|
||||||
|
build_location: local
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
test-native:
|
test-native:
|
||||||
uses: ./.github/workflows/test_native.yml
|
uses: ./.github/workflows/test_native.yml
|
||||||
|
|
||||||
@ -192,7 +199,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Move files up
|
- name: Move files up
|
||||||
@ -201,7 +208,7 @@ jobs:
|
|||||||
- name: Repackage in single firmware zip
|
- name: Repackage in single firmware zip
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}
|
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
./firmware-*.bin
|
./firmware-*.bin
|
||||||
@ -218,7 +225,7 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}
|
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output
|
path: ./output
|
||||||
|
|
||||||
@ -232,12 +239,12 @@ jobs:
|
|||||||
chmod +x ./output/device-update.sh
|
chmod +x ./output/device-update.sh
|
||||||
|
|
||||||
- name: Zip firmware
|
- name: Zip firmware
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output
|
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output
|
||||||
|
|
||||||
- name: Repackage in single elfs zip
|
- name: Repackage in single elfs zip
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: ./*.elf
|
path: ./*.elf
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
@ -245,8 +252,8 @@ jobs:
|
|||||||
- uses: scruplelesswizard/comment-artifact@main
|
- uses: scruplelesswizard/comment-artifact@main
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
if: ${{ github.event_name == 'pull_request' }}
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}
|
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
||||||
description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip. This artifact will be available for 90 days from creation"
|
description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip. This artifact will be available for 90 days from creation"
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
release-artifacts:
|
release-artifacts:
|
||||||
@ -260,6 +267,7 @@ jobs:
|
|||||||
package-raspbian,
|
package-raspbian,
|
||||||
package-raspbian-armv7l,
|
package-raspbian-armv7l,
|
||||||
package-native,
|
package-native,
|
||||||
|
build-debian-src,
|
||||||
]
|
]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@ -271,62 +279,55 @@ jobs:
|
|||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: |
|
||||||
|
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
|
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
env:
|
||||||
|
BUILD_LOCATION: local
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
uses: actions/create-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
id: create_release
|
id: create_release
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
prerelease: true
|
prerelease: true
|
||||||
release_name: Meshtastic Firmware ${{ steps.version.outputs.version }} Alpha
|
name: Meshtastic Firmware ${{ steps.version.outputs.long }} Alpha
|
||||||
tag_name: v${{ steps.version.outputs.version }}
|
tag_name: v${{ steps.version.outputs.long }}
|
||||||
body: |
|
body: |
|
||||||
Autogenerated by github action, developer should edit as required before publishing...
|
Autogenerated by github action, developer should edit as required before publishing...
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
|
|
||||||
- name: Download deb files
|
- name: Download deb files
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: meshtasticd_${{ steps.version.outputs.version }}_*.deb
|
pattern: meshtasticd_${{ steps.version.outputs.long }}_*.deb
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output
|
path: ./output
|
||||||
|
|
||||||
|
- name: Download source deb
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: firmware-debian-${{ steps.version.outputs.deb }}~UNRELEASED-src
|
||||||
|
merge-multiple: true
|
||||||
|
path: ./output/debian-src
|
||||||
|
|
||||||
|
- name: Zip source deb
|
||||||
|
working-directory: output
|
||||||
|
run: zip -j -9 -r ./meshtasticd-${{ steps.version.outputs.deb }}-src.zip ./debian-src
|
||||||
|
|
||||||
# For diagnostics
|
# For diagnostics
|
||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
run: ls -lR
|
run: ls -lR
|
||||||
|
|
||||||
- name: Add raspbian aarch64 .deb
|
- name: Add deb files to release
|
||||||
uses: actions/upload-release-asset@v1
|
uses: softprops/action-gh-release@v2
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
tag_name: v${{ steps.version.outputs.long }}
|
||||||
asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_arm64.deb
|
files: |
|
||||||
asset_name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb
|
./output/meshtasticd_${{ steps.version.outputs.long }}_arm64.deb
|
||||||
asset_content_type: application/vnd.debian.binary-package
|
./output/meshtasticd_${{ steps.version.outputs.long }}_armhf.deb
|
||||||
|
./output/meshtasticd_${{ steps.version.outputs.long }}_amd64.deb
|
||||||
- name: Add raspbian armv7l .deb
|
./output/meshtasticd-${{ steps.version.outputs.deb }}-src.zip
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_armhf.deb
|
|
||||||
asset_name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb
|
|
||||||
asset_content_type: application/vnd.debian.binary-package
|
|
||||||
|
|
||||||
- name: Add raspbian amd64 .deb
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
asset_path: ./output/meshtasticd_${{ steps.version.outputs.version }}_amd64.deb
|
|
||||||
asset_name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb
|
|
||||||
asset_content_type: application/vnd.debian.binary-package
|
|
||||||
|
|
||||||
- name: Bump version.properties
|
- name: Bump version.properties
|
||||||
run: >-
|
run: >-
|
||||||
@ -362,12 +363,12 @@ jobs:
|
|||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}
|
pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./output
|
path: ./output
|
||||||
|
|
||||||
@ -380,37 +381,25 @@ jobs:
|
|||||||
chmod +x ./output/device-update.sh
|
chmod +x ./output/device-update.sh
|
||||||
|
|
||||||
- name: Zip firmware
|
- name: Zip firmware
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./output
|
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
path: ./elfs
|
path: ./elfs
|
||||||
|
|
||||||
- name: Zip firmware
|
- name: Zip debug elfs
|
||||||
run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip ./elfs
|
run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./elfs
|
||||||
|
|
||||||
# For diagnostics
|
# For diagnostics
|
||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
run: ls -lR
|
run: ls -lR
|
||||||
|
|
||||||
- name: Add bins to release
|
- name: Add bins and debug elfs to release
|
||||||
uses: actions/upload-release-asset@v1
|
uses: softprops/action-gh-release@v2
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
with:
|
||||||
upload_url: ${{needs.release-artifacts.outputs.upload_url}}
|
tag_name: v${{ steps.version.outputs.long }}
|
||||||
asset_path: ./firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
files: |
|
||||||
asset_name: firmware-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
||||||
asset_content_type: application/zip
|
./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
||||||
|
|
||||||
- name: Add debug elfs to release
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{needs.release-artifacts.outputs.upload_url}}
|
|
||||||
asset_path: ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
|
||||||
asset_name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.version }}.zip
|
|
||||||
asset_content_type: application/zip
|
|
||||||
|
10
.github/workflows/nightly.yml
vendored
10
.github/workflows/nightly.yml
vendored
@ -17,13 +17,3 @@ jobs:
|
|||||||
uses: trunk-io/trunk-action@782e83f803ca6e369f035d64c6ba2768174ba61b
|
uses: trunk-io/trunk-action@782e83f803ca6e369f035d64c6ba2768174ba61b
|
||||||
with:
|
with:
|
||||||
trunk-token: ${{ secrets.TRUNK_TOKEN }}
|
trunk-token: ${{ secrets.TRUNK_TOKEN }}
|
||||||
package-ppa:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
series: [plucky, oracular, noble, jammy]
|
|
||||||
uses: ./.github/workflows/package_ppa.yml
|
|
||||||
with:
|
|
||||||
ppa_repo: daily
|
|
||||||
series: ${{ matrix.series }}
|
|
||||||
secrets: inherit
|
|
||||||
|
37
.github/workflows/nightly_debian.yml
vendored
Normal file
37
.github/workflows/nightly_debian.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
name: Nightly Debian Packaging
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: 0 9 * * *
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- debian/**
|
||||||
|
- .github/workflows/nightly_debian.yml
|
||||||
|
- .github/workflows/build_debian_src.yml
|
||||||
|
- .github/workflows/package_ppa.yml
|
||||||
|
- .github/workflows/package_obs.yml
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
package-ppa:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
series: [plucky, oracular, noble, jammy]
|
||||||
|
uses: ./.github/workflows/package_ppa.yml
|
||||||
|
with:
|
||||||
|
ppa_repo: ppa:meshtastic/daily
|
||||||
|
series: ${{ matrix.series }}
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
package-obs:
|
||||||
|
uses: ./.github/workflows/package_obs.yml
|
||||||
|
with:
|
||||||
|
obs_project: home:meshtastic:daily
|
||||||
|
series: unstable
|
||||||
|
secrets: inherit
|
8
.github/workflows/package_amd64.yml
vendored
8
.github/workflows/package_amd64.yml
vendored
@ -32,13 +32,13 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-native-${{ steps.version.outputs.version }}.zip
|
name: firmware-native-${{ steps.version.outputs.long }}.zip
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
@ -77,14 +77,14 @@ jobs:
|
|||||||
package: meshtasticd
|
package: meshtasticd
|
||||||
package_root: .debpkg
|
package_root: .debpkg
|
||||||
maintainer: Jonathan Bennett
|
maintainer: Jonathan Bennett
|
||||||
version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.*
|
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
||||||
arch: amd64
|
arch: amd64
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
||||||
desc: Native Linux Meshtastic binary.
|
desc: Native Linux Meshtastic binary.
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: meshtasticd_${{ steps.version.outputs.version }}_amd64.deb
|
name: meshtasticd_${{ steps.version.outputs.long }}_amd64.deb
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
./*.deb
|
./*.deb
|
||||||
|
110
.github/workflows/package_obs.yml
vendored
Normal file
110
.github/workflows/package_obs.yml
vendored
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
name: Package for OpenSUSE Build Service
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
OBS_PASSWORD:
|
||||||
|
required: true
|
||||||
|
PPA_GPG_PRIVATE_KEY:
|
||||||
|
required: true
|
||||||
|
inputs:
|
||||||
|
obs_project:
|
||||||
|
description: Meshtastic OBS project to target
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
series:
|
||||||
|
description: Debian series to target
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-debian-src:
|
||||||
|
uses: ./.github/workflows/build_debian_src.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
series: ${{ inputs.series }}
|
||||||
|
build_location: obs
|
||||||
|
|
||||||
|
package-obs:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
needs: build-debian-src
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
path: meshtasticd
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Install OpenSUSE Build Service deps
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo 'deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/openSUSE:Tools.list
|
||||||
|
curl -fsSL https://download.opensuse.org/repositories/openSUSE:Tools/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/openSUSE_Tools.gpg > /dev/null
|
||||||
|
sudo apt-get update -y --fix-missing
|
||||||
|
sudo apt-get install -y osc
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
working-directory: meshtasticd
|
||||||
|
run: |
|
||||||
|
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
BUILD_LOCATION: obs
|
||||||
|
id: version
|
||||||
|
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
||||||
|
merge-multiple: true
|
||||||
|
|
||||||
|
- name: Display structure of downloaded files
|
||||||
|
run: ls -lah
|
||||||
|
|
||||||
|
- name: Configure osc
|
||||||
|
env:
|
||||||
|
OBS_USERNAME: meshtastic
|
||||||
|
run: |
|
||||||
|
# Setup OpenSUSE Build Service credentials
|
||||||
|
mkdir -p ~/.config/osc
|
||||||
|
echo "[general]" > ~/.config/osc/oscrc
|
||||||
|
echo "apiurl=https://api.opensuse.org" >> ~/.config/osc/oscrc
|
||||||
|
echo "[https://api.opensuse.org]" >> ~/.config/osc/oscrc
|
||||||
|
echo "user=${{ env.OBS_USERNAME }}" >> ~/.config/osc/oscrc
|
||||||
|
echo "pass=${{ secrets.OBS_PASSWORD }}" >> ~/.config/osc/oscrc
|
||||||
|
echo "credentials_mgr_class=osc.credentials.PlaintextConfigFileCredentialsManager" >> ~/.config/osc/oscrc
|
||||||
|
# Create a temporary directory for osc checkout
|
||||||
|
mkdir -p osc
|
||||||
|
|
||||||
|
# Intentionally fail if credentials are invalid
|
||||||
|
# Update secrets if this returns `401`
|
||||||
|
- name: Verify OBS authentication
|
||||||
|
run: osc token
|
||||||
|
|
||||||
|
- name: Upload package to OBS
|
||||||
|
shell: bash
|
||||||
|
working-directory: osc
|
||||||
|
env:
|
||||||
|
OBS_PROJECT: ${{ inputs.obs_project }}
|
||||||
|
OBS_PACKAGE: meshtasticd
|
||||||
|
run: |
|
||||||
|
# Initialize the package in the current directory
|
||||||
|
osc checkout --output-dir . $OBS_PROJECT $OBS_PACKAGE
|
||||||
|
|
||||||
|
# Remove the existing package files
|
||||||
|
rm -rf *.dsc *.tar.xz
|
||||||
|
|
||||||
|
# Copy new package files to the directory
|
||||||
|
cp $GITHUB_WORKSPACE/*.dsc .
|
||||||
|
cp $GITHUB_WORKSPACE/*.tar.xz .
|
||||||
|
|
||||||
|
# Add/Remove the files
|
||||||
|
osc addremove
|
||||||
|
|
||||||
|
# Commit changes and push to OpenSUSE Build Service
|
||||||
|
osc commit -m "GitHub Actions: ${{ steps.version.outputs.deb }}~${{ inputs.series }}"
|
8
.github/workflows/package_ppa.yml
vendored
8
.github/workflows/package_ppa.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: Package Launchpad PPA
|
name: Package for Launchpad PPA
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
@ -14,7 +14,6 @@ on:
|
|||||||
description: Ubuntu series to target
|
description: Ubuntu series to target
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@ -26,6 +25,7 @@ jobs:
|
|||||||
secrets: inherit
|
secrets: inherit
|
||||||
with:
|
with:
|
||||||
series: ${{ inputs.series }}
|
series: ${{ inputs.series }}
|
||||||
|
build_location: ppa
|
||||||
|
|
||||||
package-ppa:
|
package-ppa:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
@ -55,6 +55,8 @@ jobs:
|
|||||||
working-directory: meshtasticd
|
working-directory: meshtasticd
|
||||||
run: |
|
run: |
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
BUILD_LOCATION: ppa
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
@ -69,4 +71,4 @@ jobs:
|
|||||||
- name: Publish with dput
|
- name: Publish with dput
|
||||||
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
||||||
run: |
|
run: |
|
||||||
dput ppa:meshtastic/${{ inputs.ppa_repo }} meshtasticd_${{ steps.version.outputs.deb }}~${{ inputs.series }}_source.changes
|
dput ${{ inputs.ppa_repo }} meshtasticd_${{ steps.version.outputs.deb }}~${{ inputs.series }}_source.changes
|
||||||
|
8
.github/workflows/package_raspbian.yml
vendored
8
.github/workflows/package_raspbian.yml
vendored
@ -32,13 +32,13 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-raspbian-${{ steps.version.outputs.version }}.zip
|
name: firmware-raspbian-${{ steps.version.outputs.long }}.zip
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
@ -77,14 +77,14 @@ jobs:
|
|||||||
package: meshtasticd
|
package: meshtasticd
|
||||||
package_root: .debpkg
|
package_root: .debpkg
|
||||||
maintainer: Jonathan Bennett
|
maintainer: Jonathan Bennett
|
||||||
version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.*
|
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
||||||
arch: arm64
|
arch: arm64
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
||||||
desc: Native Linux Meshtastic binary.
|
desc: Native Linux Meshtastic binary.
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: meshtasticd_${{ steps.version.outputs.version }}_arm64.deb
|
name: meshtasticd_${{ steps.version.outputs.long }}_arm64.deb
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
./*.deb
|
./*.deb
|
||||||
|
@ -32,13 +32,13 @@ jobs:
|
|||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Download artifacts
|
- name: Download artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: firmware-raspbian-armv7l-${{ steps.version.outputs.version }}.zip
|
name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
- name: Display structure of downloaded files
|
||||||
@ -77,14 +77,14 @@ jobs:
|
|||||||
package: meshtasticd
|
package: meshtasticd
|
||||||
package_root: .debpkg
|
package_root: .debpkg
|
||||||
maintainer: Jonathan Bennett
|
maintainer: Jonathan Bennett
|
||||||
version: ${{ steps.version.outputs.version }} # refs/tags/v*.*.*
|
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
||||||
arch: armhf
|
arch: armhf
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
||||||
desc: Native Linux Meshtastic binary.
|
desc: Native Linux Meshtastic binary.
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: meshtasticd_${{ steps.version.outputs.version }}_armhf.deb
|
name: meshtasticd_${{ steps.version.outputs.long }}_armhf.deb
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: |
|
path: |
|
||||||
./*.deb
|
./*.deb
|
||||||
|
13
.github/workflows/release_channels.yml
vendored
13
.github/workflows/release_channels.yml
vendored
@ -2,7 +2,7 @@ name: Trigger release workflows upon Publish
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published, released]
|
||||||
|
|
||||||
permissions: read-all
|
permissions: read-all
|
||||||
|
|
||||||
@ -15,6 +15,15 @@ jobs:
|
|||||||
uses: ./.github/workflows/package_ppa.yml
|
uses: ./.github/workflows/package_ppa.yml
|
||||||
with:
|
with:
|
||||||
ppa_repo: |-
|
ppa_repo: |-
|
||||||
${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
ppa:meshtastic/${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
||||||
series: ${{ matrix.series }}
|
series: ${{ matrix.series }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
|
package-obs:
|
||||||
|
uses: ./.github/workflows/package_obs.yml
|
||||||
|
with:
|
||||||
|
obs_project: |-
|
||||||
|
home:meshtastic:${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
||||||
|
series: |-
|
||||||
|
${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
||||||
|
secrets: inherit
|
||||||
|
18
.github/workflows/test_native.yml
vendored
18
.github/workflows/test_native.yml
vendored
@ -55,14 +55,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
if: always() # run this step even if previous step failed
|
if: always() # run this step even if previous step failed
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Save coverage information
|
- name: Save coverage information
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
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.version }}.zip
|
name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: ./coverage_*.info
|
path: ./coverage_*.info
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ jobs:
|
|||||||
uses: ./.github/actions/setup-native
|
uses: ./.github/actions/setup-native
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
# Disable (comment-out) BUILD_EPOCH. It causes a full rebuild between tests and resets the
|
# Disable (comment-out) BUILD_EPOCH. It causes a full rebuild between tests and resets the
|
||||||
@ -96,7 +96,7 @@ jobs:
|
|||||||
if: always() # run this step even if previous step failed
|
if: always() # run this step even if previous step failed
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: platformio-test-report-${{ steps.version.outputs.version }}.zip
|
name: platformio-test-report-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: ./testreport.xml
|
path: ./testreport.xml
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
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.version }}.zip
|
name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}.zip
|
||||||
overwrite: true
|
overwrite: true
|
||||||
path: ./coverage_*.info
|
path: ./coverage_*.info
|
||||||
|
|
||||||
@ -133,13 +133,13 @@ jobs:
|
|||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "version=$(./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@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: platformio-test-report-${{ steps.version.outputs.version }}.zip
|
name: platformio-test-report-${{ steps.version.outputs.long }}.zip
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
- name: Test Report
|
- name: Test Report
|
||||||
@ -152,7 +152,7 @@ jobs:
|
|||||||
- name: Download coverage artifacts
|
- name: Download coverage artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.version }}.zip
|
pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}.zip
|
||||||
path: code-coverage-report
|
path: code-coverage-report
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
@ -165,5 +165,5 @@ jobs:
|
|||||||
- name: Save Code Coverage Report
|
- name: Save Code Coverage Report
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: code-coverage-report-${{ steps.version.outputs.version }}.zip
|
name: code-coverage-report-${{ steps.version.outputs.long }}.zip
|
||||||
path: code-coverage-report
|
path: code-coverage-report
|
||||||
|
6
.github/workflows/trunk_format_pr.yml
vendored
6
.github/workflows/trunk_format_pr.yml
vendored
@ -22,12 +22,16 @@ jobs:
|
|||||||
- name: Run Trunk Fmt
|
- name: Run Trunk Fmt
|
||||||
run: trunk fmt
|
run: trunk fmt
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
||||||
|
id: version
|
||||||
|
|
||||||
- name: Commit and push changes
|
- name: Commit and push changes
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "github-actions[bot]"
|
git config --global user.name "github-actions[bot]"
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
git add .
|
git add .
|
||||||
git commit -m "Add firmware version ${{ steps.version.outputs.version }}"
|
git commit -m "Add firmware version ${{ steps.version.outputs.long }}"
|
||||||
git push
|
git push
|
||||||
|
|
||||||
- name: Comment on PR
|
- name: Comment on PR
|
||||||
|
1
.github/workflows/update_protobufs.yml
vendored
1
.github/workflows/update_protobufs.yml
vendored
@ -12,6 +12,7 @@ jobs:
|
|||||||
submodules: true
|
submodules: true
|
||||||
|
|
||||||
- name: Update submodule
|
- name: Update submodule
|
||||||
|
if: ${{ github.ref == 'refs/heads/master' }}
|
||||||
run: |
|
run: |
|
||||||
git submodule update --remote protobufs
|
git submodule update --remote protobufs
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ shift "$((OPTIND - 1))"
|
|||||||
if [ -f "${FILENAME}" ] && [ -n "${FILENAME##*"update"*}" ]; then
|
if [ -f "${FILENAME}" ] && [ -n "${FILENAME##*"update"*}" ]; then
|
||||||
echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
|
echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
|
||||||
$ESPTOOL_CMD erase_flash
|
$ESPTOOL_CMD erase_flash
|
||||||
$ESPTOOL_CMD write_flash 0x00 ${FILENAME}
|
$ESPTOOL_CMD write_flash 0x00 "${FILENAME}"
|
||||||
# Account for S3 board's different OTA partition
|
# Account for S3 board's different OTA partition
|
||||||
if [ -n "${FILENAME##*"s3"*}" ] && [ -n "${FILENAME##*"-v3"*}" ] && [ -n "${FILENAME##*"t-deck"*}" ] && [ -n "${FILENAME##*"wireless-paper"*}" ] && [ -n "${FILENAME##*"wireless-tracker"*}" ] && [ -n "${FILENAME##*"station-g2"*}" ] && [ -n "${FILENAME##*"unphone"*}" ]; then
|
if [ -n "${FILENAME##*"s3"*}" ] && [ -n "${FILENAME##*"-v3"*}" ] && [ -n "${FILENAME##*"t-deck"*}" ] && [ -n "${FILENAME##*"wireless-paper"*}" ] && [ -n "${FILENAME##*"wireless-tracker"*}" ] && [ -n "${FILENAME##*"station-g2"*}" ] && [ -n "${FILENAME##*"unphone"*}" ]; then
|
||||||
if [ -n "${FILENAME##*"esp32c3"*}" ]; then
|
if [ -n "${FILENAME##*"esp32c3"*}" ]; then
|
||||||
|
@ -2,6 +2,7 @@ import configparser
|
|||||||
import subprocess
|
import subprocess
|
||||||
import os
|
import os
|
||||||
run_number = os.getenv('GITHUB_RUN_NUMBER', '0')
|
run_number = os.getenv('GITHUB_RUN_NUMBER', '0')
|
||||||
|
build_location = os.getenv('BUILD_LOCATION', 'local')
|
||||||
|
|
||||||
def readProps(prefsLoc):
|
def readProps(prefsLoc):
|
||||||
"""Read the version of our project as a string"""
|
"""Read the version of our project as a string"""
|
||||||
@ -11,8 +12,8 @@ def readProps(prefsLoc):
|
|||||||
version = dict(config.items("VERSION"))
|
version = dict(config.items("VERSION"))
|
||||||
verObj = dict(
|
verObj = dict(
|
||||||
short="{}.{}.{}".format(version["major"], version["minor"], version["build"]),
|
short="{}.{}.{}".format(version["major"], version["minor"], version["build"]),
|
||||||
deb="unset",
|
|
||||||
long="unset",
|
long="unset",
|
||||||
|
deb="unset",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
|
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
|
||||||
@ -30,12 +31,12 @@ def readProps(prefsLoc):
|
|||||||
# # short for 'dirty', we want to keep our verstrings source for protobuf reasons
|
# # short for 'dirty', we want to keep our verstrings source for protobuf reasons
|
||||||
# suffix = sha + "-d"
|
# suffix = sha + "-d"
|
||||||
verObj["long"] = "{}.{}".format(verObj["short"], suffix)
|
verObj["long"] = "{}.{}".format(verObj["short"], suffix)
|
||||||
verObj["deb"] = "{}-{}~ppa{}".format(verObj["short"], run_number, sha)
|
verObj["deb"] = "{}.{}~{}{}".format(verObj["short"], run_number, build_location, sha)
|
||||||
except:
|
except:
|
||||||
# print("Unexpected error:", sys.exc_info()[0])
|
# print("Unexpected error:", sys.exc_info()[0])
|
||||||
# traceback.print_exc()
|
# traceback.print_exc()
|
||||||
verObj["long"] = verObj["short"]
|
verObj["long"] = verObj["short"]
|
||||||
verObj["deb"] = "{}-{}~ppa".format(verObj["short"], run_number)
|
verObj["deb"] = "{}.{}~{}".format(verObj["short"], run_number, build_location)
|
||||||
|
|
||||||
# print("firmware version " + verStr)
|
# print("firmware version " + verStr)
|
||||||
return verObj
|
return verObj
|
||||||
|
2
debian/changelog
vendored
2
debian/changelog
vendored
@ -1,4 +1,4 @@
|
|||||||
meshtasticd (2.5.19) UNRELEASED; urgency=medium
|
meshtasticd (2.5.19.0) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* Initial packaging
|
* Initial packaging
|
||||||
|
|
||||||
|
2
debian/ci_changelog.sh
vendored
2
debian/ci_changelog.sh
vendored
@ -2,6 +2,6 @@
|
|||||||
export DEBEMAIL="github-actions[bot]@users.noreply.github.com"
|
export DEBEMAIL="github-actions[bot]@users.noreply.github.com"
|
||||||
PKG_VERSION=$(python3 bin/buildinfo.py short)
|
PKG_VERSION=$(python3 bin/buildinfo.py short)
|
||||||
|
|
||||||
dch --newversion "$PKG_VERSION-1" \
|
dch --newversion "$PKG_VERSION.0" \
|
||||||
--distribution UNRELEASED \
|
--distribution UNRELEASED \
|
||||||
"GitHub Actions Automatic version bump"
|
"GitHub Actions Automatic version bump"
|
||||||
|
@ -35,7 +35,11 @@ template <typename T, std::size_t N> std::size_t array_count(const T (&)[N])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(NRF52840_XXAA) || defined(NRF52833_XXAA) || defined(ARCH_ESP32) || defined(ARCH_PORTDUINO)
|
#if defined(NRF52840_XXAA) || defined(NRF52833_XXAA) || defined(ARCH_ESP32) || defined(ARCH_PORTDUINO)
|
||||||
|
#if defined(RAK2560)
|
||||||
|
HardwareSerial *GPS::_serial_gps = &Serial2;
|
||||||
|
#else
|
||||||
HardwareSerial *GPS::_serial_gps = &Serial1;
|
HardwareSerial *GPS::_serial_gps = &Serial1;
|
||||||
|
#endif
|
||||||
#elif defined(ARCH_RP2040)
|
#elif defined(ARCH_RP2040)
|
||||||
SerialUART *GPS::_serial_gps = &Serial1;
|
SerialUART *GPS::_serial_gps = &Serial1;
|
||||||
#else
|
#else
|
||||||
|
@ -92,6 +92,7 @@ NRF52Bluetooth *nrf52Bluetooth = nullptr;
|
|||||||
#include "mesh/raspihttp/PiWebServer.h"
|
#include "mesh/raspihttp/PiWebServer.h"
|
||||||
#include "platform/portduino/PortduinoGlue.h"
|
#include "platform/portduino/PortduinoGlue.h"
|
||||||
#include "platform/portduino/USBHal.h"
|
#include "platform/portduino/USBHal.h"
|
||||||
|
#include <cstdlib>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -1159,6 +1160,7 @@ void setup()
|
|||||||
#if __has_include(<ulfius.h>)
|
#if __has_include(<ulfius.h>)
|
||||||
if (settingsMap[webserverport] != -1) {
|
if (settingsMap[webserverport] != -1) {
|
||||||
piwebServerThread = new PiWebServerThread();
|
piwebServerThread = new PiWebServerThread();
|
||||||
|
std::atexit([] { delete piwebServerThread; });
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
initApiServer(TCPPort);
|
initApiServer(TCPPort);
|
||||||
|
@ -297,7 +297,7 @@ uint32_t RadioInterface::getTxDelayMsecWeighted(float snr)
|
|||||||
|
|
||||||
void printPacket(const char *prefix, const meshtastic_MeshPacket *p)
|
void printPacket(const char *prefix, const meshtastic_MeshPacket *p)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_PORT
|
#if defined(DEBUG_PORT) && !defined(DEBUG_MUTE)
|
||||||
std::string out = DEBUG_PORT.mt_sprintf("%s (id=0x%08x fr=0x%08x to=0x%08x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id,
|
std::string out = DEBUG_PORT.mt_sprintf("%s (id=0x%08x fr=0x%08x to=0x%08x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id,
|
||||||
p->from, p->to, p->want_ack, p->hop_limit, p->channel);
|
p->from, p->to, p->want_ack, p->hop_limit, p->channel);
|
||||||
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {
|
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {
|
||||||
|
@ -510,14 +510,13 @@ bool RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
|
|||||||
powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now
|
powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now
|
||||||
startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode)
|
startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode)
|
||||||
} else {
|
} else {
|
||||||
|
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
|
||||||
|
// bits
|
||||||
|
enableInterrupt(isrTxLevel0);
|
||||||
lastTxStart = millis();
|
lastTxStart = millis();
|
||||||
printPacket("Started Tx", txp);
|
printPacket("Started Tx", txp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
|
|
||||||
// bits
|
|
||||||
enableInterrupt(isrTxLevel0);
|
|
||||||
|
|
||||||
return res == RADIOLIB_ERR_NONE;
|
return res == RADIOLIB_ERR_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -187,7 +187,7 @@ ErrorCode Router::sendLocal(meshtastic_MeshPacket *p, RxSource src)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// don't override if a channel was requested and no need to set it when PKI is enforced
|
// don't override if a channel was requested and no need to set it when PKI is enforced
|
||||||
if (!p->channel && !p->pki_encrypted) {
|
if (!p->channel && !p->pki_encrypted && !isBroadcast(p->to)) {
|
||||||
meshtastic_NodeInfoLite *node = nodeDB->getMeshNode(p->to);
|
meshtastic_NodeInfoLite *node = nodeDB->getMeshNode(p->to);
|
||||||
if (node) {
|
if (node) {
|
||||||
p->channel = node->channel;
|
p->channel = node->channel;
|
||||||
|
@ -82,8 +82,6 @@ char contentTypes[][2][32] = {{".txt", "text/plain"}, {".html", "text/html"
|
|||||||
volatile bool isWebServerReady;
|
volatile bool isWebServerReady;
|
||||||
volatile bool isCertReady;
|
volatile bool isCertReady;
|
||||||
|
|
||||||
HttpAPI webAPI;
|
|
||||||
|
|
||||||
PiWebServerThread *piwebServerThread;
|
PiWebServerThread *piwebServerThread;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -247,7 +245,7 @@ int handleAPIv1ToRadio(const struct _u_request *req, struct _u_response *res, vo
|
|||||||
portduinoVFS->mountpoint(configWeb.rootPath);
|
portduinoVFS->mountpoint(configWeb.rootPath);
|
||||||
|
|
||||||
LOG_DEBUG("Received %d bytes from PUT request", s);
|
LOG_DEBUG("Received %d bytes from PUT request", s);
|
||||||
webAPI.handleToRadio(buffer, s);
|
static_cast<HttpAPI *>(user_data)->handleToRadio(buffer, s);
|
||||||
LOG_DEBUG("end web->radio ");
|
LOG_DEBUG("end web->radio ");
|
||||||
return U_CALLBACK_COMPLETE;
|
return U_CALLBACK_COMPLETE;
|
||||||
}
|
}
|
||||||
@ -279,7 +277,7 @@ int handleAPIv1FromRadio(const struct _u_request *req, struct _u_response *res,
|
|||||||
|
|
||||||
if (valueAll == "true") {
|
if (valueAll == "true") {
|
||||||
while (len) {
|
while (len) {
|
||||||
len = webAPI.getFromRadio(txBuf);
|
len = static_cast<HttpAPI *>(user_data)->getFromRadio(txBuf);
|
||||||
ulfius_set_response_properties(res, U_OPT_STATUS, 200, U_OPT_BINARY_BODY, txBuf, len);
|
ulfius_set_response_properties(res, U_OPT_STATUS, 200, U_OPT_BINARY_BODY, txBuf, len);
|
||||||
const char *tmpa = (const char *)txBuf;
|
const char *tmpa = (const char *)txBuf;
|
||||||
ulfius_set_string_body_response(res, 200, tmpa);
|
ulfius_set_string_body_response(res, 200, tmpa);
|
||||||
@ -289,7 +287,7 @@ int handleAPIv1FromRadio(const struct _u_request *req, struct _u_response *res,
|
|||||||
}
|
}
|
||||||
// Otherwise, just return one protobuf
|
// Otherwise, just return one protobuf
|
||||||
} else {
|
} else {
|
||||||
len = webAPI.getFromRadio(txBuf);
|
len = static_cast<HttpAPI *>(user_data)->getFromRadio(txBuf);
|
||||||
const char *tmpa = (const char *)txBuf;
|
const char *tmpa = (const char *)txBuf;
|
||||||
ulfius_set_binary_body_response(res, 200, tmpa, len);
|
ulfius_set_binary_body_response(res, 200, tmpa, len);
|
||||||
// LOG_DEBUG("\n----webAPI response:");
|
// LOG_DEBUG("\n----webAPI response:");
|
||||||
@ -497,10 +495,10 @@ PiWebServerThread::PiWebServerThread()
|
|||||||
u_map_put(instanceWeb.default_headers, "Access-Control-Allow-Origin", "*");
|
u_map_put(instanceWeb.default_headers, "Access-Control-Allow-Origin", "*");
|
||||||
// Maximum body size sent by the client is 1 Kb
|
// Maximum body size sent by the client is 1 Kb
|
||||||
instanceWeb.max_post_body_size = 1024;
|
instanceWeb.max_post_body_size = 1024;
|
||||||
ulfius_add_endpoint_by_val(&instanceWeb, "GET", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, NULL);
|
ulfius_add_endpoint_by_val(&instanceWeb, "GET", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, &webAPI);
|
||||||
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, NULL);
|
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, &webAPI);
|
||||||
ulfius_add_endpoint_by_val(&instanceWeb, "PUT", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, configWeb.rootPath);
|
ulfius_add_endpoint_by_val(&instanceWeb, "PUT", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, &webAPI);
|
||||||
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, NULL);
|
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, &webAPI);
|
||||||
|
|
||||||
// Add callback function to all endpoints for the Web Server
|
// Add callback function to all endpoints for the Web Server
|
||||||
ulfius_add_endpoint_by_val(&instanceWeb, "GET", NULL, "/*", 2, &callback_static_file, &configWeb);
|
ulfius_add_endpoint_by_val(&instanceWeb, "GET", NULL, "/*", 2, &callback_static_file, &configWeb);
|
||||||
@ -525,10 +523,9 @@ PiWebServerThread::~PiWebServerThread()
|
|||||||
u_map_clean(&configWeb.mime_types);
|
u_map_clean(&configWeb.mime_types);
|
||||||
|
|
||||||
ulfius_stop_framework(&instanceWeb);
|
ulfius_stop_framework(&instanceWeb);
|
||||||
ulfius_stop_framework(&instanceWeb);
|
ulfius_clean_instance(&instanceWeb);
|
||||||
free(configWeb.rootPath);
|
free(configWeb.rootPath);
|
||||||
ulfius_clean_instance(&instanceService);
|
free(key_pem);
|
||||||
ulfius_clean_instance(&instanceService);
|
|
||||||
free(cert_pem);
|
free(cert_pem);
|
||||||
LOG_INFO("End framework");
|
LOG_INFO("End framework");
|
||||||
}
|
}
|
||||||
|
@ -23,24 +23,6 @@ struct _file_config {
|
|||||||
char *rootPath;
|
char *rootPath;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PiWebServerThread
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
char *key_pem = NULL;
|
|
||||||
char *cert_pem = NULL;
|
|
||||||
// struct _u_map mime_types;
|
|
||||||
std::string webrootpath;
|
|
||||||
|
|
||||||
public:
|
|
||||||
PiWebServerThread();
|
|
||||||
~PiWebServerThread();
|
|
||||||
int CreateSSLCertificate();
|
|
||||||
int CheckSSLandLoad();
|
|
||||||
uint32_t requestRestart = 0;
|
|
||||||
struct _u_instance instanceWeb;
|
|
||||||
struct _u_instance instanceService;
|
|
||||||
};
|
|
||||||
|
|
||||||
class HttpAPI : public PhoneAPI
|
class HttpAPI : public PhoneAPI
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -55,6 +37,24 @@ class HttpAPI : public PhoneAPI
|
|||||||
virtual bool checkIsConnected() override { return true; } // FIXME, be smarter about this
|
virtual bool checkIsConnected() override { return true; } // FIXME, be smarter about this
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PiWebServerThread
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
char *key_pem = NULL;
|
||||||
|
char *cert_pem = NULL;
|
||||||
|
// struct _u_map mime_types;
|
||||||
|
std::string webrootpath;
|
||||||
|
HttpAPI webAPI;
|
||||||
|
|
||||||
|
public:
|
||||||
|
PiWebServerThread();
|
||||||
|
~PiWebServerThread();
|
||||||
|
int CreateSSLCertificate();
|
||||||
|
int CheckSSLandLoad();
|
||||||
|
uint32_t requestRestart = 0;
|
||||||
|
struct _u_instance instanceWeb;
|
||||||
|
};
|
||||||
|
|
||||||
extern PiWebServerThread *piwebServerThread;
|
extern PiWebServerThread *piwebServerThread;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -131,7 +131,6 @@ void AtakPluginModule::alterReceivedProtobuf(meshtastic_MeshPacket &mp, meshtast
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Decompress for Phone (EUD)
|
// Decompress for Phone (EUD)
|
||||||
auto decompressedCopy = packetPool.allocCopy(mp);
|
|
||||||
auto uncompressed = cloneTAKPacketData(t);
|
auto uncompressed = cloneTAKPacketData(t);
|
||||||
uncompressed.is_compressed = false;
|
uncompressed.is_compressed = false;
|
||||||
if (t->has_contact) {
|
if (t->has_contact) {
|
||||||
@ -188,6 +187,7 @@ void AtakPluginModule::alterReceivedProtobuf(meshtastic_MeshPacket &mp, meshtast
|
|||||||
LOG_DEBUG("Decompressed chat to_callsign: %d bytes", length);
|
LOG_DEBUG("Decompressed chat to_callsign: %d bytes", length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
auto decompressedCopy = packetPool.allocCopy(mp);
|
||||||
decompressedCopy->decoded.payload.size =
|
decompressedCopy->decoded.payload.size =
|
||||||
pb_encode_to_bytes(decompressedCopy->decoded.payload.bytes, sizeof(decompressedCopy->decoded.payload),
|
pb_encode_to_bytes(decompressedCopy->decoded.payload.bytes, sizeof(decompressedCopy->decoded.payload),
|
||||||
meshtastic_TAKPacket_fields, &uncompressed);
|
meshtastic_TAKPacket_fields, &uncompressed);
|
||||||
|
@ -56,18 +56,10 @@ build_src_filter = ${esp32_base.build_src_filter}
|
|||||||
lib_deps = ${esp32_base.lib_deps}
|
lib_deps = ${esp32_base.lib_deps}
|
||||||
lovyan03/LovyanGFX@^1.1.16
|
lovyan03/LovyanGFX@^1.1.16
|
||||||
|
|
||||||
; 3.2" TN TFT ST7789 / XPT2046: https://vi.aliexpress.com/item/1005005933490544.html
|
[mesh_tab_xpt2046]
|
||||||
[env:mesh-tab-3-2-TN-resistive]
|
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_base.build_flags}
|
||||||
-D LGFX_SCREEN_WIDTH=240
|
|
||||||
-D LGFX_SCREEN_HEIGHT=320
|
|
||||||
-D LGFX_PANEL=ST7789
|
|
||||||
-D LGFX_INVERT_COLOR=false
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_ROTATION=3
|
|
||||||
-D LGFX_TOUCH=XPT2046
|
-D LGFX_TOUCH=XPT2046
|
||||||
-D SPI_FREQUENCY=60000000
|
|
||||||
-D LGFX_TOUCH_SPI_FREQ=2500000
|
-D LGFX_TOUCH_SPI_FREQ=2500000
|
||||||
-D LGFX_TOUCH_SPI_HOST=2
|
-D LGFX_TOUCH_SPI_HOST=2
|
||||||
-D LGFX_TOUCH_CS=7
|
-D LGFX_TOUCH_CS=7
|
||||||
@ -78,156 +70,109 @@ build_flags = ${mesh_tab_base.build_flags}
|
|||||||
-D LGFX_TOUCH_X_MAX=3900
|
-D LGFX_TOUCH_X_MAX=3900
|
||||||
-D LGFX_TOUCH_Y_MIN=400
|
-D LGFX_TOUCH_Y_MIN=400
|
||||||
-D LGFX_TOUCH_Y_MAX=3900
|
-D LGFX_TOUCH_Y_MAX=3900
|
||||||
|
|
||||||
|
[mesh_tab_ft5x06]
|
||||||
|
extends = mesh_tab_base
|
||||||
|
build_flags = ${mesh_tab_base.build_flags}
|
||||||
|
-D LGFX_TOUCH=FT5x06
|
||||||
|
-D LGFX_TOUCH_I2C_FREQ=400000
|
||||||
|
-D LGFX_TOUCH_I2C_PORT=0
|
||||||
|
-D LGFX_TOUCH_I2C_ADDR=0x38
|
||||||
|
-D LGFX_TOUCH_I2C_SDA=8
|
||||||
|
-D LGFX_TOUCH_I2C_SCL=9
|
||||||
|
-D LGFX_TOUCH_RST=7
|
||||||
|
|
||||||
|
; 3.2" TN TFT ST7789 / XPT2046: https://vi.aliexpress.com/item/1005005933490544.html
|
||||||
|
[env:mesh-tab-3-2-TN-resistive]
|
||||||
|
extends = mesh_tab_base
|
||||||
|
build_flags = ${mesh_tab_xpt2046.build_flags}
|
||||||
|
-D SPI_FREQUENCY=60000000
|
||||||
|
-D LGFX_SCREEN_WIDTH=240
|
||||||
|
-D LGFX_SCREEN_HEIGHT=320
|
||||||
|
-D LGFX_PANEL=ST7789
|
||||||
|
-D LGFX_INVERT_COLOR=false
|
||||||
|
-D LGFX_ROTATION=3
|
||||||
-D LGFX_TOUCH_ROTATION=4
|
-D LGFX_TOUCH_ROTATION=4
|
||||||
|
|
||||||
; 3.2" IPS TFT ILI9341 / XPT2046: https://www.aliexpress.com/item/1005006258575617.html
|
; 3.2" IPS TFT ILI9341 / XPT2046: https://www.aliexpress.com/item/1005006258575617.html
|
||||||
[env:mesh-tab-3-2-IPS-resistive]
|
[env:mesh-tab-3-2-IPS-resistive]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_xpt2046.build_flags}
|
||||||
|
-D SPI_FREQUENCY=60000000 ; if image is distorted then lower to 40 MHz
|
||||||
-D LGFX_SCREEN_WIDTH=240
|
-D LGFX_SCREEN_WIDTH=240
|
||||||
-D LGFX_SCREEN_HEIGHT=320
|
-D LGFX_SCREEN_HEIGHT=320
|
||||||
-D LGFX_PANEL=ILI9341
|
-D LGFX_PANEL=ILI9341
|
||||||
-D LGFX_INVERT_COLOR=true
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_ROTATION=1
|
-D LGFX_ROTATION=1
|
||||||
-D LGFX_TOUCH=XPT2046
|
|
||||||
-D SPI_FREQUENCY=60000000 ; if image is distorted then lower to 40 MHz
|
|
||||||
-D LGFX_TOUCH_SPI_FREQ=2500000
|
|
||||||
-D LGFX_TOUCH_SPI_HOST=2
|
|
||||||
-D LGFX_TOUCH_CS=7
|
|
||||||
-D LGFX_TOUCH_CLK=12
|
|
||||||
-D LGFX_TOUCH_DO=11
|
|
||||||
-D LGFX_TOUCH_DIN=13
|
|
||||||
-D LGFX_TOUCH_X_MIN=300
|
|
||||||
-D LGFX_TOUCH_X_MAX=3900
|
|
||||||
-D LGFX_TOUCH_Y_MIN=400
|
|
||||||
-D LGFX_TOUCH_Y_MAX=3900
|
|
||||||
-D LGFX_TOUCH_ROTATION=4
|
-D LGFX_TOUCH_ROTATION=4
|
||||||
|
|
||||||
; 3.5" IPS TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/1005006333922639.html
|
; 3.5" IPS TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/1005006333922639.html
|
||||||
[env:mesh-tab-3-5-IPS-resistive]
|
[env:mesh-tab-3-5-IPS-resistive]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_xpt2046.build_flags}
|
||||||
|
-D SPI_FREQUENCY=60000000 ; may go higher upto 40/60/80 MHz
|
||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
-D LGFX_SCREEN_WIDTH=320
|
-D LGFX_SCREEN_WIDTH=320
|
||||||
-D LGFX_SCREEN_HEIGHT=480
|
-D LGFX_SCREEN_HEIGHT=480
|
||||||
-D LGFX_PANEL=ILI9488
|
-D LGFX_PANEL=ILI9488
|
||||||
-D LGFX_INVERT_COLOR=true
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_DLEN_16BITS=false
|
|
||||||
-D LGFX_ROTATION=0
|
-D LGFX_ROTATION=0
|
||||||
-D LGFX_TOUCH=XPT2046
|
|
||||||
-D SPI_FREQUENCY=40000000 ; may go higher upto 40/60/80 MHz
|
|
||||||
-D LGFX_TOUCH_SPI_FREQ=2500000
|
|
||||||
-D LGFX_TOUCH_SPI_HOST=2
|
|
||||||
-D LGFX_TOUCH_CS=7
|
|
||||||
-D LGFX_TOUCH_CLK=12
|
|
||||||
-D LGFX_TOUCH_DO=11
|
|
||||||
-D LGFX_TOUCH_DIN=13
|
|
||||||
-D LGFX_TOUCH_X_MIN=300
|
|
||||||
-D LGFX_TOUCH_X_MAX=3900
|
|
||||||
-D LGFX_TOUCH_Y_MIN=400
|
|
||||||
-D LGFX_TOUCH_Y_MAX=3900
|
|
||||||
-D LGFX_TOUCH_ROTATION=0
|
-D LGFX_TOUCH_ROTATION=0
|
||||||
|
|
||||||
; 3.5" TN TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/32985467436.html
|
; 3.5" TN TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/32985467436.html
|
||||||
[env:mesh-tab-3-5-TN-resistive]
|
[env:mesh-tab-3-5-TN-resistive]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_xpt2046.build_flags}
|
||||||
|
-D SPI_FREQUENCY=60000000
|
||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
-D LGFX_SCREEN_WIDTH=320
|
-D LGFX_SCREEN_WIDTH=320
|
||||||
-D LGFX_SCREEN_HEIGHT=480
|
-D LGFX_SCREEN_HEIGHT=480
|
||||||
-D LGFX_PANEL=HX8357B
|
-D LGFX_PANEL=HX8357B
|
||||||
-D SPI_FREQUENCY=60000000
|
|
||||||
-D LGFX_INVERT_COLOR=false
|
-D LGFX_INVERT_COLOR=false
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_DLEN_16BITS=false
|
|
||||||
-D LGFX_ROTATION=4
|
-D LGFX_ROTATION=4
|
||||||
-D LGFX_TOUCH=XPT2046
|
|
||||||
-D LGFX_TOUCH_SPI_FREQ=2500000
|
|
||||||
-D LGFX_TOUCH_SPI_HOST=2
|
|
||||||
-D LGFX_TOUCH_CS=7
|
|
||||||
-D LGFX_TOUCH_CLK=12
|
|
||||||
-D LGFX_TOUCH_DO=11
|
|
||||||
-D LGFX_TOUCH_DIN=13
|
|
||||||
-D LGFX_TOUCH_X_MIN=300
|
|
||||||
-D LGFX_TOUCH_X_MAX=3900
|
|
||||||
-D LGFX_TOUCH_Y_MIN=400
|
|
||||||
-D LGFX_TOUCH_Y_MAX=3900
|
|
||||||
-D LGFX_TOUCH_ROTATION=2
|
-D LGFX_TOUCH_ROTATION=2
|
||||||
|
|
||||||
; 3.2" IPS TFT ILI9341 / FT6236: https://vi.aliexpress.com/item/1005006624072350.html
|
; 3.2" IPS TFT ILI9341 / FT6236: https://vi.aliexpress.com/item/1005006624072350.html
|
||||||
[env:mesh-tab-3-2-IPS-capacitive]
|
[env:mesh-tab-3-2-IPS-capacitive]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_ft5x06.build_flags}
|
||||||
|
-D SPI_FREQUENCY=75000000 ; may go higher upto 60/80 MHz
|
||||||
-D LGFX_SCREEN_WIDTH=240
|
-D LGFX_SCREEN_WIDTH=240
|
||||||
-D LGFX_SCREEN_HEIGHT=320
|
-D LGFX_SCREEN_HEIGHT=320
|
||||||
-D LGFX_PANEL=ILI9341
|
-D LGFX_PANEL=ILI9341
|
||||||
-D LGFX_INVERT_COLOR=true
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_ROTATION=1
|
-D LGFX_ROTATION=1
|
||||||
-D LGFX_TOUCH=FT5x06
|
-D LGFX_TOUCH_X_MIN=0
|
||||||
-D SPI_FREQUENCY=40000000 ; may go higher upto 60/80 MHz
|
-D LGFX_TOUCH_X_MAX=239
|
||||||
-D LGFX_TOUCH_I2C_PORT=0
|
-D LGFX_TOUCH_Y_MIN=0
|
||||||
-D LGFX_TOUCH_I2C_ADDR=0x38
|
-D LGFX_TOUCH_Y_MAX=319
|
||||||
-D LGFX_TOUCH_I2C_SDA=8
|
-D LGFX_TOUCH_ROTATION=2
|
||||||
-D LGFX_TOUCH_I2C_SCL=9
|
|
||||||
-D LGFX_TOUCH_RST=7
|
; 3.5" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005006893699919.html
|
||||||
|
[env:mesh-tab-3-5-IPS-capacitive]
|
||||||
|
extends = mesh_tab_base
|
||||||
|
build_flags = ${mesh_tab_ft5x06.build_flags}
|
||||||
|
-D SPI_FREQUENCY=75000000 ; may go higher upto 40/60/80 MHz
|
||||||
|
-D DISPLAY_SET_RESOLUTION
|
||||||
|
-D LGFX_SCREEN_WIDTH=320
|
||||||
|
-D LGFX_SCREEN_HEIGHT=480
|
||||||
|
-D LGFX_PANEL=ILI9488
|
||||||
|
-D LGFX_ROTATION=2
|
||||||
-D LGFX_TOUCH_X_MIN=0
|
-D LGFX_TOUCH_X_MIN=0
|
||||||
-D LGFX_TOUCH_X_MAX=319
|
-D LGFX_TOUCH_X_MAX=319
|
||||||
-D LGFX_TOUCH_Y_MIN=0
|
-D LGFX_TOUCH_Y_MIN=0
|
||||||
-D LGFX_TOUCH_Y_MAX=479
|
-D LGFX_TOUCH_Y_MAX=479
|
||||||
-D LGFX_TOUCH_ROTATION=0
|
-D LGFX_TOUCH_ROTATION=0
|
||||||
-D LGFX_TOUCH_I2C_FREQ=400000
|
|
||||||
|
|
||||||
; 3.5" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005006893699919.html
|
|
||||||
[env:mesh-tab-3-5-IPS-capacitive]
|
|
||||||
extends = mesh_tab_base
|
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
|
||||||
-D DISPLAY_SET_RESOLUTION
|
|
||||||
-D LGFX_SCREEN_WIDTH=320
|
|
||||||
-D LGFX_SCREEN_HEIGHT=480
|
|
||||||
-D LGFX_PANEL=ILI9488
|
|
||||||
-D LGFX_INVERT_COLOR=true
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_DLEN_16BITS=false
|
|
||||||
-D LGFX_ROTATION=1
|
|
||||||
-D LGFX_TOUCH=FT5x06
|
|
||||||
-D SPI_FREQUENCY=30000000 ; may go higher upto 40/60/80 MHz
|
|
||||||
-D LGFX_TOUCH_I2C_PORT=0
|
|
||||||
-D LGFX_TOUCH_I2C_ADDR=0x38
|
|
||||||
-D LGFX_TOUCH_I2C_SDA=8
|
|
||||||
-D LGFX_TOUCH_I2C_SCL=9
|
|
||||||
-D LGFX_TOUCH_RST=7
|
|
||||||
-D LGFX_TOUCH_X_MIN=0
|
|
||||||
-D LGFX_TOUCH_X_MAX=319
|
|
||||||
-D LGFX_TOUCH_Y_MIN=0
|
|
||||||
-D LGFX_TOUCH_Y_MAX=479
|
|
||||||
-D LGFX_TOUCH_ROTATION=1
|
|
||||||
-D LGFX_TOUCH_I2C_FREQ=400000
|
|
||||||
|
|
||||||
; 4.0" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005007082906950.html
|
; 4.0" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005007082906950.html
|
||||||
[env:mesh-tab-4-0-IPS-capacitive]
|
[env:mesh-tab-4-0-IPS-capacitive]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
build_flags = ${mesh_tab_base.build_flags}
|
build_flags = ${mesh_tab_ft5x06.build_flags}
|
||||||
|
-D SPI_FREQUENCY=75000000
|
||||||
-D DISPLAY_SET_RESOLUTION
|
-D DISPLAY_SET_RESOLUTION
|
||||||
-D LGFX_SCREEN_WIDTH=320
|
-D LGFX_SCREEN_WIDTH=320
|
||||||
-D LGFX_SCREEN_HEIGHT=480
|
-D LGFX_SCREEN_HEIGHT=480
|
||||||
-D LGFX_PANEL=HX8357B
|
-D LGFX_PANEL=HX8357B
|
||||||
-D LGFX_INVERT_COLOR=true
|
|
||||||
-D LGFX_RGB_ORDER=false
|
|
||||||
-D LGFX_DLEN_16BITS=false
|
|
||||||
-D LGFX_ROTATION=4
|
-D LGFX_ROTATION=4
|
||||||
-D LGFX_TOUCH=FT5x06
|
|
||||||
-D SPI_FREQUENCY=30000000 ; may go higher upto 40/60/80 MHz
|
|
||||||
-D LGFX_TOUCH_I2C_PORT=0
|
|
||||||
-D LGFX_TOUCH_I2C_ADDR=0x38
|
|
||||||
-D LGFX_TOUCH_I2C_SDA=8
|
|
||||||
-D LGFX_TOUCH_I2C_SCL=9
|
|
||||||
-D LGFX_TOUCH_RST=7
|
|
||||||
-D LGFX_TOUCH_X_MIN=0
|
-D LGFX_TOUCH_X_MIN=0
|
||||||
-D LGFX_TOUCH_X_MAX=319
|
-D LGFX_TOUCH_X_MAX=319
|
||||||
-D LGFX_TOUCH_Y_MIN=0
|
-D LGFX_TOUCH_Y_MIN=0
|
||||||
-D LGFX_TOUCH_Y_MAX=479
|
-D LGFX_TOUCH_Y_MAX=479
|
||||||
-D LGFX_TOUCH_ROTATION=1
|
-D LGFX_TOUCH_ROTATION=6
|
||||||
-D LGFX_TOUCH_I2C_FREQ=400000
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; The very slick RAK wireless RAK 4631 / 4630 board - Unified firmware for 5005/19003, with or without OLED RAK 1921
|
; Firmware for the WisMesh HUB RAK2560, including a onewire module to talk to the RAK 9154 solar battery.
|
||||||
[env:rak2560]
|
[env:rak2560]
|
||||||
extends = nrf52840_base
|
extends = nrf52840_base
|
||||||
board = wiscore_rak4631
|
board = wiscore_rak4631
|
||||||
@ -6,17 +6,18 @@ board_check = true
|
|||||||
build_flags = ${nrf52840_base.build_flags} -Ivariants/rak2560 -D RAK_4631
|
build_flags = ${nrf52840_base.build_flags} -Ivariants/rak2560 -D RAK_4631
|
||||||
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard"
|
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m4/fpv4-sp-d16-hard"
|
||||||
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
|
-DGPS_POWER_TOGGLE ; comment this line to disable triple press function on the user button to turn off gps entirely.
|
||||||
-DMESHTASTIC_EXCLUDE_GPS=1
|
-DRADIOLIB_EXCLUDE_SX128X=1
|
||||||
|
-DRADIOLIB_EXCLUDE_SX127X=1
|
||||||
|
-DRADIOLIB_EXCLUDE_LR11X0=1
|
||||||
-DHAS_RAKPROT=1 ; Define if RAk OneWireSerial is used (disables GPS)
|
-DHAS_RAKPROT=1 ; Define if RAk OneWireSerial is used (disables GPS)
|
||||||
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak2560> +<mesh/eth/> +<mesh/api/> +<mqtt/>
|
build_src_filter = ${nrf52_base.build_src_filter} +<../variants/rak2560> +<mesh/api/> +<mqtt/>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
${networking_base.lib_deps}
|
${networking_base.lib_deps}
|
||||||
melopero/Melopero RV3028@^1.1.0
|
melopero/Melopero RV3028@^1.1.0
|
||||||
https://github.com/RAKWireless/RAK13800-W5100S.git#1.0.2
|
|
||||||
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
rakwireless/RAKwireless NCP5623 RGB LED library@^1.0.2
|
||||||
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
beegee-tokyo/RAKwireless RAK12034@^1.0.0
|
||||||
https://github.com/beegee-tokyo/RAK-OneWireSerial.git
|
https://github.com/beegee-tokyo/RAK-OneWireSerial.git#0.0.2
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
;upload_protocol = jlink
|
;upload_protocol = jlink
|
||||||
|
@ -250,8 +250,6 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
|
|
||||||
#define HAS_RTC 1
|
#define HAS_RTC 1
|
||||||
|
|
||||||
#define HAS_ETHERNET 1
|
|
||||||
|
|
||||||
#define RAK_4631 1
|
#define RAK_4631 1
|
||||||
|
|
||||||
#define HALF_UART_PIN PIN_SERIAL1_RX
|
#define HALF_UART_PIN PIN_SERIAL1_RX
|
||||||
@ -265,9 +263,6 @@ SO GPIO 39/TXEN MAY NOT BE DEFINED FOR SUCCESSFUL OPERATION OF THE SX1262 - TG
|
|||||||
#error pin 15 collision
|
#error pin 15 collision
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PIN_ETHERNET_RESET 21
|
|
||||||
#define PIN_ETHERNET_SS PIN_EINK_CS
|
|
||||||
#define ETH_SPI_PORT SPI1
|
|
||||||
#define AQ_SET_PIN 10
|
#define AQ_SET_PIN 10
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -28,6 +28,8 @@ build_flags =
|
|||||||
-DHAL_TIM_MODULE_DISABLED
|
-DHAL_TIM_MODULE_DISABLED
|
||||||
-DHAL_WWDG_MODULE_DISABLED
|
-DHAL_WWDG_MODULE_DISABLED
|
||||||
-DHAL_EXTI_MODULE_DISABLED
|
-DHAL_EXTI_MODULE_DISABLED
|
||||||
|
-DHAL_SAI_MODULE_DISABLED
|
||||||
|
-DHAL_ICACHE_MODULE_DISABLED
|
||||||
-DRADIOLIB_EXCLUDE_SX128X=1
|
-DRADIOLIB_EXCLUDE_SX128X=1
|
||||||
-DRADIOLIB_EXCLUDE_SX127X=1
|
-DRADIOLIB_EXCLUDE_SX127X=1
|
||||||
-DRADIOLIB_EXCLUDE_LR11X0=1
|
-DRADIOLIB_EXCLUDE_LR11X0=1
|
||||||
|
@ -28,6 +28,8 @@ build_flags =
|
|||||||
-DHAL_TIM_MODULE_DISABLED
|
-DHAL_TIM_MODULE_DISABLED
|
||||||
-DHAL_WWDG_MODULE_DISABLED
|
-DHAL_WWDG_MODULE_DISABLED
|
||||||
-DHAL_EXTI_MODULE_DISABLED
|
-DHAL_EXTI_MODULE_DISABLED
|
||||||
|
-DHAL_SAI_MODULE_DISABLED
|
||||||
|
-DHAL_ICACHE_MODULE_DISABLED
|
||||||
-DRADIOLIB_EXCLUDE_SX128X=1
|
-DRADIOLIB_EXCLUDE_SX128X=1
|
||||||
-DRADIOLIB_EXCLUDE_SX127X=1
|
-DRADIOLIB_EXCLUDE_SX127X=1
|
||||||
-DRADIOLIB_EXCLUDE_LR11X0=1
|
-DRADIOLIB_EXCLUDE_LR11X0=1
|
||||||
|
Loading…
Reference in New Issue
Block a user