[FL-1720] BLE GUI refactoring (#678)

* dialog_ex: add clean method, fix documentation
* application: add bt debug and settings application
* bt: add debug application
* bt: add settings application
* bt: rework bt service
* bt debug: fix carrier debug app
* assets: add debug animation to main menu
* bt debug: fix bt packet test
* bt service: rework bt service
* bt: cleanup
* Assets: fix spelling
* Ble: wait for core 2 startup complete before initializing radio stack.
* Accessor: remove dead code, switch port PA6 to PA4, because interrupt line 6 is used by down button.
* FuriHal: assert interrupt line on add_int_callback.
* Bt: update icon on core2 startup complete.

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
gornekich
2021-09-02 02:22:40 +03:00
committed by GitHub
parent e17336498d
commit 420c03bb58
46 changed files with 1497 additions and 744 deletions

View File

@@ -0,0 +1,56 @@
#include "../bt_settings_app.h"
#include "furi-hal-bt.h"
enum BtSettingsAppStartSubmenuIndex {
BtSettingsAppStartSubmenuIndexEnable,
};
static void bt_settings_scene_start_submenu_callback(void* context, uint32_t index) {
BtSettingsApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
void bt_settings_scene_start_on_enter(void* context) {
BtSettingsApp* app = context;
Submenu* submenu = app->submenu;
const char* submenu_label = app->settings.enabled ? "Disable" : "Enable";
submenu_add_item(
submenu,
submenu_label,
BtSettingsAppStartSubmenuIndexEnable,
bt_settings_scene_start_submenu_callback,
app);
view_dispatcher_switch_to_view(app->view_dispatcher, BtSettingsAppViewSubmenu);
}
bool bt_settings_scene_start_on_event(void* context, SceneManagerEvent event) {
BtSettingsApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == BtSettingsAppStartSubmenuIndexEnable) {
if(!app->settings.enabled) {
app->settings.enabled = true;
furi_hal_bt_start_app();
submenu_clean(app->submenu);
submenu_add_item(
app->submenu,
"Disable",
BtSettingsAppStartSubmenuIndexEnable,
bt_settings_scene_start_submenu_callback,
app);
} else {
scene_manager_next_scene(app->scene_manager, BtSettingsAppSceneDisableDialog);
}
consumed = true;
}
}
return consumed;
}
void bt_settings_scene_start_on_exit(void* context) {
BtSettingsApp* app = context;
submenu_clean(app->submenu);
}