Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
@@ -11,6 +11,8 @@ jobs:
|
|||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
uses: ./.github/actions/build-simulator
|
uses: ./.github/actions/build-simulator
|
||||||
with:
|
with:
|
||||||
@@ -21,6 +23,8 @@ jobs:
|
|||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: "Build"
|
- name: "Build"
|
||||||
uses: ./.github/actions/build-simulator
|
uses: ./.github/actions/build-simulator
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: "Build SDK"
|
- name: "Build SDK"
|
||||||
uses: ./.github/actions/build-sdk
|
uses: ./.github/actions/build-sdk
|
||||||
with:
|
with:
|
||||||
@@ -66,7 +68,6 @@ jobs:
|
|||||||
{ id: m5stack-cores3, arch: esp32s3 },
|
{ id: m5stack-cores3, arch: esp32s3 },
|
||||||
{ id: m5stack-papers3, arch: esp32s3 },
|
{ id: m5stack-papers3, arch: esp32s3 },
|
||||||
{ id: m5stack-stackchan, arch: esp32s3 },
|
{ id: m5stack-stackchan, arch: esp32s3 },
|
||||||
{ id: m5stack-stickc-plus, arch: esp32 },
|
|
||||||
{ id: m5stack-stickc-plus2, arch: esp32 },
|
{ id: m5stack-stickc-plus2, arch: esp32 },
|
||||||
{ id: m5stack-sticks3, arch: esp32s3 },
|
{ id: m5stack-sticks3, arch: esp32s3 },
|
||||||
{ id: m5stack-tab5, arch: esp32p4 },
|
{ id: m5stack-tab5, arch: esp32p4 },
|
||||||
@@ -82,6 +83,8 @@ jobs:
|
|||||||
needs: [ BuildSdk ]
|
needs: [ BuildSdk ]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: "Build Firmware"
|
- name: "Build Firmware"
|
||||||
uses: ./.github/actions/build-firmware
|
uses: ./.github/actions/build-firmware
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -31,8 +31,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout repo"
|
- name: "Checkout repo"
|
||||||
uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
persist-credentials: false
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: "Install Python Dependencies"
|
- name: "Install Python Dependencies"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
@@ -2,11 +2,9 @@ import subprocess
|
|||||||
from datetime import datetime, UTC
|
from datetime import datetime, UTC
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import configparser
|
|
||||||
from dataclasses import dataclass, asdict
|
from dataclasses import dataclass, asdict
|
||||||
import json
|
import json
|
||||||
import shutil
|
import shutil
|
||||||
from configparser import RawConfigParser
|
|
||||||
|
|
||||||
VERBOSE = False
|
VERBOSE = False
|
||||||
DEVICES_FOLDER = "Devices"
|
DEVICES_FOLDER = "Devices"
|
||||||
@@ -68,32 +66,29 @@ def exit_with_error(message):
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def read_properties_file(path):
|
def read_properties_file(path):
|
||||||
config = configparser.RawConfigParser()
|
properties = {}
|
||||||
# Don't convert keys to lowercase
|
with open(path, "r") as file:
|
||||||
config.optionxform = str
|
for line in file:
|
||||||
config.read(path)
|
stripped = line.strip()
|
||||||
return config
|
if not stripped or stripped.startswith("#"):
|
||||||
|
continue
|
||||||
|
key, sep, value = line.partition("=")
|
||||||
|
if not sep:
|
||||||
|
continue
|
||||||
|
properties[key.strip()] = value.strip()
|
||||||
|
return properties
|
||||||
|
|
||||||
def get_property_or_none(properties: RawConfigParser, group: str, key: str):
|
def get_property_or_none(properties: dict, group: str, key: str):
|
||||||
if group not in properties.sections():
|
return properties.get(f"{group}.{key}")
|
||||||
return None
|
|
||||||
if key not in properties[group].keys():
|
|
||||||
return None
|
|
||||||
return properties[group][key]
|
|
||||||
|
|
||||||
def get_boolean_property_or_false(properties: RawConfigParser, group: str, key: str):
|
def get_boolean_property_or_false(properties: dict, group: str, key: str):
|
||||||
if group not in properties.sections():
|
return properties.get(f"{group}.{key}") == "true"
|
||||||
return False
|
|
||||||
if key not in properties[group].keys():
|
|
||||||
return False
|
|
||||||
return properties[group][key] == "true"
|
|
||||||
|
|
||||||
def get_property_or_exit(properties: RawConfigParser, group: str, key: str):
|
def get_property_or_exit(properties: dict, group: str, key: str):
|
||||||
if group not in properties.sections():
|
full_key = f"{group}.{key}"
|
||||||
exit_with_error(f"Device properties does not contain group: {group}")
|
if full_key not in properties:
|
||||||
if key not in properties[group].keys():
|
exit_with_error(f"Device properties does not contain key: {full_key}")
|
||||||
exit_with_error(f"Device properties does not contain key: {key}")
|
return properties[full_key]
|
||||||
return properties[group][key]
|
|
||||||
|
|
||||||
def read_device_properties(device_id):
|
def read_device_properties(device_id):
|
||||||
mapping_file_path = os.path.join(DEVICES_FOLDER, device_id, "device.properties")
|
mapping_file_path = os.path.join(DEVICES_FOLDER, device_id, "device.properties")
|
||||||
@@ -129,7 +124,7 @@ def to_manifest_chip_name(name):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def process_device(in_path: str, out_path: str, device_directory: str, device_id: str, device_properties: RawConfigParser, version: str):
|
def process_device(in_path: str, out_path: str, device_directory: str, device_id: str, device_properties: dict, version: str):
|
||||||
in_device_path = os.path.join(in_path, device_directory)
|
in_device_path = os.path.join(in_path, device_directory)
|
||||||
in_device_binaries_path = os.path.join(in_device_path, "Binaries")
|
in_device_binaries_path = os.path.join(in_device_path, "Binaries")
|
||||||
if not os.path.isdir(in_device_binaries_path):
|
if not os.path.isdir(in_device_binaries_path):
|
||||||
|
|||||||
Executable
+135
@@ -0,0 +1,135 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Download all artifacts from a GitHub Actions workflow run."""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import zipfile
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
API_URL = "https://api.github.com"
|
||||||
|
|
||||||
|
|
||||||
|
def get_token(cli_token: str | None) -> str:
|
||||||
|
if cli_token:
|
||||||
|
return cli_token
|
||||||
|
env_token = os.environ.get("GITHUB_TOKEN") or os.environ.get("GH_TOKEN")
|
||||||
|
if env_token:
|
||||||
|
return env_token
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
["gh", "auth", "token"], capture_output=True, text=True, check=True
|
||||||
|
)
|
||||||
|
return result.stdout.strip()
|
||||||
|
except (FileNotFoundError, subprocess.CalledProcessError):
|
||||||
|
sys.exit(
|
||||||
|
"No token found. Pass --token, set GITHUB_TOKEN/GH_TOKEN, or run `gh auth login`."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_repo(cli_repo: str | None) -> str:
|
||||||
|
if cli_repo:
|
||||||
|
return cli_repo
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
["git", "remote", "get-url", "origin"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
url = result.stdout.strip()
|
||||||
|
except (FileNotFoundError, subprocess.CalledProcessError):
|
||||||
|
sys.exit("Could not detect repo from git remote. Pass --repo owner/name.")
|
||||||
|
|
||||||
|
# Handle both SSH and HTTPS remote URLs.
|
||||||
|
if url.startswith("git@"):
|
||||||
|
path = url.split(":", 1)[1]
|
||||||
|
else:
|
||||||
|
path = url.split("github.com/", 1)[-1]
|
||||||
|
return path.removesuffix(".git")
|
||||||
|
|
||||||
|
|
||||||
|
def download_artifacts(repo: str, run_id: str, token: str, out_dir: Path):
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"Bearer {token}",
|
||||||
|
"Accept": "application/vnd.github+json",
|
||||||
|
"X-GitHub-Api-Version": "2022-11-28",
|
||||||
|
}
|
||||||
|
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
url = f"{API_URL}/repos/{repo}/actions/runs/{run_id}/artifacts"
|
||||||
|
artifacts = []
|
||||||
|
while url:
|
||||||
|
resp = requests.get(url, headers=headers, params={"per_page": 100})
|
||||||
|
resp.raise_for_status()
|
||||||
|
data = resp.json()
|
||||||
|
artifacts.extend(data["artifacts"])
|
||||||
|
url = resp.links.get("next", {}).get("url")
|
||||||
|
|
||||||
|
if not artifacts:
|
||||||
|
print(f"No artifacts found for run {run_id}.")
|
||||||
|
return
|
||||||
|
|
||||||
|
for artifact in artifacts:
|
||||||
|
name = artifact["name"]
|
||||||
|
if name == "all-artifacts":
|
||||||
|
print(f"Skipping {name}")
|
||||||
|
continue
|
||||||
|
if artifact.get("expired"):
|
||||||
|
print(f"Skipping expired artifact: {name}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
print(f"Downloading {name} ({artifact['size_in_bytes']} bytes)...")
|
||||||
|
download_url = artifact["archive_download_url"]
|
||||||
|
resp = requests.get(download_url, headers=headers, stream=True)
|
||||||
|
resp.raise_for_status()
|
||||||
|
|
||||||
|
zip_path = out_dir / f"{name}.zip"
|
||||||
|
with open(zip_path, "wb") as f:
|
||||||
|
for chunk in resp.iter_content(chunk_size=8192):
|
||||||
|
f.write(chunk)
|
||||||
|
|
||||||
|
if name.endswith(".bin"):
|
||||||
|
with zipfile.ZipFile(zip_path) as zf:
|
||||||
|
zf.extractall(out_dir)
|
||||||
|
zip_path.unlink()
|
||||||
|
print(f" Extracted to {out_dir}")
|
||||||
|
else:
|
||||||
|
print(f" Saved to {zip_path}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument("run_id", help="GitHub Actions run ID")
|
||||||
|
parser.add_argument(
|
||||||
|
"--repo",
|
||||||
|
help="owner/repo (default: detected from git remote 'origin')",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--token",
|
||||||
|
help="GitHub token (default: $GITHUB_TOKEN, $GH_TOKEN, or `gh auth token`)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--out",
|
||||||
|
default="artifacts",
|
||||||
|
help="Output directory (default: ./artifacts)",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
repo = get_repo(args.repo)
|
||||||
|
token = get_token(args.token)
|
||||||
|
out_dir = Path(args.out)
|
||||||
|
|
||||||
|
print(f"Repo: {repo}")
|
||||||
|
print(f"Run ID: {args.run_id}")
|
||||||
|
print(f"Output: {out_dir.resolve()}")
|
||||||
|
|
||||||
|
download_artifacts(repo, args.run_id, token, out_dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Executable
+126
@@ -0,0 +1,126 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Summarize commits between the last 2 pushed git tags into commits.md and pull-requests.md."""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PR_REF_RE = re.compile(r"#(\d+)")
|
||||||
|
|
||||||
|
|
||||||
|
def get_repo(cli_repo: str | None) -> str:
|
||||||
|
if cli_repo:
|
||||||
|
return cli_repo
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
["git", "remote", "get-url", "origin"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
url = result.stdout.strip()
|
||||||
|
except (FileNotFoundError, subprocess.CalledProcessError):
|
||||||
|
sys.exit("Could not detect repo from git remote. Pass --repo owner/name.")
|
||||||
|
|
||||||
|
if url.startswith("git@"):
|
||||||
|
path = url.split(":", 1)[1]
|
||||||
|
else:
|
||||||
|
path = url.split("github.com/", 1)[-1]
|
||||||
|
return path.removesuffix(".git")
|
||||||
|
|
||||||
|
|
||||||
|
def get_last_two_tags() -> tuple[str, str]:
|
||||||
|
result = subprocess.run(
|
||||||
|
["git", "tag", "--sort=-creatordate"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
tags = [t for t in result.stdout.splitlines() if t]
|
||||||
|
if len(tags) < 2:
|
||||||
|
sys.exit(f"Need at least 2 tags, found {len(tags)}.")
|
||||||
|
return tags[1], tags[0] # previous, latest
|
||||||
|
|
||||||
|
|
||||||
|
def get_commits(prev_tag: str, latest_tag: str) -> list[tuple[str, str]]:
|
||||||
|
result = subprocess.run(
|
||||||
|
[
|
||||||
|
"git",
|
||||||
|
"log",
|
||||||
|
"--pretty=format:%H\x1f%s",
|
||||||
|
f"{prev_tag}..{latest_tag}",
|
||||||
|
],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
commits = []
|
||||||
|
for line in result.stdout.splitlines():
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
sha, subject = line.split("\x1f", 1)
|
||||||
|
commits.append((sha, subject))
|
||||||
|
return commits
|
||||||
|
|
||||||
|
|
||||||
|
def write_commits_md(path: Path, repo: str, prev_tag: str, latest_tag: str, commits: list[tuple[str, str]]):
|
||||||
|
lines = [f"# Commits: {prev_tag}..{latest_tag}", ""]
|
||||||
|
for sha, subject in commits:
|
||||||
|
link = f"https://github.com/{repo}/commit/{sha}"
|
||||||
|
lines.append(f"- [{subject}]({link})")
|
||||||
|
path.write_text("\n".join(lines) + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
def write_pull_requests_md(path: Path, repo: str, commits: list[tuple[str, str]]):
|
||||||
|
pr_numbers = []
|
||||||
|
seen = set()
|
||||||
|
for _, subject in commits:
|
||||||
|
for match in PR_REF_RE.finditer(subject):
|
||||||
|
number = match.group(1)
|
||||||
|
if number not in seen:
|
||||||
|
seen.add(number)
|
||||||
|
pr_numbers.append(number)
|
||||||
|
|
||||||
|
lines = ["# Pull Requests", ""]
|
||||||
|
for number in pr_numbers:
|
||||||
|
lines.append(f"- https://github.com/{repo}/pull/{number}")
|
||||||
|
path.write_text("\n".join(lines) + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument(
|
||||||
|
"--repo",
|
||||||
|
help="owner/repo (default: detected from git remote 'origin')",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--out",
|
||||||
|
default=".",
|
||||||
|
help="Output directory for commits.md and pull-requests.md (default: current directory)",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
repo = get_repo(args.repo)
|
||||||
|
prev_tag, latest_tag = get_last_two_tags()
|
||||||
|
commits = get_commits(prev_tag, latest_tag)
|
||||||
|
|
||||||
|
out_dir = Path(args.out)
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
commits_path = out_dir / "release-commits.md"
|
||||||
|
prs_path = out_dir / "release-pull-requests.md"
|
||||||
|
|
||||||
|
write_commits_md(commits_path, repo, prev_tag, latest_tag, commits)
|
||||||
|
write_pull_requests_md(prs_path, repo, commits)
|
||||||
|
|
||||||
|
print(f"Repo: {repo}")
|
||||||
|
print(f"Tags: {prev_tag}..{latest_tag}")
|
||||||
|
print(f"Commits: {len(commits)}")
|
||||||
|
print(f"Wrote {commits_path}")
|
||||||
|
print(f"Wrote {prs_path}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -28,7 +28,6 @@ function(READ_PROPERTIES_TO_MAP PROPERTY_FILE RESULT_VAR)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
file(STRINGS ${PROPERTY_FILE_ABS} lines)
|
file(STRINGS ${PROPERTY_FILE_ABS} lines)
|
||||||
set(current_section "")
|
|
||||||
set(map_content "")
|
set(map_content "")
|
||||||
|
|
||||||
foreach(line IN LISTS lines)
|
foreach(line IN LISTS lines)
|
||||||
@@ -37,9 +36,7 @@ function(READ_PROPERTIES_TO_MAP PROPERTY_FILE RESULT_VAR)
|
|||||||
continue()
|
continue()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (line MATCHES "^\\[.*\\]$")
|
if (line MATCHES "^([^=]+)=(.*)$")
|
||||||
set(current_section "${line}")
|
|
||||||
elseif (line MATCHES "^([^=]+)=(.*)$")
|
|
||||||
set(key "${CMAKE_MATCH_1}")
|
set(key "${CMAKE_MATCH_1}")
|
||||||
set(value "${CMAKE_MATCH_2}")
|
set(value "${CMAKE_MATCH_2}")
|
||||||
string(STRIP "${key}" key)
|
string(STRIP "${key}" key)
|
||||||
@@ -49,7 +46,7 @@ function(READ_PROPERTIES_TO_MAP PROPERTY_FILE RESULT_VAR)
|
|||||||
set(value "${CMAKE_MATCH_1}")
|
set(value "${CMAKE_MATCH_1}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
list(APPEND map_content "${current_section}${key}" "${value}")
|
list(APPEND map_content "${key}" "${value}")
|
||||||
endif ()
|
endif ()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
|||||||
Executable
+84
@@ -0,0 +1,84 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Generate a release summary markdown by combining gh-release-summary.py output with Claude."""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
SCRIPT_DIR = Path(__file__).resolve().parent
|
||||||
|
|
||||||
|
SECTIONS = [
|
||||||
|
"New Devices",
|
||||||
|
"New Features",
|
||||||
|
"New Apps",
|
||||||
|
"Improvements & Fixes",
|
||||||
|
"Other Changes",
|
||||||
|
"TactilitySDK",
|
||||||
|
"Known Issues",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def run_gh_release_summary(out_dir: Path, repo: str | None):
|
||||||
|
cmd = [sys.executable, str(SCRIPT_DIR / "gh-release-summary.py"), "--out", str(out_dir)]
|
||||||
|
if repo:
|
||||||
|
cmd += ["--repo", repo]
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
|
||||||
|
|
||||||
|
def build_prompt() -> str:
|
||||||
|
section_list = "\n".join(f"- {s}" for s in SECTIONS)
|
||||||
|
return (
|
||||||
|
"You are given a list of commits (with GitHub commit links) and a list of pull "
|
||||||
|
"request links from a software release. Write a release summary in Markdown, "
|
||||||
|
"organizing changes into these sections (omit a section if it has no relevant "
|
||||||
|
"changes):\n\n"
|
||||||
|
f"{section_list}\n\n"
|
||||||
|
"Use concise bullet points. Base every bullet strictly on the given commits and "
|
||||||
|
"pull requests, referencing the pull request link where applicable. Output only "
|
||||||
|
"the Markdown, no commentary before or after it."
|
||||||
|
"If a pull request or commit has multiple changes add them as separate entries."
|
||||||
|
"Ignore irrelevant changes: documentation, minor fixes, non-descript fixes, scripts, github workflows."
|
||||||
|
"For 'New Devices': only mention the device name, don't like pull request."
|
||||||
|
"For 'Improvements & Fixes': Avoid non-descript entries, write specifics."
|
||||||
|
"For 'TactilitySDK': Avoid generic changes, be specific. Mention API changes."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def run_claude(commits_md: str, prs_md: str) -> str:
|
||||||
|
prompt = build_prompt()
|
||||||
|
stdin_content = f"## Commits\n\n{commits_md}\n\n## Pull Requests\n\n{prs_md}"
|
||||||
|
result = subprocess.run(
|
||||||
|
["claude", "-p", prompt],
|
||||||
|
input=stdin_content,
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
return result.stdout
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument("--repo", help="owner/repo (default: detected from git remote 'origin')")
|
||||||
|
parser.add_argument("--out", default=".", help="Output directory (default: current directory)")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
out_dir = Path(args.out)
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
run_gh_release_summary(out_dir, args.repo)
|
||||||
|
|
||||||
|
commits_md = (out_dir / "release-commits.md").read_text()
|
||||||
|
prs_md = (out_dir / "release-pull-requests.md").read_text()
|
||||||
|
|
||||||
|
print("Generating release summary via claude...")
|
||||||
|
summary = run_claude(commits_md, prs_md)
|
||||||
|
|
||||||
|
summary_path = out_dir / "release-summary.md"
|
||||||
|
summary_path.write_text(summary)
|
||||||
|
print(f"Wrote {summary_path}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -9,7 +9,8 @@ CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
|
|||||||
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
|
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
|
||||||
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
|
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
|
||||||
# EmbedTLS
|
# EmbedTLS
|
||||||
CONFIG_MBEDTLS_SSL_PROTO_TLS1_3=y
|
# Use TLS 1.2 because 1.3 conflicts with MbedTLS dynamic buffer
|
||||||
|
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
|
||||||
# LVGL
|
# LVGL
|
||||||
CONFIG_LV_USE_USER_DATA=y
|
CONFIG_LV_USE_USER_DATA=y
|
||||||
CONFIG_LV_USE_FS_STDIO=y
|
CONFIG_LV_USE_FS_STDIO=y
|
||||||
@@ -40,3 +41,17 @@ CONFIG_WL_SECTOR_MODE_SAFE=y
|
|||||||
CONFIG_WL_SECTOR_MODE=1
|
CONFIG_WL_SECTOR_MODE=1
|
||||||
# Allow new i2c_master API (used by Tab5Keyboard for LP_I2C_NUM_0) to coexist with legacy i2c driver
|
# Allow new i2c_master API (used by Tab5Keyboard for LP_I2C_NUM_0) to coexist with legacy i2c driver
|
||||||
CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK=y
|
CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK=y
|
||||||
|
# Wi-Fi memory optimizations
|
||||||
|
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=3
|
||||||
|
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=5
|
||||||
|
CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y
|
||||||
|
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0
|
||||||
|
CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=5
|
||||||
|
CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=5
|
||||||
|
CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
|
||||||
|
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
|
||||||
|
CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
|
||||||
|
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||||
|
CONFIG_ESP_WIFI_TX_BA_WIN=5
|
||||||
|
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
|
||||||
|
CONFIG_ESP_WIFI_RX_BA_WIN=5
|
||||||
|
|||||||
@@ -74,8 +74,11 @@ else ()
|
|||||||
message("Building for sim target")
|
message("Building for sim target")
|
||||||
add_compile_definitions(CONFIG_TT_DEVICE_ID="simulator")
|
add_compile_definitions(CONFIG_TT_DEVICE_ID="simulator")
|
||||||
add_compile_definitions(CONFIG_TT_DEVICE_NAME="Simulator")
|
add_compile_definitions(CONFIG_TT_DEVICE_NAME="Simulator")
|
||||||
|
add_compile_definitions(CONFIG_TT_DEVICE_VENDOR="")
|
||||||
|
add_compile_definitions(CONFIG_TT_DEVICE_NAME_SIMPLE="Simulator")
|
||||||
add_compile_definitions(CONFIG_TT_LAUNCHER_APP_ID="Launcher")
|
add_compile_definitions(CONFIG_TT_LAUNCHER_APP_ID="Launcher")
|
||||||
add_compile_definitions(CONFIG_TT_AUTO_START_APP_ID="")
|
add_compile_definitions(CONFIG_TT_AUTO_START_APP_ID="")
|
||||||
|
add_compile_definitions(CONFIG_TT_USER_DATA_LOCATION_INTERNAL)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
project(Tactility)
|
project(Tactility)
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
enableOnBoot=false
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
enableOnBoot=false
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
enableOnBoot=false
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
language=en-US
|
|
||||||
timeFormat24h=true
|
|
||||||
dateFormat=DD/MM/YYYY
|
|
||||||
region=EU
|
|
||||||
timezone=Europe/Amsterdam
|
|
||||||
@@ -485,7 +485,7 @@
|
|||||||
<button class="btn btn-secondary btn-sm" onclick="goUp()" id="upBtn">Up</button>
|
<button class="btn btn-secondary btn-sm" onclick="goUp()" id="upBtn">Up</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="toolbar-sep"></div>
|
<div class="toolbar-sep"></div>
|
||||||
<input type="text" id="pathInput" value="/data" onkeydown="if(event.key==='Enter')refreshFiles()">
|
<input type="text" id="pathInput" value="" onkeydown="if(event.key==='Enter')refreshFiles()">
|
||||||
<button class="btn btn-primary btn-sm" onclick="refreshFiles()">Go</button>
|
<button class="btn btn-primary btn-sm" onclick="refreshFiles()">Go</button>
|
||||||
<div class="toolbar-sep"></div>
|
<div class="toolbar-sep"></div>
|
||||||
<div class="toolbar-group">
|
<div class="toolbar-group">
|
||||||
@@ -739,7 +739,6 @@ function renderDashboard(data) {
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Quick Actions</h2>
|
<h2>Quick Actions</h2>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<button class="btn btn-primary" onclick="syncAssets(this)">Sync Assets</button>
|
|
||||||
${data.features_enabled?.screenshot ? '<button class="btn btn-secondary" onclick="captureScreenshot(this)">Screenshot</button>' : ''}
|
${data.features_enabled?.screenshot ? '<button class="btn btn-secondary" onclick="captureScreenshot(this)">Screenshot</button>' : ''}
|
||||||
<button class="btn btn-danger" onclick="rebootDevice(this)">Reboot</button>
|
<button class="btn btn-danger" onclick="rebootDevice(this)">Reboot</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Tactility Dashboard</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
max-width: 800px;
|
|
||||||
margin: 20px auto;
|
|
||||||
padding: 20px;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.placeholder {
|
|
||||||
background: white;
|
|
||||||
padding: 40px;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
||||||
text-align: center;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
.placeholder h2 {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
.placeholder p {
|
|
||||||
color: #666;
|
|
||||||
line-height: 1.6;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: #007bff;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Tactility Default Dashboard</h1>
|
|
||||||
|
|
||||||
<div class="placeholder">
|
|
||||||
<h2>Version 0 - Default Placeholder</h2>
|
|
||||||
<p>This is the default dashboard bundled with firmware.</p>
|
|
||||||
<p>To customize this interface:</p>
|
|
||||||
<ol style="text-align: left; display: inline-block;">
|
|
||||||
<li>Create your custom dashboard HTML/CSS/JS files</li>
|
|
||||||
<li>Add them to <code>/sdcard/tactility/webserver/</code></li>
|
|
||||||
<li>Create <code>version.json</code> with <code>{"version": 1}</code> or higher</li>
|
|
||||||
<li>Reboot or click "Sync Assets" on the <a href="/">Core Interface</a></li>
|
|
||||||
</ol>
|
|
||||||
<p><strong>Your custom assets will automatically replace this page!</strong></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="placeholder">
|
|
||||||
<p><a href="/">← Back to Core Interface</a></p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 0
|
|
||||||
}
|
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=BigTreeTech
|
||||||
vendor=BigTreeTech
|
general.name=Panda Touch,K Touch
|
||||||
name=Panda Touch,K Touch
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
hardware.usbHostEnabled=true
|
||||||
usbHostEnabled=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=Internal
|
||||||
size=5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=187
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
fontSize=18
|
display.dpi=187
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=18
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=2432S024C
|
||||||
name=2432S024C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.4"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=167
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.4"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=167
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=2432S024R
|
||||||
name=2432S024R
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.4"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=167
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.4"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=167
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=2432S028R
|
||||||
name=2432S028R
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[cdn]
|
display.size=2.8"
|
||||||
warningMessage=There are 3 hardware variants of this board. This build works on the original variant only ("v1").
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
[lvgl]
|
cdn.warningMessage=There are 3 hardware variants of this board. This build works on the original variant only ("v1").
|
||||||
colorDepth=16
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=2432S028R v3
|
||||||
name=2432S028R v3
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[cdn]
|
display.size=2.8"
|
||||||
warningMessage=There are 3 hardware variants of this board. This build only supports board version 3.
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
[lvgl]
|
cdn.warningMessage=There are 3 hardware variants of this board. This build only supports board version 3.
|
||||||
colorDepth=16
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=2432S032C
|
||||||
name=2432S032C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.2"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=125
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=3.2"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=125
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=3248S035C
|
||||||
name=3248S035C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=165
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=3.5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=165
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -12,9 +12,25 @@
|
|||||||
#include <esp_lcd_panel_ops.h>
|
#include <esp_lcd_panel_ops.h>
|
||||||
#include <esp_lcd_panel_io_additions.h>
|
#include <esp_lcd_panel_io_additions.h>
|
||||||
#include <esp_lcd_st7701.h>
|
#include <esp_lcd_st7701.h>
|
||||||
|
#include <esp_rom_gpio.h>
|
||||||
|
#include <soc/spi_periph.h>
|
||||||
|
#include <driver/spi_master.h>
|
||||||
|
|
||||||
static const auto LOGGER = tt::Logger("St7701Display");
|
static const auto LOGGER = tt::Logger("St7701Display");
|
||||||
|
|
||||||
|
// GPIO47/48 are physically shared between this bit-banged 3-wire command bus
|
||||||
|
// and the SD card's real SPI2 bus (no alternate pins exist on this PCB).
|
||||||
|
// esp_lcd_new_panel_io_3wire_spi() reconfigures them as plain GPIO via
|
||||||
|
// gpio_config(), severing their SPI2 matrix routing. Reconnect them here once
|
||||||
|
// the vendor init sequence is done, so SD card reads/writes keep working.
|
||||||
|
// Safe only because nothing else calls into the ST7701 IO handle after boot.
|
||||||
|
static void reclaimSpiPinsForSdCard() {
|
||||||
|
esp_rom_gpio_connect_out_signal(GPIO_NUM_47, spi_periph_signal[SPI2_HOST].spid_out, false, false);
|
||||||
|
esp_rom_gpio_connect_out_signal(GPIO_NUM_48, spi_periph_signal[SPI2_HOST].spiclk_out, false, false);
|
||||||
|
gpio_set_direction(GPIO_NUM_47, GPIO_MODE_OUTPUT);
|
||||||
|
gpio_set_direction(GPIO_NUM_48, GPIO_MODE_OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
static const st7701_lcd_init_cmd_t st7701_lcd_init_cmds[] = {
|
static const st7701_lcd_init_cmd_t st7701_lcd_init_cmds[] = {
|
||||||
// {cmd, { data }, data_size, delay_ms}
|
// {cmd, { data }, data_size, delay_ms}
|
||||||
{0xFF, (uint8_t[]) {0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
|
{0xFF, (uint8_t[]) {0x77, 0x01, 0x00, 0x00, 0x10}, 5, 0},
|
||||||
@@ -181,6 +197,8 @@ bool St7701Display::createPanelHandle(esp_lcd_panel_io_handle_t ioHandle, esp_lc
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reclaimSpiPinsForSdCard();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ static error_t stop() {
|
|||||||
return ERROR_NONE;
|
return ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Module cyd_4848s040c_module = {
|
Module cyd_4848s040c_module = {
|
||||||
.name = "cyd-4848s040c",
|
.name = "cyd-4848s040c",
|
||||||
.start = start,
|
.start = start,
|
||||||
.stop = stop,
|
.stop = stop,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
@@ -27,18 +28,4 @@
|
|||||||
pin-sda = <&gpio0 19 GPIO_FLAG_NONE>;
|
pin-sda = <&gpio0 19 GPIO_FLAG_NONE>;
|
||||||
pin-scl = <&gpio0 45 GPIO_FLAG_NONE>;
|
pin-scl = <&gpio0 45 GPIO_FLAG_NONE>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spi0 {
|
|
||||||
compatible = "espressif,esp32-spi";
|
|
||||||
host = <SPI2_HOST>;
|
|
||||||
cs-gpios = <&gpio0 42 GPIO_FLAG_NONE>;
|
|
||||||
pin-mosi = <&gpio0 47 GPIO_FLAG_NONE>;
|
|
||||||
pin-miso = <&gpio0 41 GPIO_FLAG_NONE>;
|
|
||||||
pin-sclk = <&gpio0 48 GPIO_FLAG_NONE>;
|
|
||||||
|
|
||||||
sdcard@0 {
|
|
||||||
compatible = "espressif,esp32-sdspi";
|
|
||||||
frequency-khz = <20000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,22 +1,19 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=4848S040C
|
||||||
name=4848S040C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=4"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=170
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=4"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=170
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,30 +1,26 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=8048S043C
|
||||||
name=8048S043C
|
general.incubating=false
|
||||||
incubating=false
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=4.3"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=217
|
|
||||||
|
|
||||||
[cdn]
|
display.size=4.3"
|
||||||
infoMessage=
|
display.shape=rectangle
|
||||||
warningMessage=
|
display.dpi=217
|
||||||
|
|
||||||
[lvgl]
|
cdn.infoMessage=
|
||||||
theme=DefaultDark
|
cdn.warningMessage=
|
||||||
colorDepth=16
|
|
||||||
fontSize=18
|
lvgl.theme=DefaultDark
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=18
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=E32R28T
|
||||||
name=E32R28T
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=CYD
|
||||||
vendor=CYD
|
general.name=E32R32P
|
||||||
name=E32R32P
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=125
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=125
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Advance 2.8"
|
||||||
name=CrowPanel Advance 2.8"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Advance 3.5"
|
||||||
name=CrowPanel Advance 3.5"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=165
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=3.5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=165
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Advance 5.0"
|
||||||
name=CrowPanel Advance 5.0"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=187
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
fontSize=18
|
display.dpi=187
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=18
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Basic 2.8"
|
||||||
name=CrowPanel Basic 2.8"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Basic 3.5"
|
||||||
name=CrowPanel Basic 3.5"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=165
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=3.5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=165
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=Elecrow
|
||||||
vendor=Elecrow
|
general.name=CrowPanel Basic 5.0"
|
||||||
name=CrowPanel Basic 5.0"
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=5.0"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=187
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=5.0"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
fontSize=18
|
display.dpi=187
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=18
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
[general]
|
general.vendor=Generic
|
||||||
vendor=Generic
|
general.name=ESP32
|
||||||
name=ESP32
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=8MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
|
storage.userDataLocation=Internal
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
[general]
|
general.vendor=Generic
|
||||||
vendor=Generic
|
general.name=ESP32-C6
|
||||||
name=ESP32-C6
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32C6
|
||||||
target=ESP32C6
|
hardware.flashSize=8MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
|
storage.userDataLocation=Internal
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
[general]
|
general.vendor=Generic
|
||||||
vendor=Generic
|
general.name=ESP32-P4
|
||||||
name=ESP32-P4
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32P4
|
||||||
target=ESP32P4
|
hardware.flashSize=8MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
|
storage.userDataLocation=Internal
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
[general]
|
general.vendor=Generic
|
||||||
vendor=Generic
|
general.name=ESP32-S3
|
||||||
name=ESP32-S3
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
|
storage.userDataLocation=Internal
|
||||||
|
|||||||
@@ -1,33 +1,29 @@
|
|||||||
[general]
|
general.vendor=Guition
|
||||||
vendor=Guition
|
general.name=JC1060P470C-I-W-Y
|
||||||
name=JC1060P470C-I-W-Y
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32P4
|
||||||
target=ESP32P4
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=200M
|
||||||
spiRamSpeed=200M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=7"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=187
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=7"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=187
|
||||||
|
|
||||||
[sdkconfig]
|
lvgl.colorDepth=16
|
||||||
CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
|
|
||||||
CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
sdkconfig.CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
|
||||||
CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
|
sdkconfig.CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
||||||
CONFIG_ESP_HOSTED_ENABLED=y
|
sdkconfig.CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
|
||||||
CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y
|
sdkconfig.CONFIG_ESP_HOSTED_ENABLED=y
|
||||||
CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y
|
sdkconfig.CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARD=y
|
||||||
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
sdkconfig.CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y
|
||||||
CONFIG_ESP_HOSTED_USE_MEMPOOL=n
|
sdkconfig.CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
||||||
|
sdkconfig.CONFIG_ESP_HOSTED_USE_MEMPOOL=n
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
[general]
|
general.vendor=Guition
|
||||||
vendor=Guition
|
general.name=JC2432W328C
|
||||||
name=JC2432W328C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=4MB
|
||||||
flashSize=4MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=Guition
|
||||||
vendor=Guition
|
general.name=JC3248W535C
|
||||||
name=JC3248W535C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=165
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=3.5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=165
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=Guition
|
||||||
vendor=Guition
|
general.name=JC8048W550C
|
||||||
name=JC8048W550C
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=187
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
fontSize=18
|
display.dpi=187
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=18
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,30 +1,26 @@
|
|||||||
[general]
|
general.vendor=Heltec
|
||||||
vendor=Heltec
|
general.name=WiFi LoRa 32 v3
|
||||||
name=WiFi LoRa 32 v3
|
general.incubating=true
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
apps.autoStartAppId=ApWebServer
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=Internal
|
||||||
size=0.96"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=149
|
|
||||||
|
|
||||||
[cdn]
|
display.size=0.96"
|
||||||
infoMessage=Due to the small size of the screen, the icons don't render properly.
|
display.shape=rectangle
|
||||||
|
display.dpi=149
|
||||||
|
|
||||||
[lvgl]
|
cdn.infoMessage=Due to the small size of the screen, the icons don't render properly.
|
||||||
theme=Mono
|
|
||||||
colorDepth=16
|
lvgl.theme=Mono
|
||||||
uiScale=70
|
lvgl.colorDepth=16
|
||||||
uiDensity=compact
|
lvgl.uiScale=70
|
||||||
|
lvgl.uiDensity=compact
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay() {
|
|||||||
.backlightDutyFunction = driver::pwmbacklight::setBacklightDuty,
|
.backlightDutyFunction = driver::pwmbacklight::setBacklightDuty,
|
||||||
.resetPin = GPIO_NUM_NC,
|
.resetPin = GPIO_NUM_NC,
|
||||||
.lvglSwapBytes = false,
|
.lvglSwapBytes = false,
|
||||||
.buffSpiram = true
|
.buffSpiram = false // Enabling leads to crashes when refreshing App Hub list
|
||||||
};
|
};
|
||||||
|
|
||||||
auto spi_configuration = std::make_shared<St7789Display::SpiConfiguration>(St7789Display::SpiConfiguration {
|
auto spi_configuration = std::make_shared<St7789Display::SpiConfiguration>(St7789Display::SpiConfiguration {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ constexpr auto LCD_PIN_CS = GPIO_NUM_12;
|
|||||||
constexpr auto LCD_PIN_DC = GPIO_NUM_11; // RS
|
constexpr auto LCD_PIN_DC = GPIO_NUM_11; // RS
|
||||||
constexpr auto LCD_HORIZONTAL_RESOLUTION = 320;
|
constexpr auto LCD_HORIZONTAL_RESOLUTION = 320;
|
||||||
constexpr auto LCD_VERTICAL_RESOLUTION = 240;
|
constexpr auto LCD_VERTICAL_RESOLUTION = 240;
|
||||||
constexpr auto LCD_BUFFER_HEIGHT = (LCD_VERTICAL_RESOLUTION / 3);
|
constexpr auto LCD_BUFFER_HEIGHT = (LCD_VERTICAL_RESOLUTION / 10);
|
||||||
constexpr auto LCD_BUFFER_SIZE = (LCD_HORIZONTAL_RESOLUTION * LCD_BUFFER_HEIGHT);
|
constexpr auto LCD_BUFFER_SIZE = (LCD_HORIZONTAL_RESOLUTION * LCD_BUFFER_HEIGHT);
|
||||||
constexpr auto LCD_SPI_TRANSFER_SIZE_LIMIT = LCD_BUFFER_SIZE * LV_COLOR_DEPTH / 8;
|
constexpr auto LCD_SPI_TRANSFER_SIZE_LIMIT = LCD_BUFFER_SIZE * LV_COLOR_DEPTH / 8;
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +1,23 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-Deck,T-Deck Plus
|
||||||
name=T-Deck,T-Deck Plus
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=143
|
|
||||||
|
|
||||||
[cdn]
|
display.size=2.8"
|
||||||
infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
display.shape=rectangle
|
||||||
|
display.dpi=143
|
||||||
|
|
||||||
[lvgl]
|
cdn.infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
||||||
colorDepth=16
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-Display S3
|
||||||
name=T-Display S3
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
apps.autoStartAppId=ApWebServer
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=Internal
|
||||||
size=1.9"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=191
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=1.9"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=191
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ constexpr auto LCD_PIN_RESET = GPIO_NUM_23;
|
|||||||
constexpr auto LCD_PIN_BACKLIGHT = GPIO_NUM_4;
|
constexpr auto LCD_PIN_BACKLIGHT = GPIO_NUM_4;
|
||||||
constexpr auto LCD_HORIZONTAL_RESOLUTION = 135;
|
constexpr auto LCD_HORIZONTAL_RESOLUTION = 135;
|
||||||
constexpr auto LCD_VERTICAL_RESOLUTION = 240;
|
constexpr auto LCD_VERTICAL_RESOLUTION = 240;
|
||||||
constexpr auto LCD_BUFFER_HEIGHT = LCD_VERTICAL_RESOLUTION / 3;
|
constexpr auto LCD_BUFFER_HEIGHT = LCD_VERTICAL_RESOLUTION / 6;
|
||||||
constexpr auto LCD_BUFFER_SIZE = LCD_HORIZONTAL_RESOLUTION * LCD_BUFFER_HEIGHT;
|
constexpr auto LCD_BUFFER_SIZE = LCD_HORIZONTAL_RESOLUTION * LCD_BUFFER_HEIGHT;
|
||||||
|
|
||||||
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay();
|
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay();
|
||||||
|
|||||||
@@ -1,23 +1,20 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-Display
|
||||||
name=T-Display
|
general.incubating=true
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
apps.autoStartAppId=ApWebServer
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=Internal
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=242
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=1.14"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
uiDensity=compact
|
display.dpi=242
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.uiDensity=compact
|
||||||
|
|||||||
@@ -1,26 +1,23 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-Dongle S3
|
||||||
name=T-Dongle S3
|
general.incubating=true
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
apps.autoStartAppId=ApWebServer
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=0.96"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=186
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=0.96"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
uiDensity=compact
|
display.dpi=186
|
||||||
fontSize=10
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.uiDensity=compact
|
||||||
|
lvgl.fontSize=10
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-HMI
|
||||||
name=T-HMI
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.8"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=125
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.8"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=125
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,26 +1,23 @@
|
|||||||
[general]
|
general.vendor=LilyGO
|
||||||
vendor=LilyGO
|
general.name=T-Lora Pager
|
||||||
name=T-Lora Pager
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.flashMode=DIO
|
||||||
flashMode=DIO
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=AUTO
|
||||||
spiRamMode=AUTO
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=40M
|
||||||
esptoolFlashFreq=40M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2.33"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=227
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2.33"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
dpi=150
|
display.dpi=227
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.dpi=150
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=Cardputer Adv
|
||||||
name=Cardputer Adv
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
||||||
dpi=139
|
display.dpi=139
|
||||||
|
|
||||||
[lvgl]
|
lvgl.colorDepth=16
|
||||||
colorDepth=16
|
lvgl.uiDensity=compact
|
||||||
uiDensity=compact
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=Cardputer,Cardputer v1.1
|
||||||
name=Cardputer,Cardputer v1.1
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=false
|
||||||
spiRam=false
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
||||||
dpi=139
|
display.dpi=139
|
||||||
|
|
||||||
[lvgl]
|
lvgl.colorDepth=16
|
||||||
colorDepth=16
|
lvgl.uiDensity=compact
|
||||||
uiDensity=compact
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,25 +1,21 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=Core2
|
||||||
name=Core2
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=QUAD
|
||||||
spiRamMode=QUAD
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=200
|
|
||||||
|
|
||||||
[cdn]
|
display.size=2"
|
||||||
warningMessage=This board implementation concerns the original Core2 hardware and **not** the v1.1 variant
|
display.shape=rectangle
|
||||||
|
display.dpi=200
|
||||||
|
|
||||||
[lvgl]
|
cdn.warningMessage=This board implementation concerns the original Core2 hardware and **not** the v1.1 variant
|
||||||
colorDepth=16
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=CoreS3
|
||||||
name=CoreS3
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=QUAD
|
||||||
spiRamMode=QUAD
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=200
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=200
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,32 +1,26 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=PaperS3
|
||||||
name=PaperS3
|
general.incubating=true
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=esp32s3
|
||||||
target=esp32s3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OPI
|
||||||
spiRamMode=OPI
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=4.7"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=235
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=4.7"
|
||||||
colorDepth=8
|
display.shape=rectangle
|
||||||
fontSize=24
|
display.dpi=235
|
||||||
theme=Mono
|
|
||||||
|
|
||||||
[sdkconfig]
|
|
||||||
CONFIG_EPD_DISPLAY_TYPE_ED047TC2=y
|
|
||||||
|
|
||||||
|
lvgl.colorDepth=8
|
||||||
|
lvgl.fontSize=24
|
||||||
|
lvgl.theme=Mono
|
||||||
|
|
||||||
|
sdkconfig.CONFIG_EPD_DISPLAY_TYPE_ED047TC2=y
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=StackChan
|
||||||
name=StackChan
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=QUAD
|
||||||
spiRamMode=QUAD
|
hardware.spiRamSpeed=120M
|
||||||
spiRamSpeed=120M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.esptoolFlashFreq=120M
|
||||||
esptoolFlashFreq=120M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=2"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=200
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=2"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
|
display.dpi=200
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
file(GLOB_RECURSE SOURCE_FILES Source/*.c*)
|
|
||||||
|
|
||||||
idf_component_register(
|
|
||||||
SRCS ${SOURCE_FILES}
|
|
||||||
INCLUDE_DIRS "Source"
|
|
||||||
REQUIRES Tactility esp_lvgl_port esp_lcd AXP192 ST7789 ButtonControl
|
|
||||||
)
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#include "devices/Display.h"
|
|
||||||
#include "devices/Power.h"
|
|
||||||
|
|
||||||
#include <Tactility/hal/Configuration.h>
|
|
||||||
#include <ButtonControl.h>
|
|
||||||
|
|
||||||
using namespace tt::hal;
|
|
||||||
|
|
||||||
static bool initBoot() {
|
|
||||||
// CH552 applies 4 V to GPIO 0, which reduces Wi-Fi sensitivity
|
|
||||||
// Setting output to high adds a bias of 3.3 V and suppresses over-voltage:
|
|
||||||
gpio::configure(0, gpio::Mode::Output, false, false);
|
|
||||||
gpio::setLevel(0, true);
|
|
||||||
|
|
||||||
return initAxp();
|
|
||||||
}
|
|
||||||
|
|
||||||
static DeviceVector createDevices() {
|
|
||||||
return {
|
|
||||||
getAxp192(),
|
|
||||||
ButtonControl::createTwoButtonControl(37, 39),
|
|
||||||
createDisplay()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
extern const Configuration hardwareConfiguration = {
|
|
||||||
.initBoot = initBoot,
|
|
||||||
.createDevices = createDevices
|
|
||||||
};
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#include "Display.h"
|
|
||||||
#include "Power.h"
|
|
||||||
|
|
||||||
#include <Tactility/Logger.h>
|
|
||||||
|
|
||||||
#include <St7789Display.h>
|
|
||||||
#include <bitset>
|
|
||||||
|
|
||||||
static const auto LOGGER = tt::Logger("StickCPlus");
|
|
||||||
|
|
||||||
static void setBacklightOn(bool on) {
|
|
||||||
const auto axp = getAxp192();
|
|
||||||
const auto* driver = axp->getAxp192();
|
|
||||||
uint8_t state;
|
|
||||||
if (axp192_read(driver, AXP192_DCDC13_LDO23_CONTROL, &state) != AXP192_OK) {
|
|
||||||
LOGGER.info("Failed to read LCD brightness state");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::bitset<8> new_state = state;
|
|
||||||
if (new_state[2] != on) {
|
|
||||||
new_state[2] = on;
|
|
||||||
const auto new_state_long = new_state.to_ulong();
|
|
||||||
axp192_write(driver, AXP192_DCDC13_LDO23_CONTROL, static_cast<uint8_t>(new_state_long)); // Display on/off
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void setBrightness(uint8_t brightness) {
|
|
||||||
const auto axp = getAxp192();
|
|
||||||
if (brightness)
|
|
||||||
{
|
|
||||||
brightness = (((brightness >> 1) + 8) / 13) + 5;
|
|
||||||
setBacklightOn(true);
|
|
||||||
axp192_write(axp->getAxp192(), AXP192_LDO23_VOLTAGE, brightness << 4); // Display brightness
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setBacklightOn(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay() {
|
|
||||||
St7789Display::Configuration panel_configuration = {
|
|
||||||
.horizontalResolution = LCD_HORIZONTAL_RESOLUTION,
|
|
||||||
.verticalResolution = LCD_VERTICAL_RESOLUTION,
|
|
||||||
.gapX = 52,
|
|
||||||
.gapY = 40,
|
|
||||||
.swapXY = false,
|
|
||||||
.mirrorX = false,
|
|
||||||
.mirrorY = false,
|
|
||||||
.invertColor = true,
|
|
||||||
.bufferSize = LCD_BUFFER_SIZE,
|
|
||||||
.touch = nullptr,
|
|
||||||
.backlightDutyFunction = setBrightness,
|
|
||||||
.resetPin = LCD_PIN_RESET,
|
|
||||||
.lvglSwapBytes = false
|
|
||||||
};
|
|
||||||
|
|
||||||
auto spi_configuration = std::make_shared<St7789Display::SpiConfiguration>(St7789Display::SpiConfiguration {
|
|
||||||
.spiHostDevice = LCD_SPI_HOST,
|
|
||||||
.csPin = LCD_PIN_CS,
|
|
||||||
.dcPin = LCD_PIN_DC,
|
|
||||||
.pixelClockFrequency = 40'000'000,
|
|
||||||
.transactionQueueDepth = 10
|
|
||||||
});
|
|
||||||
|
|
||||||
return std::make_shared<St7789Display>(panel_configuration, spi_configuration);
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <Tactility/hal/display/DisplayDevice.h>
|
|
||||||
#include <memory>
|
|
||||||
#include <driver/gpio.h>
|
|
||||||
#include <driver/spi_common.h>
|
|
||||||
|
|
||||||
constexpr auto LCD_SPI_HOST = SPI2_HOST;
|
|
||||||
constexpr auto LCD_PIN_CS = GPIO_NUM_5;
|
|
||||||
constexpr auto LCD_PIN_DC = GPIO_NUM_23;
|
|
||||||
constexpr auto LCD_PIN_RESET = GPIO_NUM_18;
|
|
||||||
constexpr auto LCD_HORIZONTAL_RESOLUTION = 135;
|
|
||||||
constexpr auto LCD_VERTICAL_RESOLUTION = 240;
|
|
||||||
constexpr auto LCD_BUFFER_HEIGHT = LCD_VERTICAL_RESOLUTION / 3;
|
|
||||||
constexpr auto LCD_BUFFER_SIZE = LCD_HORIZONTAL_RESOLUTION * LCD_BUFFER_HEIGHT;
|
|
||||||
constexpr auto LCD_SPI_TRANSFER_SIZE_LIMIT = LCD_BUFFER_SIZE * LV_COLOR_DEPTH / 8;
|
|
||||||
|
|
||||||
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay();
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#include <Axp192.h>
|
|
||||||
#include <tactility/device.h>
|
|
||||||
|
|
||||||
static std::shared_ptr<Axp192> axp192 = nullptr;
|
|
||||||
|
|
||||||
std::shared_ptr<Axp192> createAxp192() {
|
|
||||||
assert(axp192 == nullptr);
|
|
||||||
auto configuration = std::make_unique<Axp192::Configuration>(device_find_by_name("i2c_internal"));
|
|
||||||
axp192 = std::make_shared<Axp192>(std::move(configuration));
|
|
||||||
return axp192;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<Axp192> getAxp192() {
|
|
||||||
assert(axp192 != nullptr);
|
|
||||||
return axp192;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool initAxp() {
|
|
||||||
const auto axp = createAxp192();
|
|
||||||
return axp->init([](auto* driver) {
|
|
||||||
// Reference: https://github.com/pr3y/Bruce/blob/main/lib/utility/AXP192.cpp
|
|
||||||
axp192_ioctl(driver, AXP192_LDO23_VOLTAGE, 3300); // LCD backlight
|
|
||||||
axp192_ioctl(driver, AXP192_ADC_ENABLE_1, 0xff); // Set all ADC enabled
|
|
||||||
axp192_ioctl(driver, AXP192_CHARGE_CONTROL_1, 0xc0); // Battery charging at 4.2 V and 100 mA
|
|
||||||
axp192_ioctl(driver, AXP192_ADC_ENABLE_1, 0xff); // Enable battery, AC in, Vbus, APS ADC
|
|
||||||
uint8_t buffer;
|
|
||||||
axp192_read(driver, AXP192_DCDC13_LDO23_CONTROL, &buffer);
|
|
||||||
axp192_ioctl(driver, AXP192_DCDC13_LDO23_CONTROL, buffer | 0x4D); // Enable Ext, LDO2, LDO3, DCDC1
|
|
||||||
axp192_ioctl(driver, AXP192_PEK, 0x0C); // 128 ms power on, 4 s power off
|
|
||||||
axp192_ioctl(driver, AXP192_GPIO0_LDOIO0_VOLTAGE, 0xF0); // 3.3 V RTC voltage
|
|
||||||
axp192_ioctl(driver, AXP192_GPIO0_CONTROL, 0x02); // Set GPIO0 to LDO
|
|
||||||
axp192_ioctl(driver, AXP192_VBUS_IPSOUT_CHANNEL, 0x80); // Disable Vbus hold limit
|
|
||||||
axp192_ioctl(driver, AXP192_BATTERY_CHARGE_HIGH_TEMP, 0xFC); // Set temperature protection
|
|
||||||
axp192_ioctl(driver, AXP192_BATTERY_CHARGE_CONTROL, 0xA2); // Enable RTC BAT charge
|
|
||||||
axp192_ioctl(driver, AXP192_SHUTDOWN_BATTERY_CHGLED_CONTROL, 0x46); // Enable bat detection
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <Axp192.h>
|
|
||||||
|
|
||||||
bool initAxp();
|
|
||||||
|
|
||||||
// Must call initAxp() first before this returns a non-nullptr response
|
|
||||||
std::shared_ptr<Axp192> getAxp192();
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#include <tactility/module.h>
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
|
|
||||||
static error_t start() {
|
|
||||||
// Empty for now
|
|
||||||
return ERROR_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static error_t stop() {
|
|
||||||
// Empty for now
|
|
||||||
return ERROR_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Module m5stack_stickc_plus_module = {
|
|
||||||
.name = "m5stack-stickc-plus",
|
|
||||||
.start = start,
|
|
||||||
.stop = stop,
|
|
||||||
.symbols = nullptr,
|
|
||||||
.internal = nullptr
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
[general]
|
|
||||||
vendor=M5Stack
|
|
||||||
name=StickC Plus
|
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
|
||||||
launcherAppId=Launcher
|
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
|
||||||
target=ESP32
|
|
||||||
flashSize=4MB
|
|
||||||
spiRam=false
|
|
||||||
esptoolFlashFreq=80M
|
|
||||||
|
|
||||||
[display]
|
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=242
|
|
||||||
|
|
||||||
[lvgl]
|
|
||||||
colorDepth=16
|
|
||||||
uiDensity=compact
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
dependencies:
|
|
||||||
- Platforms/platform-esp32
|
|
||||||
- Drivers/mpu6886-module
|
|
||||||
- Drivers/bm8563-module
|
|
||||||
dts: m5stack,stickc-plus.dts
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
/dts-v1/;
|
|
||||||
|
|
||||||
#include <tactility/bindings/root.h>
|
|
||||||
#include <tactility/bindings/esp32_gpio.h>
|
|
||||||
#include <tactility/bindings/esp32_i2c.h>
|
|
||||||
#include <tactility/bindings/esp32_spi.h>
|
|
||||||
#include <tactility/bindings/esp32_uart.h>
|
|
||||||
#include <bindings/mpu6886.h>
|
|
||||||
#include <bindings/bm8563.h>
|
|
||||||
#include <tactility/bindings/display_placeholder.h>
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "root";
|
|
||||||
model = "M5Stack StickC Plus";
|
|
||||||
|
|
||||||
gpio0 {
|
|
||||||
compatible = "espressif,esp32-gpio";
|
|
||||||
gpio-count = <40>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c_internal {
|
|
||||||
compatible = "espressif,esp32-i2c";
|
|
||||||
port = <I2C_NUM_0>;
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
pin-sda = <&gpio0 21 GPIO_FLAG_NONE>;
|
|
||||||
pin-scl = <&gpio0 22 GPIO_FLAG_NONE>;
|
|
||||||
|
|
||||||
mpu6886 {
|
|
||||||
compatible = "invensense,mpu6886";
|
|
||||||
reg = <0x68>;
|
|
||||||
};
|
|
||||||
|
|
||||||
bm8563 {
|
|
||||||
compatible = "belling,bm8563";
|
|
||||||
reg = <0x51>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c_grove {
|
|
||||||
compatible = "espressif,esp32-i2c";
|
|
||||||
port = <I2C_NUM_1>;
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
pin-sda = <&gpio0 32 GPIO_FLAG_NONE>;
|
|
||||||
pin-scl = <&gpio0 33 GPIO_FLAG_NONE>;
|
|
||||||
};
|
|
||||||
|
|
||||||
spi0 {
|
|
||||||
compatible = "espressif,esp32-spi";
|
|
||||||
host = <SPI2_HOST>;
|
|
||||||
cs-gpios = <&gpio0 5 GPIO_FLAG_NONE>;
|
|
||||||
pin-mosi = <&gpio0 15 GPIO_FLAG_NONE>;
|
|
||||||
pin-sclk = <&gpio0 13 GPIO_FLAG_NONE>;
|
|
||||||
|
|
||||||
display {
|
|
||||||
compatible = "display-placeholder";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
uart_grove: uart1 {
|
|
||||||
compatible = "espressif,esp32-uart";
|
|
||||||
status = "disabled";
|
|
||||||
port = <UART_NUM_1>;
|
|
||||||
pin-tx = <&gpio0 33 GPIO_FLAG_NONE>;
|
|
||||||
pin-rx = <&gpio0 32 GPIO_FLAG_NONE>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=StickC Plus2
|
||||||
name=StickC Plus2
|
general.incubating=true
|
||||||
incubating=true
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
apps.autoStartAppId=ApWebServer
|
||||||
autoStartAppId=ApWebServer
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32
|
||||||
target=ESP32
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=QUAD
|
||||||
spiRamMode=QUAD
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=Internal
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=242
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=1.14"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
uiDensity=compact
|
display.dpi=242
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.uiDensity=compact
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=StickS3
|
||||||
name=StickS3
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=1.14"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=242
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=1.14"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
uiDensity=compact
|
display.dpi=242
|
||||||
|
|
||||||
|
lvgl.colorDepth=16
|
||||||
|
lvgl.uiDensity=compact
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,51 +1,47 @@
|
|||||||
[general]
|
general.vendor=M5Stack
|
||||||
vendor=M5Stack
|
general.name=Tab5
|
||||||
name=Tab5
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32P4
|
||||||
target=ESP32P4
|
hardware.flashSize=16MB
|
||||||
flashSize=16MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=HEX
|
||||||
spiRamMode=HEX
|
hardware.spiRamSpeed=200M
|
||||||
spiRamSpeed=200M
|
hardware.esptoolFlashFreq=80M
|
||||||
esptoolFlashFreq=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
hardware.usbHostEnabled=true
|
||||||
usbHostEnabled=true
|
hardware.tinyUsb=true
|
||||||
tinyUsb=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=294
|
|
||||||
|
|
||||||
[lvgl]
|
display.size=5"
|
||||||
colorDepth=16
|
display.shape=rectangle
|
||||||
fontSize=28
|
display.dpi=294
|
||||||
dpi=250
|
|
||||||
|
|
||||||
[sdkconfig]
|
lvgl.colorDepth=16
|
||||||
CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
|
lvgl.fontSize=28
|
||||||
CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
lvgl.dpi=250
|
||||||
CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
|
|
||||||
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
sdkconfig.CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
|
||||||
CONFIG_ESP_HOSTED_ENABLED=y
|
sdkconfig.CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
|
||||||
CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y
|
sdkconfig.CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
|
||||||
CONFIG_ESP_HOSTED_SDIO_SLOT_1=y
|
sdkconfig.CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1=13
|
sdkconfig.CONFIG_ESP_HOSTED_ENABLED=y
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1=12
|
sdkconfig.CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE=y
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1=11
|
sdkconfig.CONFIG_ESP_HOSTED_SDIO_SLOT_1=y
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1=10
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1=13
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1=9
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1=12
|
||||||
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1=8
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1=11
|
||||||
CONFIG_ESP_HOSTED_SDIO_GPIO_RESET_SLAVE=15
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1=10
|
||||||
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1=9
|
||||||
|
sdkconfig.CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1=8
|
||||||
|
sdkconfig.CONFIG_ESP_HOSTED_SDIO_GPIO_RESET_SLAVE=15
|
||||||
# Fixes recent changes to esp_hosted
|
# Fixes recent changes to esp_hosted
|
||||||
CONFIG_ESP_HOSTED_USE_MEMPOOL=n
|
sdkconfig.CONFIG_ESP_HOSTED_USE_MEMPOOL=n
|
||||||
# Performance: larger L2 cache reduces PSRAM stalls for draw/DPI buffers
|
# Performance: larger L2 cache reduces PSRAM stalls for draw/DPI buffers
|
||||||
CONFIG_CACHE_L2_CACHE_256KB=y
|
sdkconfig.CONFIG_CACHE_L2_CACHE_256KB=y
|
||||||
# Performance: use P4's PPA (pixel processing accelerator for rotation)
|
# Performance: use P4's PPA (pixel processing accelerator for rotation)
|
||||||
CONFIG_LVGL_PORT_ENABLE_PPA=y
|
sdkconfig.CONFIG_LVGL_PORT_ENABLE_PPA=y
|
||||||
CONFIG_LV_DRAW_BUF_ALIGN=64
|
sdkconfig.CONFIG_LV_DRAW_BUF_ALIGN=64
|
||||||
CONFIG_LV_DEF_REFR_PERIOD=15
|
sdkconfig.CONFIG_LV_DEF_REFR_PERIOD=15
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
ble0 {
|
ble0 {
|
||||||
compatible = "espressif,esp32-ble";
|
compatible = "espressif,esp32-ble";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio0 {
|
gpio0 {
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
[general]
|
general.vendor=Simulator
|
||||||
vendor=Simulator
|
general.name=Tab5Simulator
|
||||||
name=Tab5Simulator
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=POSIX
|
||||||
target=POSIX
|
|
||||||
|
|
||||||
[lvgl]
|
storage.userDataLocation=Internal
|
||||||
colorDepth=16
|
|
||||||
fontSize=14
|
lvgl.colorDepth=16
|
||||||
|
lvgl.fontSize=14
|
||||||
|
|||||||
@@ -1,25 +1,21 @@
|
|||||||
[general]
|
general.vendor=unPhone
|
||||||
vendor=unPhone
|
general.name=unPhone
|
||||||
name=unPhone
|
|
||||||
|
|
||||||
[apps]
|
apps.launcherAppId=Launcher
|
||||||
launcherAppId=Launcher
|
|
||||||
|
|
||||||
[hardware]
|
hardware.target=ESP32S3
|
||||||
target=ESP32S3
|
hardware.flashSize=8MB
|
||||||
flashSize=8MB
|
hardware.spiRam=true
|
||||||
spiRam=true
|
hardware.spiRamMode=OCT
|
||||||
spiRamMode=OCT
|
hardware.spiRamSpeed=80M
|
||||||
spiRamSpeed=80M
|
hardware.bluetooth=true
|
||||||
bluetooth=true
|
|
||||||
|
|
||||||
[display]
|
storage.userDataLocation=SD
|
||||||
size=3.5"
|
|
||||||
shape=rectangle
|
|
||||||
dpi=165
|
|
||||||
|
|
||||||
[cdn]
|
display.size=3.5"
|
||||||
warningMessage=Put the device into bootloader mode by pressing the center nav button and reset for 2-3 seconds, then release reset, then release the nav button.<br/>After flashing is finished, press the reset button to reboot.
|
display.shape=rectangle
|
||||||
|
display.dpi=165
|
||||||
|
|
||||||
[lvgl]
|
cdn.warningMessage=Put the device into bootloader mode by pressing the center nav button and reset for 2-3 seconds, then release reset, then release the nav button.<br/>After flashing is finished, press the reset button to reboot.
|
||||||
colorDepth=24
|
|
||||||
|
lvgl.colorDepth=24
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user