mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-14 22:07:25 +00:00
Compare commits
21 Commits
BaseUI_Aut
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ded4f57cb7 | ||
|
|
3a0f3520d1 | ||
|
|
daad424806 | ||
|
|
30d6eb01e6 | ||
|
|
cbaa58894f | ||
|
|
1df26c2c5a | ||
|
|
99d9191224 | ||
|
|
3b6ea95375 | ||
|
|
70fa657f36 | ||
|
|
986d70db6a | ||
|
|
405c4f33af | ||
|
|
f4d7dab4ca | ||
|
|
723d8cac79 | ||
|
|
d4045dff2c | ||
|
|
e1605d126f | ||
|
|
e9bdd2b031 | ||
|
|
f805aec867 | ||
|
|
f38b4c1a98 | ||
|
|
c0f60ad664 | ||
|
|
3fabd57381 | ||
|
|
8cb8540ef6 |
4
.github/workflows/build_firmware.yml
vendored
4
.github/workflows/build_firmware.yml
vendored
@@ -91,8 +91,8 @@ jobs:
|
|||||||
if [[ -f "$manifest" ]]; then
|
if [[ -f "$manifest" ]]; then
|
||||||
echo "Updating $manifest with $OTA_FILE (md5: $OTA_MD5, size: $OTA_SIZE)"
|
echo "Updating $manifest with $OTA_FILE (md5: $OTA_MD5, size: $OTA_SIZE)"
|
||||||
# Add OTA entry to files array if not already present
|
# Add OTA entry to files array if not already present
|
||||||
jq --arg name "$OTA_FILE" --arg md5 "$OTA_MD5" --argjson bytes "$OTA_SIZE" \
|
jq --arg name "$OTA_FILE" --arg md5 "$OTA_MD5" --argjson bytes "$OTA_SIZE" --arg part "app1" \
|
||||||
'if .files | map(select(.name == $name)) | length == 0 then .files += [{"name": $name, "md5": $md5, "bytes": $bytes}] else . end' \
|
'if .files | map(select(.name == $name)) | length == 0 then .files += [{"name": $name, "md5": $md5, "bytes": $bytes, "part_name": $part}] else . end' \
|
||||||
"$manifest" > "${manifest}.tmp" && mv "${manifest}.tmp" "$manifest"
|
"$manifest" > "${manifest}.tmp" && mv "${manifest}.tmp" "$manifest"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
31
.github/workflows/main_matrix.yml
vendored
31
.github/workflows/main_matrix.yml
vendored
@@ -201,6 +201,7 @@ jobs:
|
|||||||
./device-*.bat
|
./device-*.bat
|
||||||
./littlefs-*.bin
|
./littlefs-*.bin
|
||||||
./bleota*bin
|
./bleota*bin
|
||||||
|
./mt-*-ota.bin
|
||||||
./Meshtastic_nRF52_factory_erase*.uf2
|
./Meshtastic_nRF52_factory_erase*.uf2
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
|
|
||||||
@@ -293,6 +294,24 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Generate release notes
|
||||||
|
id: release_notes
|
||||||
|
run: |
|
||||||
|
chmod +x ./bin/generate_release_notes.py
|
||||||
|
NOTES=$(./bin/generate_release_notes.py ${{ needs.version.outputs.long }})
|
||||||
|
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "$NOTES" >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
@@ -302,8 +321,7 @@ jobs:
|
|||||||
prerelease: true
|
prerelease: true
|
||||||
name: Meshtastic Firmware ${{ needs.version.outputs.long }} Alpha
|
name: Meshtastic Firmware ${{ needs.version.outputs.long }} Alpha
|
||||||
tag_name: v${{ needs.version.outputs.long }}
|
tag_name: v${{ needs.version.outputs.long }}
|
||||||
body: |
|
body: ${{ steps.release_notes.outputs.notes }}
|
||||||
Autogenerated by github action, developer should edit as required before publishing...
|
|
||||||
|
|
||||||
- name: Download source deb
|
- name: Download source deb
|
||||||
uses: actions/download-artifact@v7
|
uses: actions/download-artifact@v7
|
||||||
@@ -427,6 +445,8 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v6
|
uses: actions/setup-python@v6
|
||||||
@@ -446,6 +466,13 @@ jobs:
|
|||||||
pattern: manifest-${{ needs.version.outputs.long }}
|
pattern: manifest-${{ needs.version.outputs.long }}
|
||||||
path: ./publish
|
path: ./publish
|
||||||
|
|
||||||
|
- name: Generate release notes
|
||||||
|
run: |
|
||||||
|
chmod +x ./bin/generate_release_notes.py
|
||||||
|
./bin/generate_release_notes.py ${{ needs.version.outputs.long }} > ./publish/release_notes.md
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Publish firmware to meshtastic.github.io
|
- name: Publish firmware to meshtastic.github.io
|
||||||
uses: peaceiris/actions-gh-pages@v4
|
uses: peaceiris/actions-gh-pages@v4
|
||||||
env:
|
env:
|
||||||
|
|||||||
31
.github/workflows/release_channels.yml
vendored
31
.github/workflows/release_channels.yml
vendored
@@ -48,6 +48,37 @@ jobs:
|
|||||||
${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
|
publish-release-notes:
|
||||||
|
if: github.event.action == 'published'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get release version
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
# Extract version from tag (e.g., v2.7.15.567b8ea -> 2.7.15.567b8ea)
|
||||||
|
VERSION=${GITHUB_REF#refs/tags/v}
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Get release notes
|
||||||
|
run: |
|
||||||
|
mkdir -p ./publish
|
||||||
|
gh release view ${{ github.event.release.tag_name }} --json body --jq '.body' > ./publish/release_notes.md
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Publish release notes to meshtastic.github.io
|
||||||
|
uses: peaceiris/actions-gh-pages@v4
|
||||||
|
with:
|
||||||
|
deploy_key: ${{ secrets.DIST_PAGES_DEPLOY_KEY }}
|
||||||
|
external_repository: meshtastic/meshtastic.github.io
|
||||||
|
publish_branch: master
|
||||||
|
publish_dir: ./publish
|
||||||
|
destination_dir: firmware-${{ steps.version.outputs.version }}
|
||||||
|
user_name: github-actions[bot]
|
||||||
|
user_email: github-actions[bot]@users.noreply.github.com
|
||||||
|
commit_message: Release notes for ${{ steps.version.outputs.version }}
|
||||||
|
enable_jekyll: true
|
||||||
|
|
||||||
# Create a PR to bump version when a release is Published
|
# Create a PR to bump version when a release is Published
|
||||||
bump-version:
|
bump-version:
|
||||||
if: github.event.action == 'published'
|
if: github.event.action == 'published'
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -48,5 +48,5 @@ arduino-lib-builder*
|
|||||||
dependencies.lock
|
dependencies.lock
|
||||||
idf_component.yml
|
idf_component.yml
|
||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
sdkconfig.*
|
/sdkconfig.*
|
||||||
.dummy/*
|
.dummy/*
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ plugins:
|
|||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- checkov@3.2.497
|
- checkov@3.2.497
|
||||||
- renovate@42.75.0
|
- renovate@42.78.2
|
||||||
- prettier@3.7.4
|
- prettier@3.7.4
|
||||||
- trufflehog@3.92.4
|
- trufflehog@3.92.4
|
||||||
- yamllint@1.37.1
|
- yamllint@1.37.1
|
||||||
|
|||||||
15
bin/config.d/lora-usb-umesh-1262.yaml
Normal file
15
bin/config.d/lora-usb-umesh-1262.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Lora:
|
||||||
|
Module: sx1262
|
||||||
|
CS: 0
|
||||||
|
IRQ: 6
|
||||||
|
Reset: 1
|
||||||
|
Busy: 4
|
||||||
|
RXen: 2
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: ch341
|
||||||
|
USB_PID: 0x5512
|
||||||
|
USB_VID: 0x1A86
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
# USB_Serialnum: 12345678
|
||||||
|
SX126X_MAX_POWER: 30
|
||||||
|
# Reduce output power to improve EMI
|
||||||
15
bin/config.d/lora-usb-umesh-1268.yaml
Normal file
15
bin/config.d/lora-usb-umesh-1268.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Lora:
|
||||||
|
Module: sx1268
|
||||||
|
CS: 0
|
||||||
|
IRQ: 6
|
||||||
|
Reset: 1
|
||||||
|
Busy: 4
|
||||||
|
RXen: 2
|
||||||
|
DIO2_AS_RF_SWITCH: true
|
||||||
|
spidev: ch341
|
||||||
|
USB_PID: 0x5512
|
||||||
|
USB_VID: 0x1A86
|
||||||
|
DIO3_TCXO_VOLTAGE: true
|
||||||
|
# USB_Serialnum: 12345678
|
||||||
|
SX126X_MAX_POWER: 30
|
||||||
|
# Reduce output power to improve EMI
|
||||||
355
bin/generate_release_notes.py
Executable file
355
bin/generate_release_notes.py
Executable file
@@ -0,0 +1,355 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Generate release notes from merged PRs on develop and master branches.
|
||||||
|
Categorizes PRs into Enhancements and Bug Fixes/Maintenance sections.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
def get_last_release_tag():
|
||||||
|
"""Get the most recent release tag."""
|
||||||
|
result = subprocess.run(
|
||||||
|
["git", "describe", "--tags", "--abbrev=0"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
return result.stdout.strip()
|
||||||
|
|
||||||
|
|
||||||
|
def get_tag_date(tag):
|
||||||
|
"""Get the commit date (ISO 8601) of the tag."""
|
||||||
|
result = subprocess.run(
|
||||||
|
["git", "show", "-s", "--format=%cI", tag],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
return result.stdout.strip()
|
||||||
|
|
||||||
|
|
||||||
|
def get_merged_prs_since_tag(tag, branch):
|
||||||
|
"""Get all merged PRs since the given tag on the specified branch."""
|
||||||
|
# Get commits since tag on the branch - look for PR numbers in parentheses
|
||||||
|
result = subprocess.run(
|
||||||
|
[
|
||||||
|
"git",
|
||||||
|
"log",
|
||||||
|
f"{tag}..origin/{branch}",
|
||||||
|
"--oneline",
|
||||||
|
],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
prs = []
|
||||||
|
seen_pr_numbers = set()
|
||||||
|
|
||||||
|
for line in result.stdout.strip().split("\n"):
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Extract PR number from commit message - format: "Title (#1234)"
|
||||||
|
pr_match = re.search(r"\(#(\d+)\)", line)
|
||||||
|
if pr_match:
|
||||||
|
pr_number = pr_match.group(1)
|
||||||
|
if pr_number not in seen_pr_numbers:
|
||||||
|
seen_pr_numbers.add(pr_number)
|
||||||
|
prs.append(pr_number)
|
||||||
|
|
||||||
|
return prs
|
||||||
|
|
||||||
|
|
||||||
|
def get_pr_details(pr_number):
|
||||||
|
"""Get PR details from GitHub API via gh CLI."""
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
[
|
||||||
|
"gh",
|
||||||
|
"pr",
|
||||||
|
"view",
|
||||||
|
pr_number,
|
||||||
|
"--json",
|
||||||
|
"title,author,labels,url",
|
||||||
|
],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
return json.loads(result.stdout)
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def should_exclude_pr(pr_details):
|
||||||
|
"""Check if PR should be excluded from release notes."""
|
||||||
|
if not pr_details:
|
||||||
|
return True
|
||||||
|
|
||||||
|
title = pr_details.get("title", "").lower()
|
||||||
|
|
||||||
|
# Exclude trunk update PRs
|
||||||
|
if "upgrade trunk" in title or "update trunk" in title or "trunk update" in title:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Exclude protobuf update PRs
|
||||||
|
if "update protobufs" in title or "update protobuf" in title:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Exclude automated version bump PRs
|
||||||
|
if "bump release version" in title or "bump version" in title:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def is_dependency_update(pr_details):
|
||||||
|
"""Check if PR is a dependency/chore update."""
|
||||||
|
if not pr_details:
|
||||||
|
return False
|
||||||
|
|
||||||
|
title = pr_details.get("title", "").lower()
|
||||||
|
author = pr_details.get("author", {}).get("login", "").lower()
|
||||||
|
labels = [label.get("name", "").lower() for label in pr_details.get("labels", [])]
|
||||||
|
|
||||||
|
# Check for renovate or dependabot authors
|
||||||
|
if "renovate" in author or "dependabot" in author:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Check for chore(deps) pattern
|
||||||
|
if re.match(r"^chore\(deps\):", title):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Check for digest update patterns
|
||||||
|
if re.match(r".*digest to [a-f0-9]+", title, re.IGNORECASE):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Check for dependency-related labels
|
||||||
|
dependency_labels = ["dependencies", "deps", "renovate"]
|
||||||
|
if any(dep in label for label in labels for dep in dependency_labels):
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def is_enhancement(pr_details):
|
||||||
|
"""Determine if PR is an enhancement based on labels and title."""
|
||||||
|
labels = [label.get("name", "").lower() for label in pr_details.get("labels", [])]
|
||||||
|
|
||||||
|
# Check labels first
|
||||||
|
enhancement_labels = ["enhancement", "feature", "feat", "new feature"]
|
||||||
|
for label in labels:
|
||||||
|
if any(enh in label for enh in enhancement_labels):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Check title prefixes
|
||||||
|
title = pr_details.get("title", "")
|
||||||
|
enhancement_prefixes = ["feat:", "feature:", "add:"]
|
||||||
|
title_lower = title.lower()
|
||||||
|
for prefix in enhancement_prefixes:
|
||||||
|
if title_lower.startswith(prefix) or f" {prefix}" in title_lower:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def clean_title(title):
|
||||||
|
"""Clean up PR title for release notes."""
|
||||||
|
# Remove common prefixes
|
||||||
|
prefixes_to_remove = [
|
||||||
|
r"^fix:\s*",
|
||||||
|
r"^feat:\s*",
|
||||||
|
r"^feature:\s*",
|
||||||
|
r"^bug:\s*",
|
||||||
|
r"^bugfix:\s*",
|
||||||
|
r"^chore:\s*",
|
||||||
|
r"^chore\([^)]+\):\s*",
|
||||||
|
r"^refactor:\s*",
|
||||||
|
r"^docs:\s*",
|
||||||
|
r"^ci:\s*",
|
||||||
|
r"^build:\s*",
|
||||||
|
r"^perf:\s*",
|
||||||
|
r"^style:\s*",
|
||||||
|
r"^test:\s*",
|
||||||
|
]
|
||||||
|
|
||||||
|
cleaned = title
|
||||||
|
for prefix in prefixes_to_remove:
|
||||||
|
cleaned = re.sub(prefix, "", cleaned, flags=re.IGNORECASE)
|
||||||
|
|
||||||
|
# Ensure first letter is capitalized
|
||||||
|
if cleaned:
|
||||||
|
cleaned = cleaned[0].upper() + cleaned[1:]
|
||||||
|
|
||||||
|
return cleaned.strip()
|
||||||
|
|
||||||
|
|
||||||
|
def format_pr_line(pr_details):
|
||||||
|
"""Format a PR as a markdown bullet point."""
|
||||||
|
title = clean_title(pr_details.get("title", "Unknown"))
|
||||||
|
author = pr_details.get("author", {}).get("login", "unknown")
|
||||||
|
url = pr_details.get("url", "")
|
||||||
|
|
||||||
|
return f"- {title} by @{author} in {url}"
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_contributors(pr_details_list, tag, repo="meshtastic/firmware"):
|
||||||
|
"""Find contributors who made their first merged PR before this release.
|
||||||
|
|
||||||
|
GitHub usernames do not necessarily match git commit authors, so we use the
|
||||||
|
GitHub search API via `gh` to see if the user has any merged PRs before the
|
||||||
|
tag date. This mirrors how GitHub's "Generate release notes" feature works.
|
||||||
|
"""
|
||||||
|
|
||||||
|
bot_authors = {"github-actions", "renovate", "dependabot", "app/renovate", "app/github-actions", "app/dependabot"}
|
||||||
|
|
||||||
|
new_contributors = []
|
||||||
|
seen_authors = set()
|
||||||
|
|
||||||
|
try:
|
||||||
|
tag_date = get_tag_date(tag)
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
print(f"Warning: Could not determine tag date for {tag}; skipping new contributor detection", file=sys.stderr)
|
||||||
|
return []
|
||||||
|
|
||||||
|
for pr in pr_details_list:
|
||||||
|
author = pr.get("author", {}).get("login", "")
|
||||||
|
if not author or author in seen_authors:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Skip bots
|
||||||
|
if author.lower() in bot_authors or author.startswith("app/"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
seen_authors.add(author)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Search for merged PRs by this author created before the tag date
|
||||||
|
search_query = f"is:pr author:{author} repo:{repo} closed:<=\"{tag_date}\""
|
||||||
|
search = subprocess.run(
|
||||||
|
[
|
||||||
|
"gh",
|
||||||
|
"search",
|
||||||
|
"issues",
|
||||||
|
"--json",
|
||||||
|
"number,mergedAt,createdAt",
|
||||||
|
"--state",
|
||||||
|
"closed",
|
||||||
|
"--limit",
|
||||||
|
"200",
|
||||||
|
search_query,
|
||||||
|
],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
if search.returncode != 0:
|
||||||
|
# If gh fails, be conservative and skip adding to new contributors
|
||||||
|
print(f"Warning: gh search failed for author {author}: {search.stderr.strip()}", file=sys.stderr)
|
||||||
|
continue
|
||||||
|
|
||||||
|
results = json.loads(search.stdout or "[]")
|
||||||
|
# If any merged PR exists before or on tag date, not a new contributor
|
||||||
|
had_prior_pr = any(item.get("mergedAt") for item in results)
|
||||||
|
|
||||||
|
if not had_prior_pr:
|
||||||
|
new_contributors.append((author, pr.get("url", "")))
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Warning: Could not check contributor history for {author}: {e}", file=sys.stderr)
|
||||||
|
continue
|
||||||
|
|
||||||
|
return new_contributors
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: generate_release_notes.py <new_version>", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
new_version = sys.argv[1]
|
||||||
|
|
||||||
|
# Get last release tag
|
||||||
|
try:
|
||||||
|
last_tag = get_last_release_tag()
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
print("Error: Could not find last release tag", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Collect PRs from both branches
|
||||||
|
all_pr_numbers = set()
|
||||||
|
|
||||||
|
for branch in ["develop", "master"]:
|
||||||
|
try:
|
||||||
|
prs = get_merged_prs_since_tag(last_tag, branch)
|
||||||
|
all_pr_numbers.update(prs)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Warning: Could not get PRs from {branch}: {e}", file=sys.stderr)
|
||||||
|
|
||||||
|
# Get details for all PRs
|
||||||
|
enhancements = []
|
||||||
|
bug_fixes = []
|
||||||
|
dependencies = []
|
||||||
|
all_pr_details = []
|
||||||
|
|
||||||
|
for pr_number in sorted(all_pr_numbers, key=int):
|
||||||
|
details = get_pr_details(pr_number)
|
||||||
|
if details and not should_exclude_pr(details):
|
||||||
|
all_pr_details.append(details)
|
||||||
|
if is_dependency_update(details):
|
||||||
|
dependencies.append(details)
|
||||||
|
elif is_enhancement(details):
|
||||||
|
enhancements.append(details)
|
||||||
|
else:
|
||||||
|
bug_fixes.append(details)
|
||||||
|
|
||||||
|
# Generate release notes
|
||||||
|
output = []
|
||||||
|
|
||||||
|
if enhancements:
|
||||||
|
output.append("## 🚀 Enhancements\n")
|
||||||
|
for pr in enhancements:
|
||||||
|
output.append(format_pr_line(pr))
|
||||||
|
output.append("")
|
||||||
|
|
||||||
|
if bug_fixes:
|
||||||
|
output.append("## 🐛 Bug fixes and maintenance\n")
|
||||||
|
for pr in bug_fixes:
|
||||||
|
output.append(format_pr_line(pr))
|
||||||
|
output.append("")
|
||||||
|
|
||||||
|
if dependencies:
|
||||||
|
output.append("## ⚙️ Dependencies\n")
|
||||||
|
for pr in dependencies:
|
||||||
|
output.append(format_pr_line(pr))
|
||||||
|
output.append("")
|
||||||
|
|
||||||
|
# Find new contributors (GitHub-accurate check using merged PRs before tag date)
|
||||||
|
new_contributors = get_new_contributors(all_pr_details, last_tag)
|
||||||
|
if new_contributors:
|
||||||
|
output.append("## New Contributors\n")
|
||||||
|
for author, url in new_contributors:
|
||||||
|
# Find first PR URL for this contributor
|
||||||
|
first_pr_url = url
|
||||||
|
for pr in all_pr_details:
|
||||||
|
if pr.get("author", {}).get("login") == author:
|
||||||
|
first_pr_url = pr.get("url", url)
|
||||||
|
break
|
||||||
|
output.append(f"- @{author} made their first contribution in {first_pr_url}")
|
||||||
|
output.append("")
|
||||||
|
|
||||||
|
# Add full changelog link
|
||||||
|
output.append(
|
||||||
|
f"**Full Changelog**: https://github.com/meshtastic/firmware/compare/{last_tag}...v{new_version}"
|
||||||
|
)
|
||||||
|
|
||||||
|
print("\n".join(output))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -60,6 +60,14 @@ def manifest_gather(source, target, env):
|
|||||||
board_platform = env.BoardConfig().get("platform")
|
board_platform = env.BoardConfig().get("platform")
|
||||||
board_mcu = env.BoardConfig().get("build.mcu").lower()
|
board_mcu = env.BoardConfig().get("build.mcu").lower()
|
||||||
needs_ota_suffix = board_platform == "nordicnrf52"
|
needs_ota_suffix = board_platform == "nordicnrf52"
|
||||||
|
|
||||||
|
# Mapping of bin files to their target partition names
|
||||||
|
# Maps the filename pattern to the partition name where it should be flashed
|
||||||
|
partition_map = {
|
||||||
|
f"{progname}.bin": "app0", # primary application slot (app0 / OTA_0)
|
||||||
|
lfsbin: "spiffs", # filesystem image flashed to spiffs
|
||||||
|
}
|
||||||
|
|
||||||
check_paths = [
|
check_paths = [
|
||||||
progname,
|
progname,
|
||||||
f"{progname}.elf",
|
f"{progname}.elf",
|
||||||
@@ -85,6 +93,9 @@ def manifest_gather(source, target, env):
|
|||||||
"md5": f.get_content_hash(), # Returns MD5 hash
|
"md5": f.get_content_hash(), # Returns MD5 hash
|
||||||
"bytes": f.get_size() # Returns file size in bytes
|
"bytes": f.get_size() # Returns file size in bytes
|
||||||
}
|
}
|
||||||
|
# Add part_name if this file represents a partition that should be flashed
|
||||||
|
if p in partition_map:
|
||||||
|
d["part_name"] = partition_map[p]
|
||||||
out.append(d)
|
out.append(d)
|
||||||
print(d)
|
print(d)
|
||||||
manifest_write(out, env)
|
manifest_write(out, env)
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ build_flags = -Wno-missing-field-initializers
|
|||||||
-DMESHTASTIC_EXCLUDE_HEALTH_TELEMETRY=1
|
-DMESHTASTIC_EXCLUDE_HEALTH_TELEMETRY=1
|
||||||
-DMESHTASTIC_EXCLUDE_POWERSTRESS=1 ; exclude power stress test module from main firmware
|
-DMESHTASTIC_EXCLUDE_POWERSTRESS=1 ; exclude power stress test module from main firmware
|
||||||
-DMESHTASTIC_EXCLUDE_GENERIC_THREAD_MODULE=1
|
-DMESHTASTIC_EXCLUDE_GENERIC_THREAD_MODULE=1
|
||||||
|
-DMESHTASTIC_EXCLUDE_POWERMON=1
|
||||||
-D MAX_THREADS=40 ; As we've split modules, we have more threads to manage
|
-D MAX_THREADS=40 ; As we've split modules, we have more threads to manage
|
||||||
#-DBUILD_EPOCH=$UNIX_TIME ; set in platformio-custom.py now
|
#-DBUILD_EPOCH=$UNIX_TIME ; set in platformio-custom.py now
|
||||||
#-D OLED_PL=1
|
#-D OLED_PL=1
|
||||||
@@ -113,13 +114,12 @@ lib_deps =
|
|||||||
[radiolib_base]
|
[radiolib_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=custom.pio depName=RadioLib packageName=jgromes/library/RadioLib
|
# renovate: datasource=custom.pio depName=RadioLib packageName=jgromes/library/RadioLib
|
||||||
# jgromes/RadioLib@7.4.0
|
jgromes/RadioLib@7.5.0
|
||||||
https://github.com/jgromes/RadioLib/archive/536c7267362e2c1345be7054ba45e503252975ff.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/272defcb35651461830ebfd1b39c9167c8f49317.zip
|
https://github.com/meshtastic/device-ui/archive/12f8cddc1e2908e1988da21e3500c695668e8d92.zip
|
||||||
|
|
||||||
; Common libs for environmental measurements in telemetry module
|
; Common libs for environmental measurements in telemetry module
|
||||||
[environmental_base]
|
[environmental_base]
|
||||||
|
|||||||
Submodule protobufs updated: aa48faf5b5...61219de748
@@ -41,7 +41,8 @@ extern "C" void logLegacy(const char *level, const char *fmt, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_NETWORKING
|
#if HAS_NETWORKING
|
||||||
|
namespace meshtastic
|
||||||
|
{
|
||||||
Syslog::Syslog(UDP &client)
|
Syslog::Syslog(UDP &client)
|
||||||
{
|
{
|
||||||
this->_client = &client;
|
this->_client = &client;
|
||||||
@@ -195,4 +196,6 @@ inline bool Syslog::_sendLog(uint16_t pri, const char *appName, const char *mess
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}; // namespace meshtastic
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -162,6 +162,8 @@ extern "C" void logLegacy(const char *level, const char *fmt, ...);
|
|||||||
|
|
||||||
#if HAS_NETWORKING
|
#if HAS_NETWORKING
|
||||||
|
|
||||||
|
namespace meshtastic
|
||||||
|
{
|
||||||
class Syslog
|
class Syslog
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -195,4 +197,6 @@ class Syslog
|
|||||||
bool vlogf(uint16_t pri, const char *appName, const char *fmt, va_list args) __attribute__((format(printf, 3, 0)));
|
bool vlogf(uint16_t pri, const char *appName, const char *fmt, va_list args) __attribute__((format(printf, 3, 0)));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}; // namespace meshtastic
|
||||||
|
|
||||||
#endif // HAS_NETWORKING
|
#endif // HAS_NETWORKING
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_NETWORKING
|
#if HAS_NETWORKING
|
||||||
extern Syslog syslog;
|
extern meshtastic::Syslog syslog;
|
||||||
#endif
|
#endif
|
||||||
void RedirectablePrint::rpInit()
|
void RedirectablePrint::rpInit()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ template <typename T> bool LR11x0Interface<T>::reconfigure()
|
|||||||
return RADIOLIB_ERR_NONE;
|
return RADIOLIB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> void INTERRUPT_ATTR LR11x0Interface<T>::disableInterrupt()
|
template <typename T> void LR11x0Interface<T>::disableInterrupt()
|
||||||
{
|
{
|
||||||
lora.clearIrqAction();
|
lora.clearIrqAction();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ bool RF95Interface::init()
|
|||||||
return res == RADIOLIB_ERR_NONE;
|
return res == RADIOLIB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void INTERRUPT_ATTR RF95Interface::disableInterrupt()
|
void RF95Interface::disableInterrupt()
|
||||||
{
|
{
|
||||||
lora->clearDio0Action();
|
lora->clearDio0Action();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ template <typename T> bool SX126xInterface<T>::reconfigure()
|
|||||||
return RADIOLIB_ERR_NONE;
|
return RADIOLIB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> void INTERRUPT_ATTR SX126xInterface<T>::disableInterrupt()
|
template <typename T> void SX126xInterface<T>::disableInterrupt()
|
||||||
{
|
{
|
||||||
lora.clearDio1Action();
|
lora.clearDio1Action();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ template <typename T> bool SX128xInterface<T>::reconfigure()
|
|||||||
return RADIOLIB_ERR_NONE;
|
return RADIOLIB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> void INTERRUPT_ATTR SX128xInterface<T>::disableInterrupt()
|
template <typename T> void SX128xInterface<T>::disableInterrupt()
|
||||||
{
|
{
|
||||||
lora.clearDio1Action();
|
lora.clearDio1Action();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ uint32_t ntp_renew = 0;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
EthernetUDP syslogClient;
|
EthernetUDP syslogClient;
|
||||||
Syslog syslog(syslogClient);
|
meshtastic::Syslog syslog(syslogClient);
|
||||||
|
|
||||||
bool ethStartupComplete = 0;
|
bool ethStartupComplete = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -281,8 +281,6 @@ typedef struct _meshtastic_AdminMessage {
|
|||||||
meshtastic_SharedContact add_contact;
|
meshtastic_SharedContact add_contact;
|
||||||
/* Initiate or respond to a key verification request */
|
/* Initiate or respond to a key verification request */
|
||||||
meshtastic_KeyVerificationAdmin key_verification;
|
meshtastic_KeyVerificationAdmin key_verification;
|
||||||
/* Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) */
|
|
||||||
meshtastic_OTAMode reboot_ota_mode;
|
|
||||||
/* Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */
|
/* Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. */
|
||||||
int32_t factory_reset_device;
|
int32_t factory_reset_device;
|
||||||
/* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
|
/* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
|
||||||
@@ -341,7 +339,6 @@ extern "C" {
|
|||||||
#define meshtastic_AdminMessage_payload_variant_backup_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
#define meshtastic_AdminMessage_payload_variant_backup_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
||||||
#define meshtastic_AdminMessage_payload_variant_restore_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
#define meshtastic_AdminMessage_payload_variant_restore_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
||||||
#define meshtastic_AdminMessage_payload_variant_remove_backup_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
#define meshtastic_AdminMessage_payload_variant_remove_backup_preferences_ENUMTYPE meshtastic_AdminMessage_BackupLocation
|
||||||
#define meshtastic_AdminMessage_payload_variant_reboot_ota_mode_ENUMTYPE meshtastic_OTAMode
|
|
||||||
|
|
||||||
|
|
||||||
#define meshtastic_AdminMessage_OTAEvent_reboot_ota_mode_ENUMTYPE meshtastic_OTAMode
|
#define meshtastic_AdminMessage_OTAEvent_reboot_ota_mode_ENUMTYPE meshtastic_OTAMode
|
||||||
@@ -436,7 +433,6 @@ extern "C" {
|
|||||||
#define meshtastic_AdminMessage_commit_edit_settings_tag 65
|
#define meshtastic_AdminMessage_commit_edit_settings_tag 65
|
||||||
#define meshtastic_AdminMessage_add_contact_tag 66
|
#define meshtastic_AdminMessage_add_contact_tag 66
|
||||||
#define meshtastic_AdminMessage_key_verification_tag 67
|
#define meshtastic_AdminMessage_key_verification_tag 67
|
||||||
#define meshtastic_AdminMessage_reboot_ota_mode_tag 68
|
|
||||||
#define meshtastic_AdminMessage_factory_reset_device_tag 94
|
#define meshtastic_AdminMessage_factory_reset_device_tag 94
|
||||||
#define meshtastic_AdminMessage_reboot_ota_seconds_tag 95
|
#define meshtastic_AdminMessage_reboot_ota_seconds_tag 95
|
||||||
#define meshtastic_AdminMessage_exit_simulator_tag 96
|
#define meshtastic_AdminMessage_exit_simulator_tag 96
|
||||||
@@ -497,7 +493,6 @@ X(a, STATIC, ONEOF, BOOL, (payload_variant,begin_edit_settings,begin_ed
|
|||||||
X(a, STATIC, ONEOF, BOOL, (payload_variant,commit_edit_settings,commit_edit_settings), 65) \
|
X(a, STATIC, ONEOF, BOOL, (payload_variant,commit_edit_settings,commit_edit_settings), 65) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,add_contact,add_contact), 66) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,add_contact,add_contact), 66) \
|
||||||
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,key_verification,key_verification), 67) \
|
X(a, STATIC, ONEOF, MESSAGE, (payload_variant,key_verification,key_verification), 67) \
|
||||||
X(a, STATIC, ONEOF, UENUM, (payload_variant,reboot_ota_mode,reboot_ota_mode), 68) \
|
|
||||||
X(a, STATIC, ONEOF, INT32, (payload_variant,factory_reset_device,factory_reset_device), 94) \
|
X(a, STATIC, ONEOF, INT32, (payload_variant,factory_reset_device,factory_reset_device), 94) \
|
||||||
X(a, STATIC, ONEOF, INT32, (payload_variant,reboot_ota_seconds,reboot_ota_seconds), 95) \
|
X(a, STATIC, ONEOF, INT32, (payload_variant,reboot_ota_seconds,reboot_ota_seconds), 95) \
|
||||||
X(a, STATIC, ONEOF, BOOL, (payload_variant,exit_simulator,exit_simulator), 96) \
|
X(a, STATIC, ONEOF, BOOL, (payload_variant,exit_simulator,exit_simulator), 96) \
|
||||||
|
|||||||
@@ -296,6 +296,8 @@ typedef enum _meshtastic_HardwareModel {
|
|||||||
meshtastic_HardwareModel_THINKNODE_M6 = 120,
|
meshtastic_HardwareModel_THINKNODE_M6 = 120,
|
||||||
/* Elecrow Meshstick 1262 */
|
/* Elecrow Meshstick 1262 */
|
||||||
meshtastic_HardwareModel_MESHSTICK_1262 = 121,
|
meshtastic_HardwareModel_MESHSTICK_1262 = 121,
|
||||||
|
/* LilyGo T-Beam 1W */
|
||||||
|
meshtastic_HardwareModel_TBEAM_1_WATT = 122,
|
||||||
/* ------------------------------------------------------------------------------------------------------------------------------------------
|
/* ------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
|
Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------ */
|
------------------------------------------------------------------------------------------------------------------------------------------ */
|
||||||
@@ -1366,10 +1368,6 @@ extern "C" {
|
|||||||
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_MAX meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF
|
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_MAX meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF
|
||||||
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_ARRAYSIZE ((meshtastic_StoreForwardPlusPlus_SFPP_message_type)(meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF+1))
|
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_ARRAYSIZE ((meshtastic_StoreForwardPlusPlus_SFPP_message_type)(meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF+1))
|
||||||
|
|
||||||
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN meshtastic_StoreForwardPlusPlus_SFPP_message_type_CANON_ANNOUNCE
|
|
||||||
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_MAX meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF
|
|
||||||
#define _meshtastic_StoreForwardPlusPlus_SFPP_message_type_ARRAYSIZE ((meshtastic_StoreForwardPlusPlus_SFPP_message_type)(meshtastic_StoreForwardPlusPlus_SFPP_message_type_LINK_PROVIDE_SECONDHALF+1))
|
|
||||||
|
|
||||||
#define _meshtastic_MeshPacket_Priority_MIN meshtastic_MeshPacket_Priority_UNSET
|
#define _meshtastic_MeshPacket_Priority_MIN meshtastic_MeshPacket_Priority_UNSET
|
||||||
#define _meshtastic_MeshPacket_Priority_MAX meshtastic_MeshPacket_Priority_MAX
|
#define _meshtastic_MeshPacket_Priority_MAX meshtastic_MeshPacket_Priority_MAX
|
||||||
#define _meshtastic_MeshPacket_Priority_ARRAYSIZE ((meshtastic_MeshPacket_Priority)(meshtastic_MeshPacket_Priority_MAX+1))
|
#define _meshtastic_MeshPacket_Priority_ARRAYSIZE ((meshtastic_MeshPacket_Priority)(meshtastic_MeshPacket_Priority_MAX+1))
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ bool needReconnect = true; // If we create our reconnector, run it once at the
|
|||||||
bool isReconnecting = false; // If we are currently reconnecting
|
bool isReconnecting = false; // If we are currently reconnecting
|
||||||
|
|
||||||
WiFiUDP syslogClient;
|
WiFiUDP syslogClient;
|
||||||
Syslog syslog(syslogClient);
|
meshtastic::Syslog syslog(syslogClient);
|
||||||
|
|
||||||
Periodic *wifiReconnect;
|
Periodic *wifiReconnect;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "ProtobufModule.h"
|
#include "ProtobufModule.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#if defined(ARCH_ESP32)
|
#if defined(ARCH_ESP32) && !MESHTASTIC_EXCLUDE_PAXCOUNTER
|
||||||
#include "../mesh/generated/meshtastic/paxcount.pb.h"
|
#include "../mesh/generated/meshtastic/paxcount.pb.h"
|
||||||
#include "NodeDB.h"
|
#include "NodeDB.h"
|
||||||
#include <libpax_api.h>
|
#include <libpax_api.h>
|
||||||
|
|||||||
@@ -313,11 +313,11 @@ class BluetoothPhoneAPI : public PhoneAPI, public concurrency::OSThread
|
|||||||
{
|
{
|
||||||
PhoneAPI::onNowHasData(fromRadioNum);
|
PhoneAPI::onNowHasData(fromRadioNum);
|
||||||
|
|
||||||
|
#ifdef DEBUG_NIMBLE_NOTIFY
|
||||||
|
|
||||||
int currentNotifyCount = notifyCount.fetch_add(1);
|
int currentNotifyCount = notifyCount.fetch_add(1);
|
||||||
|
|
||||||
uint8_t cc = bleServer->getConnectedCount();
|
uint8_t cc = bleServer->getConnectedCount();
|
||||||
|
|
||||||
#ifdef DEBUG_NIMBLE_NOTIFY
|
|
||||||
// This logging slows things down when there are lots of packets going to the phone, like initial connection:
|
// This logging slows things down when there are lots of packets going to the phone, like initial connection:
|
||||||
LOG_DEBUG("BLE notify(%d) fromNum: %d connections: %d", currentNotifyCount, fromRadioNum, cc);
|
LOG_DEBUG("BLE notify(%d) fromNum: %d connections: %d", currentNotifyCount, fromRadioNum, cc);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -195,6 +195,8 @@
|
|||||||
#define HW_VENDOR meshtastic_HardwareModel_LINK_32
|
#define HW_VENDOR meshtastic_HardwareModel_LINK_32
|
||||||
#elif defined(T_DECK_PRO)
|
#elif defined(T_DECK_PRO)
|
||||||
#define HW_VENDOR meshtastic_HardwareModel_T_DECK_PRO
|
#define HW_VENDOR meshtastic_HardwareModel_T_DECK_PRO
|
||||||
|
#elif defined(T_BEAM_1W)
|
||||||
|
#define HW_VENDOR meshtastic_HardwareModel_TBEAM_1_WATT
|
||||||
#elif defined(T_LORA_PAGER)
|
#elif defined(T_LORA_PAGER)
|
||||||
#define HW_VENDOR meshtastic_HardwareModel_T_LORA_PAGER
|
#define HW_VENDOR meshtastic_HardwareModel_T_LORA_PAGER
|
||||||
#elif defined(HELTEC_V4)
|
#elif defined(HELTEC_V4)
|
||||||
|
|||||||
@@ -65,8 +65,6 @@ lib_deps =
|
|||||||
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
|
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
|
||||||
# renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib
|
# renovate: datasource=github-tags depName=XPowersLib packageName=lewisxhe/XPowersLib
|
||||||
https://github.com/lewisxhe/XPowersLib/archive/v0.3.2.zip
|
https://github.com/lewisxhe/XPowersLib/archive/v0.3.2.zip
|
||||||
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
|
||||||
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
|
||||||
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
|
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
|
||||||
rweather/Crypto@0.4.0
|
rweather/Crypto@0.4.0
|
||||||
|
|
||||||
|
|||||||
@@ -6,3 +6,4 @@ custom_esp32_kind = esp32
|
|||||||
|
|
||||||
build_flags =
|
build_flags =
|
||||||
${esp32_common.build_flags}
|
${esp32_common.build_flags}
|
||||||
|
-DMESHTASTIC_EXCLUDE_AUDIO=1
|
||||||
|
|||||||
@@ -4,3 +4,8 @@ custom_esp32_kind = esp32c3
|
|||||||
|
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
monitor_filters = esp32_c3_exception_decoder
|
monitor_filters = esp32_c3_exception_decoder
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${esp32_common.lib_deps}
|
||||||
|
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
||||||
|
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ build_flags =
|
|||||||
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
|
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
|
||||||
-DMESHTASTIC_EXCLUDE_BLUETOOTH
|
-DMESHTASTIC_EXCLUDE_BLUETOOTH
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${esp32_common.lib_deps}
|
||||||
|
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
||||||
|
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
||||||
|
|
||||||
lib_ignore =
|
lib_ignore =
|
||||||
${esp32_common.lib_ignore}
|
${esp32_common.lib_ignore}
|
||||||
NimBLE-Arduino
|
NimBLE-Arduino
|
||||||
|
|||||||
@@ -27,6 +27,6 @@ build_flags =
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
# renovate: datasource=custom.pio depName=PCA9557-arduino packageName=maxpromer/library/PCA9557-arduino
|
# renovate: datasource=custom.pio depName=PCA9557-arduino packageName=maxpromer/library/PCA9557-arduino
|
||||||
maxpromer/PCA9557-arduino@1.0.0
|
maxpromer/PCA9557-arduino@1.0.0
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|
||||||
[env:crowpanel-esp32s3-4-epaper]
|
[env:crowpanel-esp32s3-4-epaper]
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
@@ -56,7 +56,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|
||||||
[env:crowpanel-esp32s3-2-epaper]
|
[env:crowpanel-esp32s3-2-epaper]
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
@@ -86,4 +86,4 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|||||||
@@ -45,10 +45,9 @@ lib_deps = ${esp32s3_base.lib_deps}
|
|||||||
earlephilhower/ESP8266Audio@1.9.9
|
earlephilhower/ESP8266Audio@1.9.9
|
||||||
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
||||||
earlephilhower/ESP8266SAM@1.0.1
|
earlephilhower/ESP8266SAM@1.0.1
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
|
||||||
lovyan03/LovyanGFX@1.2.0 ; note: v1.2.7 breaks the elecrow 7" display functionality
|
|
||||||
# renovate: datasource=custom.pio depName=TCA9534 packageName=hideakitai/library/TCA9534
|
# renovate: datasource=custom.pio depName=TCA9534 packageName=hideakitai/library/TCA9534
|
||||||
hideakitai/TCA9534@0.1.1
|
hideakitai/TCA9534@0.1.1
|
||||||
|
lovyan03/LovyanGFX@1.2.0 ; note: v1.2.7 breaks the elecrow 7" display functionality
|
||||||
|
|
||||||
[crowpanel_small_esp32s3_base] ; 2.4, 2.8, 3.5 inch
|
[crowpanel_small_esp32s3_base] ; 2.4, 2.8, 3.5 inch
|
||||||
extends = crowpanel_base
|
extends = crowpanel_base
|
||||||
|
|||||||
@@ -3,3 +3,8 @@ extends = esp32_common
|
|||||||
custom_esp32_kind = esp32s3
|
custom_esp32_kind = esp32s3
|
||||||
|
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${esp32_common.lib_deps}
|
||||||
|
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
||||||
|
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|
||||||
[env:heltec-vision-master-e213-inkhud]
|
[env:heltec-vision-master-e213-inkhud]
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/448c8538129fde3d02a7cb5e6fc81971ad92547f.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|
||||||
[env:heltec-vision-master-e290-inkhud]
|
[env:heltec-vision-master-e290-inkhud]
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/1655054ba298e0e29fc2044741940f927f9c2a43.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|
||||||
[env:heltec-wireless-paper-inkhud]
|
[env:heltec-wireless-paper-inkhud]
|
||||||
|
|||||||
@@ -26,5 +26,5 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
; LilyGo T-Beam-1W (1 Watt LoRa with external PA)
|
; LilyGo T-Beam-1W (1 Watt LoRa with external PA)
|
||||||
[env:t-beam-1w]
|
[env:t-beam-1w]
|
||||||
|
custom_meshtastic_hw_model = 122
|
||||||
|
custom_meshtastic_hw_model_slug = TBEAM_1_WATT
|
||||||
|
custom_meshtastic_architecture = esp32s3
|
||||||
|
custom_meshtastic_actively_supported = true
|
||||||
|
custom_meshtastic_support_level = 1
|
||||||
|
custom_meshtastic_display_name = LILYGO T-Beam 1W
|
||||||
|
custom_meshtastic_images = tbeam-1w.svg
|
||||||
|
custom_meshtastic_tags = LilyGo
|
||||||
|
|
||||||
extends = esp32s3_base
|
extends = esp32s3_base
|
||||||
board = t-beam-1w
|
board = t-beam-1w
|
||||||
board_build.partitions = default_8MB.csv
|
board_build.partitions = default_8MB.csv
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.4
|
zinggjm/GxEPD2@1.6.5
|
||||||
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
||||||
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
||||||
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|
||||||
[env:tlora-t3s3-epaper-inkhud]
|
[env:tlora-t3s3-epaper-inkhud]
|
||||||
extends = esp32s3_base, inkhud
|
extends = esp32s3_base, inkhud
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ELECROW
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/33db3fa8ee6fc47d160bdb44f8f127c9a9203a10.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
# renovate: datasource=custom.pio depName=nRF52_PWM packageName=khoih-prog/library/nRF52_PWM
|
# renovate: datasource=custom.pio depName=nRF52_PWM packageName=khoih-prog/library/nRF52_PWM
|
||||||
khoih-prog/nRF52_PWM@1.0.1
|
khoih-prog/nRF52_PWM@1.0.1
|
||||||
;upload_protocol = fs
|
;upload_protocol = fs
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|
||||||
[env:heltec-mesh-pocket-5000-inkhud]
|
[env:heltec-mesh-pocket-5000-inkhud]
|
||||||
extends = nrf52840_base, inkhud
|
extends = nrf52840_base, inkhud
|
||||||
@@ -101,7 +101,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/heltec_
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
|
|
||||||
[env:heltec-mesh-pocket-10000-inkhud]
|
[env:heltec-mesh-pocket-10000-inkhud]
|
||||||
extends = nrf52840_base, inkhud
|
extends = nrf52840_base, inkhud
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ lib_deps =
|
|||||||
# renovate: datasource=git-refs depName=NMIoT-meshsolar packageName=https://github.com/NMIoT/meshsolar gitBranch=main
|
# renovate: datasource=git-refs depName=NMIoT-meshsolar packageName=https://github.com/NMIoT/meshsolar gitBranch=main
|
||||||
https://github.com/NMIoT/meshsolar/archive/dfc5330dad443982e6cdd37a61d33fc7252f468b.zip
|
https://github.com/NMIoT/meshsolar/archive/dfc5330dad443982e6cdd37a61d33fc7252f468b.zip
|
||||||
# renovate: datasource=custom.pio depName=ArduinoJson packageName=bblanchon/library/ArduinoJson
|
# renovate: datasource=custom.pio depName=ArduinoJson packageName=bblanchon/library/ArduinoJson
|
||||||
bblanchon/ArduinoJson@6.21.4
|
bblanchon/ArduinoJson@6.21.5
|
||||||
|
|
||||||
[env:heltec-mesh-solar]
|
[env:heltec-mesh-solar]
|
||||||
custom_meshtastic_hw_model = 108
|
custom_meshtastic_hw_model = 108
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/meshlin
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
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)
|
||||||
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ lib_deps =
|
|||||||
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
# renovate: datasource=git-refs depName=RAK12034-BMX160 packageName=https://github.com/RAKWireless/RAK12034-BMX160 gitBranch=main
|
||||||
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
|
https://github.com/RAKWireless/RAK12034-BMX160/archive/dcead07ffa267d3c906e9ca4a1330ab989e957e2.zip
|
||||||
# renovate: datasource=custom.pio depName=ArduinoJson packageName=bblanchon/library/ArduinoJson
|
# renovate: datasource=custom.pio depName=ArduinoJson packageName=bblanchon/library/ArduinoJson
|
||||||
bblanchon/ArduinoJson@6.21.4
|
bblanchon/ArduinoJson@6.21.5
|
||||||
; 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)
|
||||||
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
; Note: as of 6/2013 the serial/bootloader based programming takes approximately 30 seconds
|
||||||
;upload_protocol = jlink
|
;upload_protocol = jlink
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/seeed_w
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/b202ebfec6a4821e098cf7a625ba0f6f2400292d.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
|
||||||
[env:seeed_wio_tracker_L1_eink-inkhud]
|
[env:seeed_wio_tracker_L1_eink-inkhud]
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/t-echo>
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-GxEPD2 packageName=https://github.com/meshtastic/GxEPD2 gitBranch=master
|
||||||
https://github.com/meshtastic/GxEPD2/archive/55f618961db45a23eff0233546430f1e5a80f63a.zip
|
https://github.com/meshtastic/GxEPD2/archive/a05c11c02862624266b61599b0d6ba93e33c6f24.zip
|
||||||
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
||||||
lewisxhe/SensorLib@0.3.3
|
lewisxhe/SensorLib@0.3.3
|
||||||
;upload_protocol = fs
|
;upload_protocol = fs
|
||||||
|
|||||||
Reference in New Issue
Block a user