commit f57a6f9cdee5d08da812303c5f62268e44d3fc81 Author: Kuba SzczodrzyƄski Date: Wed Apr 20 19:13:38 2022 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..149d9da --- /dev/null +++ b/.gitignore @@ -0,0 +1,254 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/c,c++,visualstudiocode,python +# Edit at https://www.toptal.com/developers/gitignore?templates=c,c++,visualstudiocode,python + +### C ### +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +### C++ ### +# Prerequisites + +# Compiled Object files +*.slo + +# Precompiled Headers + +# Compiled Dynamic libraries + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai + +# Executables + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# Support for Project snippet scope + +# End of https://www.toptal.com/developers/gitignore/api/c,c++,visualstudiocode,python + +.vscode/settings.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ae95489 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Kuba SzczodrzyƄski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/builder/main.py b/builder/main.py new file mode 100644 index 0000000..2bc8e09 --- /dev/null +++ b/builder/main.py @@ -0,0 +1,24 @@ +from SCons.Script import Default, DefaultEnvironment + +env = DefaultEnvironment() + +env.Replace( + AR="arm-none-eabi-ar", + AS="arm-none-eabi-gcc", + CC="arm-none-eabi-gcc", + CXX="arm-none-eabi-g++", + NM="arm-none-eabi-nm", + LINK="arm-none-eabi-gcc", + LD="arm-none-eabi-gcc", + OBJCOPY="arm-none-eabi-objcopy", + OBJDUMP="arm-none-eabi-objdump", + RANLIB="arm-none-eabi-ranlib", + SIZETOOL="arm-none-eabi-size", +) + +# I have no idea how does PlatformIO work +# env.SConscript("frameworks/realtek-ambz-sdk.py") + +target_elf = env.BuildProgram() +target_fw = env.DumpFirmwareBinary("firmware.bin", target_elf) +Default(target_fw) diff --git a/platform.json b/platform.json new file mode 100644 index 0000000..09d36bc --- /dev/null +++ b/platform.json @@ -0,0 +1,30 @@ +{ + "name": "libretuya", + "title": "LibreTuya", + "description": "Free your Tuya IoT modules.", + "repository": { + "type": "git", + "url": "https://github.com/kuba2k2/platformio-libretuya" + }, + "version": "1.0.0", + "frameworks": { + "realtek-ambz-sdk": { + "tilte": "Realtek AmebaZ - SDK", + "package": "framework-realtek-amb1", + "script": "builder/frameworks/realtek-ambz-sdk.py" + } + }, + "packages": { + "framework-realtek-amb1": { + "type": "framework", + "optional": true, + "version": "https://github.com/kuba2k2/amb1_sdk" + }, + "toolchain-gccarmnoneeabi": { + "type": "toolchain", + "optionalVersions": [ + "~1.40804.0" + ] + } + } +} diff --git a/platform.py b/platform.py new file mode 100644 index 0000000..f9bdac0 --- /dev/null +++ b/platform.py @@ -0,0 +1,9 @@ +from platformio.managers.platform import PlatformBase + + +class LibretuyaPlatform(PlatformBase): + def configure_default_packages(self, options, targets): + framework = options.get("pioframework")[0] + if framework.startswith("realtek-ambz"): + self.packages["toolchain-gccarmnoneeabi"]["version"] = "~1.40804.0" + return super().configure_default_packages(options, targets)