From dda19d6233df16800d53884af098cf7005c7a823 Mon Sep 17 00:00:00 2001 From: VerstreuteSeele Date: Mon, 19 Dec 2022 06:28:07 +0100 Subject: [PATCH] Last for today | FAP updates --- .vscode/example/tasks.json | 14 +++++++++++++- fbt_options.py | 2 +- scripts/fbt_tools/fbt_help.py | 2 ++ scripts/runfap.py | 24 ++++++++++++++++++------ site_scons/extapps.scons | 18 ++++++++++++++++-- 5 files changed, 50 insertions(+), 10 deletions(-) diff --git a/.vscode/example/tasks.json b/.vscode/example/tasks.json index c16c3ab4f..0fc1d6dd1 100644 --- a/.vscode/example/tasks.json +++ b/.vscode/example/tasks.json @@ -138,6 +138,18 @@ "Serial Console" ] }, + { + "label": "[Debug] Build and upload all FAPs to Flipper over USB", + "group": "build", + "type": "shell", + "command": "./fbt faps_copy" + }, + { + "label": "[Release] Build and upload all FAPs to Flipper over USB", + "group": "build", + "type": "shell", + "command": "./fbt COMPACT=1 DEBUG=0 faps_copy" + }, { // Press Ctrl+] to quit "label": "Serial Console", @@ -162,4 +174,4 @@ } } ] -} +} \ No newline at end of file diff --git a/fbt_options.py b/fbt_options.py index 5a017d4e8..9e8558f0a 100644 --- a/fbt_options.py +++ b/fbt_options.py @@ -14,7 +14,7 @@ DEBUG = 0 # Suffix to add to files when building distribution # If OS environment has DIST_SUFFIX set, it will be used instead -DIST_SUFFIX = "CC_CL-0015_12192022" +DIST_SUFFIX = "CC_CL-0016_12192022" # Coprocessor firmware COPRO_OB_DATA = "scripts/ob.data" diff --git a/scripts/fbt_tools/fbt_help.py b/scripts/fbt_tools/fbt_help.py index 0475f51bc..7e410fefb 100644 --- a/scripts/fbt_tools/fbt_help.py +++ b/scripts/fbt_tools/fbt_help.py @@ -11,6 +11,8 @@ Building: Build all FAP apps fap_{APPID}, launch_app APPSRC={APPID}: Build FAP app with appid={APPID}; upload & start it over USB + faps_copy: + Build and upload all FAP apps over USB Flashing & debugging: flash, flash_blackmagic, jflash: diff --git a/scripts/runfap.py b/scripts/runfap.py index c2c0f78d5..a832cc7b0 100644 --- a/scripts/runfap.py +++ b/scripts/runfap.py @@ -15,6 +15,13 @@ import serial.tools.list_ports as list_ports class Main(App): def init(self): self.parser.add_argument("-p", "--port", help="CDC Port", default="auto") + self.parser.add_argument( + "-l", + "--launch", + dest="launch_app", + action="store_true", + help="Launch app", + ) self.parser.add_argument("fap_src_path", help="App file to upload") self.parser.add_argument( @@ -84,11 +91,16 @@ class Main(App): self.logger.error(f"Error: upload failed: {storage.last_error}") return -3 - storage.send_and_wait_eol(f'loader open "Applications" {fap_dst_path}\r') - result = storage.read.until(storage.CLI_EOL) - if len(result): - self.logger.error(f"Unexpected response: {result.decode('ascii')}") - return -4 + if self.args.launch_app: + storage.send_and_wait_eol( + f'loader open "Applications" {fap_dst_path}\r' + ) + result = storage.read.until(storage.CLI_EOL) + if len(result): + self.logger.error( + f"Unexpected response: {result.decode('ascii')}" + ) + return -4 return 0 finally: @@ -96,4 +108,4 @@ class Main(App): if __name__ == "__main__": - Main()() + Main()() \ No newline at end of file diff --git a/site_scons/extapps.scons b/site_scons/extapps.scons index b8f210563..5f6b1393f 100644 --- a/site_scons/extapps.scons +++ b/site_scons/extapps.scons @@ -1,3 +1,4 @@ +import os from dataclasses import dataclass, field from SCons.Node import NodeList from SCons.Warnings import warn, WarningOnByDefault @@ -109,12 +110,25 @@ if appsrc := appenv.subst("$APPSRC"): app_artifacts = appenv.GetExtAppFromPath(appsrc) appenv.PhonyTarget( "launch_app", - '${PYTHON3} "${APP_RUN_SCRIPT}" "${SOURCE}" --fap_dst_dir "/ext/apps/${FAP_CATEGORY}"', + '${PYTHON3} "${APP_RUN_SCRIPT}" --launch "${SOURCE}" --fap_dst_dir "/ext/apps/${FAP_CATEGORY}"', source=app_artifacts.compact, FAP_CATEGORY=app_artifacts.app.fap_category, ) appenv.Alias("launch_app", app_artifacts.validator) +appenv.PhonyTarget( + "faps_copy", + os.linesep.join( + [ + '${PYTHON3} "${APP_RUN_SCRIPT}"' + f' "{app_artifact.compact[0].rstr()}"' + f' --fap_dst_dir "/ext/apps/{app_artifact.app.fap_category}"' + for app_artifact in appenv["EXT_APPS"].values() + ] + ), + source=["faps"], +) + # SDK management sdk_origin_path = "${BUILD_DIR}/sdk_origin" @@ -148,4 +162,4 @@ if appenv["FORCE"]: appenv.AlwaysBuild(sdk_source, sdk_tree, sdk_apicheck, sdk_apisyms) -Return("extapps") +Return("extapps") \ No newline at end of file