mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-10 06:54:19 +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
|
||||
./launch.json
|
||||
./settings.json
|
||||
./tasks.json
|
||||
/c_cpp_properties.json
|
||||
/extensions.json
|
||||
/launch.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.
|
||||
"unwantedRecommendations": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"twxs.cmake",
|
||||
"ms-vscode.cmake-tools"
|
||||
]
|
7
.vscode/example/settings.json
vendored
7
.vscode/example/settings.json
vendored
|
@ -21,5 +21,10 @@
|
|||
"SConscript": "python",
|
||||
"SConstruct": "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,
|
||||
UPDATE_BUNDLE_DIR="dist/${DIST_DIR}/f${TARGET_HW}-update-${DIST_SUFFIX}",
|
||||
VSCODE_LANG_SERVER=ARGUMENTS.get("LANG_SERVER", "cpptools"),
|
||||
)
|
||||
|
||||
firmware_env = distenv.AddFwProject(
|
||||
|
@ -348,7 +349,14 @@ distenv.PhonyTarget(
|
|||
)
|
||||
|
||||
# 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.NoClean(vscode_dist)
|
||||
distenv.Alias("vscode_dist", vscode_dist)
|
||||
|
|
|
@ -3,6 +3,7 @@ App(
|
|||
apptype=FlipperAppType.STARTUP,
|
||||
entry_point="unit_tests_on_system_start",
|
||||
cdefines=["APP_UNIT_TESTS"],
|
||||
requires=["system_settings"],
|
||||
provides=["delay_test"],
|
||||
order=100,
|
||||
)
|
||||
|
|
|
@ -330,7 +330,12 @@ bool subghz_hal_async_tx_test_run(SubGhzHalAsyncTxTestType type) {
|
|||
return false;
|
||||
}
|
||||
|
||||
FuriHalCortexTimer timer = furi_hal_cortex_timer_get(30000000);
|
||||
|
||||
while(!furi_hal_subghz_is_async_tx_complete()) {
|
||||
if(furi_hal_cortex_timer_is_expired(timer)) {
|
||||
return false;
|
||||
}
|
||||
furi_delay_ms(10);
|
||||
}
|
||||
furi_hal_subghz_stop_async_tx();
|
||||
|
|
|
@ -10,6 +10,19 @@
|
|||
|
||||
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{
|
||||
{
|
||||
.api_version_major = (elf_api_version >> 16),
|
||||
|
@ -19,10 +32,10 @@ constexpr HashtableApiInterface elf_api_interface{
|
|||
.table_cbegin = elf_api_table.cbegin(),
|
||||
.table_cend = elf_api_table.cend(),
|
||||
};
|
||||
|
||||
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) {
|
||||
*major = elf_api_interface.api_version_major;
|
||||
*minor = elf_api_interface.api_version_minor;
|
||||
*major = firmware_api_interface->api_version_major;
|
||||
*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.
|
||||
|
||||
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`._
|
||||
- Basic build tasks are invoked in the Ctrl+Shift+B menu.
|
||||
- Debugging requires a supported probe. That includes:
|
||||
|
|
|
@ -2,6 +2,8 @@ import subprocess
|
|||
|
||||
import gdb
|
||||
import objdump
|
||||
import shutil
|
||||
|
||||
import strip
|
||||
from SCons.Action import _subproc
|
||||
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):
|
||||
for command in cmd_list:
|
||||
if command in env:
|
||||
env[command] = command_prefix + env[command]
|
||||
env[command] = shutil.which(command_prefix + env[command])
|
||||
|
||||
|
||||
def _get_tool_version(env, tool):
|
||||
|
|
|
@ -253,6 +253,15 @@ vars.AddVariables(
|
|||
"Full port name of Flipper to use, if multiple Flippers are connected",
|
||||
"auto",
|
||||
),
|
||||
EnumVariable(
|
||||
"LANG_SERVER",
|
||||
help="Language server type for vscode_dist.",
|
||||
default="cpptools",
|
||||
allowed_values=[
|
||||
"cpptools",
|
||||
"clangd",
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
Return("vars")
|
||||
|
|
Loading…
Reference in a new issue