mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-09-20 06:31:55 +00:00
Merge branch 'ofw-dev' into dev
This commit is contained in:
commit
15ac511dea
12 changed files with 77 additions and 11 deletions
9
.vscode/.gitignore
vendored
9
.vscode/.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
./c_cpp_properties.json
|
/c_cpp_properties.json
|
||||||
./launch.json
|
/extensions.json
|
||||||
./settings.json
|
/launch.json
|
||||||
./tasks.json
|
/settings.json
|
||||||
|
/tasks.json
|
||||||
|
|
19
.vscode/example/clangd/extensions.json
vendored
Normal file
19
.vscode/example/clangd/extensions.json
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
||||||
|
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
||||||
|
// List of extensions which should be recommended for users of this workspace.
|
||||||
|
"recommendations": [
|
||||||
|
"ms-python.black-formatter",
|
||||||
|
"llvm-vs-code-extensions.vscode-clangd",
|
||||||
|
"amiralizadeh9480.cpp-helper",
|
||||||
|
"marus25.cortex-debug",
|
||||||
|
"zxh404.vscode-proto3",
|
||||||
|
"augustocdias.tasks-shell-input"
|
||||||
|
],
|
||||||
|
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"twxs.cmake",
|
||||||
|
"ms-vscode.cpptools",
|
||||||
|
"ms-vscode.cmake-tools"
|
||||||
|
]
|
||||||
|
}
|
|
@ -13,6 +13,7 @@
|
||||||
],
|
],
|
||||||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||||
"unwantedRecommendations": [
|
"unwantedRecommendations": [
|
||||||
|
"llvm-vs-code-extensions.vscode-clangd",
|
||||||
"twxs.cmake",
|
"twxs.cmake",
|
||||||
"ms-vscode.cmake-tools"
|
"ms-vscode.cmake-tools"
|
||||||
]
|
]
|
7
.vscode/example/settings.json
vendored
7
.vscode/example/settings.json
vendored
|
@ -21,5 +21,10 @@
|
||||||
"SConscript": "python",
|
"SConscript": "python",
|
||||||
"SConstruct": "python",
|
"SConstruct": "python",
|
||||||
"*.fam": "python",
|
"*.fam": "python",
|
||||||
}
|
},
|
||||||
|
"clangd.arguments": [
|
||||||
|
// We might be able to tighten this a bit more to only include the correct toolchain.
|
||||||
|
"--query-driver=**",
|
||||||
|
"--compile-commands-dir=${workspaceFolder}/build/latest"
|
||||||
|
]
|
||||||
}
|
}
|
10
SConstruct
10
SConstruct
|
@ -45,6 +45,7 @@ distenv = coreenv.Clone(
|
||||||
],
|
],
|
||||||
ENV=os.environ,
|
ENV=os.environ,
|
||||||
UPDATE_BUNDLE_DIR="dist/${DIST_DIR}/f${TARGET_HW}-update-${DIST_SUFFIX}",
|
UPDATE_BUNDLE_DIR="dist/${DIST_DIR}/f${TARGET_HW}-update-${DIST_SUFFIX}",
|
||||||
|
VSCODE_LANG_SERVER=ARGUMENTS.get("LANG_SERVER", "cpptools"),
|
||||||
)
|
)
|
||||||
|
|
||||||
firmware_env = distenv.AddFwProject(
|
firmware_env = distenv.AddFwProject(
|
||||||
|
@ -348,7 +349,14 @@ distenv.PhonyTarget(
|
||||||
)
|
)
|
||||||
|
|
||||||
# Prepare vscode environment
|
# Prepare vscode environment
|
||||||
vscode_dist = distenv.Install("#.vscode", distenv.Glob("#.vscode/example/*"))
|
VSCODE_LANG_SERVER = cmd_environment["LANG_SERVER"]
|
||||||
|
vscode_dist = distenv.Install(
|
||||||
|
"#.vscode",
|
||||||
|
[
|
||||||
|
distenv.Glob("#.vscode/example/*.json"),
|
||||||
|
distenv.Glob(f"#.vscode/example/{VSCODE_LANG_SERVER}/*.json"),
|
||||||
|
],
|
||||||
|
)
|
||||||
distenv.Precious(vscode_dist)
|
distenv.Precious(vscode_dist)
|
||||||
distenv.NoClean(vscode_dist)
|
distenv.NoClean(vscode_dist)
|
||||||
distenv.Alias("vscode_dist", vscode_dist)
|
distenv.Alias("vscode_dist", vscode_dist)
|
||||||
|
|
|
@ -3,6 +3,7 @@ App(
|
||||||
apptype=FlipperAppType.STARTUP,
|
apptype=FlipperAppType.STARTUP,
|
||||||
entry_point="unit_tests_on_system_start",
|
entry_point="unit_tests_on_system_start",
|
||||||
cdefines=["APP_UNIT_TESTS"],
|
cdefines=["APP_UNIT_TESTS"],
|
||||||
|
requires=["system_settings"],
|
||||||
provides=["delay_test"],
|
provides=["delay_test"],
|
||||||
order=100,
|
order=100,
|
||||||
)
|
)
|
||||||
|
|
|
@ -330,7 +330,12 @@ bool subghz_hal_async_tx_test_run(SubGhzHalAsyncTxTestType type) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(30000000);
|
||||||
|
|
||||||
while(!furi_hal_subghz_is_async_tx_complete()) {
|
while(!furi_hal_subghz_is_async_tx_complete()) {
|
||||||
|
if(furi_hal_cortex_timer_is_expired(timer)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
furi_delay_ms(10);
|
furi_delay_ms(10);
|
||||||
}
|
}
|
||||||
furi_hal_subghz_stop_async_tx();
|
furi_hal_subghz_stop_async_tx();
|
||||||
|
|
|
@ -10,6 +10,19 @@
|
||||||
|
|
||||||
static_assert(!has_hash_collisions(elf_api_table), "Detected API method hash collision!");
|
static_assert(!has_hash_collisions(elf_api_table), "Detected API method hash collision!");
|
||||||
|
|
||||||
|
#ifdef APP_UNIT_TESTS
|
||||||
|
constexpr HashtableApiInterface mock_elf_api_interface{
|
||||||
|
{
|
||||||
|
.api_version_major = 0,
|
||||||
|
.api_version_minor = 0,
|
||||||
|
.resolver_callback = &elf_resolve_from_hashtable,
|
||||||
|
},
|
||||||
|
.table_cbegin = nullptr,
|
||||||
|
.table_cend = nullptr,
|
||||||
|
};
|
||||||
|
|
||||||
|
const ElfApiInterface* const firmware_api_interface = &mock_elf_api_interface;
|
||||||
|
#else
|
||||||
constexpr HashtableApiInterface elf_api_interface{
|
constexpr HashtableApiInterface elf_api_interface{
|
||||||
{
|
{
|
||||||
.api_version_major = (elf_api_version >> 16),
|
.api_version_major = (elf_api_version >> 16),
|
||||||
|
@ -19,10 +32,10 @@ constexpr HashtableApiInterface elf_api_interface{
|
||||||
.table_cbegin = elf_api_table.cbegin(),
|
.table_cbegin = elf_api_table.cbegin(),
|
||||||
.table_cend = elf_api_table.cend(),
|
.table_cend = elf_api_table.cend(),
|
||||||
};
|
};
|
||||||
|
|
||||||
const ElfApiInterface* const firmware_api_interface = &elf_api_interface;
|
const ElfApiInterface* const firmware_api_interface = &elf_api_interface;
|
||||||
|
#endif
|
||||||
|
|
||||||
extern "C" void furi_hal_info_get_api_version(uint16_t* major, uint16_t* minor) {
|
extern "C" void furi_hal_info_get_api_version(uint16_t* major, uint16_t* minor) {
|
||||||
*major = elf_api_interface.api_version_major;
|
*major = firmware_api_interface->api_version_major;
|
||||||
*minor = elf_api_interface.api_version_minor;
|
*minor = firmware_api_interface->api_version_minor;
|
||||||
}
|
}
|
|
@ -46,6 +46,8 @@ To run cleanup (think of `make clean`) for specified targets, add the `-c` optio
|
||||||
|
|
||||||
`fbt` includes basic development environment configuration for VS Code. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VS Code and choosing the firmware root folder in the "File > Open Folder" menu.
|
`fbt` includes basic development environment configuration for VS Code. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VS Code and choosing the firmware root folder in the "File > Open Folder" menu.
|
||||||
|
|
||||||
|
To use language servers other than the default VS Code C/C++ language server, use `./fbt vscode_dist LANG_SERVER=<language-server>` instead. Currently `fbt` supports the default language server (`cpptools`) and `clangd`.
|
||||||
|
|
||||||
- On the first start, you'll be prompted to install recommended plugins. We highly recommend installing them for the best development experience. _You can find a list of them in `.vscode/extensions.json`._
|
- On the first start, you'll be prompted to install recommended plugins. We highly recommend installing them for the best development experience. _You can find a list of them in `.vscode/extensions.json`._
|
||||||
- Basic build tasks are invoked in the Ctrl+Shift+B menu.
|
- Basic build tasks are invoked in the Ctrl+Shift+B menu.
|
||||||
- Debugging requires a supported probe. That includes:
|
- Debugging requires a supported probe. That includes:
|
||||||
|
|
|
@ -2,6 +2,8 @@ import subprocess
|
||||||
|
|
||||||
import gdb
|
import gdb
|
||||||
import objdump
|
import objdump
|
||||||
|
import shutil
|
||||||
|
|
||||||
import strip
|
import strip
|
||||||
from SCons.Action import _subproc
|
from SCons.Action import _subproc
|
||||||
from SCons.Errors import StopError
|
from SCons.Errors import StopError
|
||||||
|
@ -11,7 +13,7 @@ from SCons.Tool import ar, asm, gcc, gnulink, gxx
|
||||||
def prefix_commands(env, command_prefix, cmd_list):
|
def prefix_commands(env, command_prefix, cmd_list):
|
||||||
for command in cmd_list:
|
for command in cmd_list:
|
||||||
if command in env:
|
if command in env:
|
||||||
env[command] = command_prefix + env[command]
|
env[command] = shutil.which(command_prefix + env[command])
|
||||||
|
|
||||||
|
|
||||||
def _get_tool_version(env, tool):
|
def _get_tool_version(env, tool):
|
||||||
|
|
|
@ -253,6 +253,15 @@ vars.AddVariables(
|
||||||
"Full port name of Flipper to use, if multiple Flippers are connected",
|
"Full port name of Flipper to use, if multiple Flippers are connected",
|
||||||
"auto",
|
"auto",
|
||||||
),
|
),
|
||||||
|
EnumVariable(
|
||||||
|
"LANG_SERVER",
|
||||||
|
help="Language server type for vscode_dist.",
|
||||||
|
default="cpptools",
|
||||||
|
allowed_values=[
|
||||||
|
"cpptools",
|
||||||
|
"clangd",
|
||||||
|
],
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
Return("vars")
|
Return("vars")
|
||||||
|
|
Loading…
Reference in a new issue