From e88e3864d20568c21acb07e006408d566003eb06 Mon Sep 17 00:00:00 2001 From: gilou Date: Wed, 20 Mar 2024 16:39:03 +0100 Subject: [PATCH 1/2] build: improve gitignore and add requierements --- .gitignore | 209 ++++++++++++++++++++++++++++++++++++++++++++++- requirements.txt | 1 + 2 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index ca3bb58..8f8e9d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,207 @@ -.vscode +# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,venv +# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,python,venv + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# 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 + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__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/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +### venv ### +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts +pyvenv.cfg +pip-selfcheck.json + +### VisualStudioCode ### .vscode/* -__pycache__ -__pycache__/* \ No newline at end of file +!.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 + +# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,venv diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d0dfd58 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pyserial==3.5 From 4df52304152792ac5f0276bd6a95d777a2205ebb Mon Sep 17 00:00:00 2001 From: gilou Date: Wed, 20 Mar 2024 16:39:45 +0100 Subject: [PATCH 2/2] support Linux/windows detection automatically --- library/prog_utils.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/library/prog_utils.py b/library/prog_utils.py index 6af5752..04983f0 100644 --- a/library/prog_utils.py +++ b/library/prog_utils.py @@ -28,6 +28,7 @@ import re import time import serial +import os from library import common from library import progress_bar @@ -186,7 +187,10 @@ def reset_bootloader(port): """ try: - ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 reset", timeout=10) + if ( os.name == 'posix' ): + ret = execute_cmd_prog("./3rdParties/mcumgr --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 reset", timeout=10) + else: + ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 reset", timeout=10) if (ret[0] == 0): print(f"Reset target") else: @@ -208,7 +212,10 @@ def check_hash_bootloader(port, desired_hash): """ patternImageInfo = re.compile(r"\s*(image=(\d))\s(slot=(\d))\n\s*(version:\s(\d.\d.\d))\n\s*(bootable:\s(.*))\n\s*(flags:\s(.*))\n\s*(hash:\s([0-9a-f]{64}))") try: - ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image list", match_pattern_end=patternImageInfo, match_callback_end=match_info, debug=False, timeout=10) + if ( os.name == 'posix' ): + ret = execute_cmd_prog("./3rdParties/mcumgr --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image list", match_pattern_end=patternImageInfo, match_callback_end=match_info, debug=False, timeout=10) + else: + ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image list", match_pattern_end=patternImageInfo, match_callback_end=match_info, debug=False, timeout=10) if (ret[0] == 0): print(f"\nBootloader is here") else: @@ -241,7 +248,10 @@ def flash_prog_bootloader(firm_bin, port): patternBootloader = re.compile(r"(\d+\.?\d*) (\w+B|B) \/ (\d+\.?\d*) (\w+B|B) (?:\[.*?\]|).*?(\d+\.?\d*)%(?: (\d+\.?\d*) ((?:\w+B|B)\/s)|)") try: - ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image upload -e " + firm_bin, match_pattern_linebline=patternBootloader, match_callback_linebline=match_bootloader_action, debug=False, timeout=10) + if ( os.name == 'posix' ): + ret = execute_cmd_prog("./3rdParties/mcumgr --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image upload -e " + firm_bin, match_pattern_linebline=patternBootloader, match_callback_linebline=match_bootloader_action, debug=False, timeout=10) + else: + ret = execute_cmd_prog("./3rdParties/mcumgr.exe --conntype=serial --connstring=dev=" + port + ",baud=115200,mtu=128 image upload -e " + firm_bin, match_pattern_linebline=patternBootloader, match_callback_linebline=match_bootloader_action, debug=False, timeout=10) if (ret[0] == 0): print(f"\nSuccessfully flashed {firm_bin}") return 0 #yes