Last for today | FAP updates

This commit is contained in:
VerstreuteSeele
2022-12-19 06:28:07 +01:00
parent ca7e285d20
commit dda19d6233
5 changed files with 50 additions and 10 deletions

View File

@@ -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 @@
}
}
]
}
}

View File

@@ -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"

View File

@@ -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:

View File

@@ -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()()

View File

@@ -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")