1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 04:34:43 +04:00

Merge branch 'fz-dev' into dev

This commit is contained in:
MX
2023-05-09 01:14:42 +03:00
14 changed files with 101 additions and 26 deletions

View File

@@ -11,11 +11,10 @@
"args": {
"useSingleResult": true,
"env": {
"PATH": "${workspaceFolder};${env:PATH}",
"FBT_QUIET": 1
"PATH": "${workspaceFolder}${command:extension.commandvariable.envListSep}${env:PATH}"
},
"command": "fbt get_blackmagic",
"description": "Get Blackmagic device",
"command": "fbt -s get_blackmagic",
"description": "Get Blackmagic device"
}
}
],

View File

@@ -8,11 +8,12 @@
"amiralizadeh9480.cpp-helper",
"marus25.cortex-debug",
"zxh404.vscode-proto3",
"augustocdias.tasks-shell-input"
"augustocdias.tasks-shell-input",
"rioj7.command-variable"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [
"twxs.cmake",
"ms-vscode.cmake-tools"
]
}
}

View File

@@ -335,3 +335,9 @@ vscode_dist = distenv.Install("#.vscode", distenv.Glob("#.vscode/example/*"))
distenv.Precious(vscode_dist)
distenv.NoClean(vscode_dist)
distenv.Alias("vscode_dist", vscode_dist)
# Configure shell with build tools
distenv.PhonyTarget(
"env",
"@echo $( ${FBT_SCRIPT_DIR}/toolchain/fbtenv.sh $)",
)

View File

@@ -64,13 +64,16 @@ void desktop_debug_render(Canvas* canvas, void* model) {
version_get_builddate(ver));
canvas_draw_str(canvas, 0, 30 + STATUS_BAR_Y_SHIFT, buffer);
uint16_t api_major, api_minor;
furi_hal_info_get_api_version(&api_major, &api_minor);
snprintf(
buffer,
sizeof(buffer),
"%s%s [%s] %s",
"%s%s [%d.%d] %s",
version_get_dirty_flag(ver) ? "[!] " : "",
version_get_githash(ver),
version_get_gitbranchnum(ver),
api_major,
api_minor,
c2_ver ? c2_ver->StackTypeString : "<none>");
canvas_draw_str(canvas, 0, 40 + STATUS_BAR_Y_SHIFT, buffer);

View File

@@ -7,6 +7,7 @@
#include <furi_hal_version.h>
#include <furi_hal_region.h>
#include <furi_hal_bt.h>
#include <furi_hal_info.h>
typedef DialogMessageButton (*AboutDialogScreen)(DialogsApp* dialogs, DialogMessage* message);
@@ -164,14 +165,17 @@ static DialogMessageButton fw_version_screen(DialogsApp* dialogs, DialogMessage*
if(!ver) { //-V1051
furi_string_cat_printf(buffer, "No info\n");
} else {
uint16_t api_major, api_minor;
furi_hal_info_get_api_version(&api_major, &api_minor);
furi_string_cat_printf(
buffer,
"%s [%s]\n%s%s [%s] %s\n[%d] %s",
"%s [%s]\n%s%s [%d.%d] %s\n[%d] %s",
version_get_version(ver),
version_get_builddate(ver),
version_get_dirty_flag(ver) ? "[!] " : "",
version_get_githash(ver),
version_get_gitbranchnum(ver),
api_major,
api_minor,
c2_ver ? c2_ver->StackTypeString : "<none>",
version_get_target(ver),
version_get_gitbranch(ver));

View File

@@ -13,6 +13,7 @@ To use `fbt`, you only need `git` installed in your system.
> However, if you wish to use tools supplied with the toolchain outside `fbt`, you can open an *fbt shell*, with properly configured environment.
> - On Windows, simply run `scripts/toolchain/fbtenv.cmd`.
> - On Linux & MacOS, run `source scripts/toolchain/fbtenv.sh` in a new shell.
> - You can also type ```. `./fbt -s env` ``` in your shell. (Keep the "." at the beginning.)
If your system is not supported by pre-built toolchain variants or you want to use custom versions of dependencies, you can `set FBT_NOENV=1`. `fbt` will skip toolchain & environment configuration and will expect all tools to be available on your system's `PATH`. *(this option is not available on Windows)*

View File

@@ -9,6 +9,7 @@ from SCons.Action import Action
from SCons.Builder import Builder
from SCons.Errors import StopError
from SCons.Warnings import WarningOnByDefault, warn
from SCons.Script import GetOption
# Adding objects for application management to env
# AppManager env["APPMGR"] - loads all manifests; manages list of known apps
@@ -28,7 +29,8 @@ def LoadAppManifest(env, entry):
env["APPMGR"].load_manifest(app_manifest_file_path, entry)
env.Append(PY_LINT_SOURCES=[app_manifest_file_path])
except FlipperManifestException as e:
warn(WarningOnByDefault, str(e))
if not GetOption("silent"):
warn(WarningOnByDefault, str(e))
def PrepareApplicationsBuild(env):

View File

@@ -34,6 +34,9 @@ Other:
firmware_pvs:
generate a PVS-Studio report
How to open a shell with toolchain environment and other build tools:
In your shell, type "source `./fbt -s env`". You can also use "." instead of "source".
For more targets & info, see documentation/fbt.md
"""

View File

@@ -1,12 +1,13 @@
import os
import sys
import serial
import time
import hashlib
import math
import logging
import posixpath
import enum
import hashlib
import logging
import math
import os
import posixpath
import sys
import time
import serial
def timing(func):
@@ -236,6 +237,7 @@ class FlipperStorage:
filesize = os.fstat(file.fileno()).st_size
buffer_size = self.chunk_size
start_time = time.time()
while True:
filedata = file.read(buffer_size)
size = len(filedata)
@@ -254,11 +256,13 @@ class FlipperStorage:
self.port.write(filedata)
self.read.until(self.CLI_PROMPT)
percent = str(math.ceil(file.tell() / filesize * 100))
ftell = file.tell()
percent = str(math.ceil(ftell / filesize * 100))
total_chunks = str(math.ceil(filesize / buffer_size))
current_chunk = str(math.ceil(file.tell() / buffer_size))
current_chunk = str(math.ceil(ftell / buffer_size))
approx_speed = ftell / (time.time() - start_time + 0.0001)
sys.stdout.write(
f"\r{percent}%, chunk {current_chunk} of {total_chunks}"
f"\r{percent}%, chunk {current_chunk} of {total_chunks} @ {approx_speed/1024:.2f} kb/s"
)
sys.stdout.flush()
print()

View File

@@ -15,7 +15,7 @@ class Main(App):
self.parser.add_argument("manifest_path", help="Manifest path")
self.parser.add_argument(
"--pkg_dir_name", help="Update dir name", default="pcbundle", required=False
"--pkg_dir_name", help="Update dir name", default=None, required=False
)
self.parser.set_defaults(func=self.install)

View File

@@ -380,8 +380,9 @@ dist_env.Alias("vscode_dist", vscode_dist)
# Creating app from base template
dist_env.SetDefault(FBT_APPID=appenv.subst("$APPID") or "template")
app_template_dir = project_template_dir.Dir("app_template")
app_template_dist = []
for template_file in project_template_dir.Dir("app_template").glob("*"):
for template_file in app_template_dir.glob("*"):
dist_file_name = dist_env.subst(template_file.name)
if template_file.name.endswith(".png"):
app_template_dist.append(
@@ -397,12 +398,13 @@ for template_file in project_template_dir.Dir("app_template").glob("*"):
},
)
)
AddPostAction(
app_template_dist[-1],
[
Mkdir(original_app_dir.Dir("images")),
Touch(original_app_dir.Dir("images").File(".gitkeep")),
# scons' glob ignores .dot directories, so we need to copy .github manually
Copy(original_app_dir.Dir(".github"), app_template_dir.Dir(".github")),
],
)
dist_env.Precious(app_template_dist)
@@ -440,3 +442,8 @@ else:
raise UserError(f"Dolphin folder not found: {dolphin_src_dir}")
dist_env.PhonyTarget("dolphin_ext", Action(missing_dolphin_folder, None))
dist_env.PhonyTarget(
"env",
"@echo $( ${FBT_SCRIPT_DIR}/toolchain/fbtenv.sh $)",
)

View File

@@ -8,7 +8,8 @@
"amiralizadeh9480.cpp-helper",
"marus25.cortex-debug",
"zxh404.vscode-proto3",
"augustocdias.tasks-shell-input"
"augustocdias.tasks-shell-input",
"rioj7.command-variable"
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [

View File

@@ -0,0 +1,41 @@
name: "FAP: Build for multiple SDK sources"
# This will build your app for dev and release channels on GitHub.
# It will also build your app every day to make sure it's up to date with the latest SDK changes.
# See https://github.com/marketplace/actions/build-flipper-application-package-fap for more information
on:
push:
## put your main branch name under "braches"
#branches:
# - master
pull_request:
schedule:
# do a build every day
- cron: "1 1 * * *"
jobs:
ufbt-build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: dev channel
sdk-channel: dev
- name: release channel
sdk-channel: release
# You can add unofficial channels here. See ufbt action docs for more info.
name: 'ufbt: Build for ${{ matrix.name }}'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build with ufbt
uses: flipperdevices/flipperzero-ufbt-action@v0.1.1
id: build-app
with:
sdk-channel: ${{ matrix.sdk-channel }}
- name: Upload app artifacts
uses: actions/upload-artifact@v3
with:
# See ufbt action docs for other output variables
name: ${{ github.event.repository.name }}-${{ steps.build-app.outputs.suffix }}
path: ${{ steps.build-app.outputs.fap-artifacts }}

View File

@@ -40,6 +40,9 @@ How to create a new application:
2. Run `ufbt vscode_dist create APPID=myapp`
3. In VSCode, open the folder and start editing.
4. Run `ufbt launch` to build and upload your application.
How to open a shell with toolchain environment and other build tools:
In your shell, type "source `ufbt -s env`". You can also use "." instead of "source".
"""