mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-16 04:24:45 -07:00
Rename plugins to external
This commit is contained in:
149
applications/external/brainfuck/brainfuck.c
vendored
Normal file
149
applications/external/brainfuck/brainfuck.c
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
#include "brainfuck_i.h"
|
||||
|
||||
/*
|
||||
Due to the lack of documentation on the flipper i copied the picopass app,
|
||||
ripped its insides out and used its hollow corpse to build this app inside of.
|
||||
|
||||
i dont know how this stuff works and after 6 hours of trying to learn it, i dont care
|
||||
*/
|
||||
|
||||
bool brainfuck_custom_event_callback(void* context, uint32_t event) {
|
||||
furi_assert(context);
|
||||
BFApp* brainfuck = context;
|
||||
return scene_manager_handle_custom_event(brainfuck->scene_manager, event);
|
||||
}
|
||||
|
||||
bool brainfuck_back_event_callback(void* context) {
|
||||
furi_assert(context);
|
||||
BFApp* brainfuck = context;
|
||||
return scene_manager_handle_back_event(brainfuck->scene_manager);
|
||||
}
|
||||
|
||||
BFApp* brainfuck_alloc() {
|
||||
BFApp* brainfuck = malloc(sizeof(BFApp));
|
||||
|
||||
brainfuck->dataSize = 0;
|
||||
brainfuck->view_dispatcher = view_dispatcher_alloc();
|
||||
brainfuck->scene_manager = scene_manager_alloc(&brainfuck_scene_handlers, brainfuck);
|
||||
view_dispatcher_enable_queue(brainfuck->view_dispatcher);
|
||||
view_dispatcher_set_event_callback_context(brainfuck->view_dispatcher, brainfuck);
|
||||
view_dispatcher_set_custom_event_callback(
|
||||
brainfuck->view_dispatcher, brainfuck_custom_event_callback);
|
||||
view_dispatcher_set_navigation_event_callback(
|
||||
brainfuck->view_dispatcher, brainfuck_back_event_callback);
|
||||
|
||||
// Open GUI record
|
||||
brainfuck->gui = furi_record_open(RECORD_GUI);
|
||||
view_dispatcher_attach_to_gui(
|
||||
brainfuck->view_dispatcher, brainfuck->gui, ViewDispatcherTypeFullscreen);
|
||||
|
||||
// Open Notification record
|
||||
brainfuck->notifications = furi_record_open(RECORD_NOTIFICATION);
|
||||
|
||||
// Submenu
|
||||
brainfuck->submenu = submenu_alloc();
|
||||
view_dispatcher_add_view(
|
||||
brainfuck->view_dispatcher, brainfuckViewMenu, submenu_get_view(brainfuck->submenu));
|
||||
|
||||
// Popup
|
||||
brainfuck->popup = popup_alloc();
|
||||
view_dispatcher_add_view(
|
||||
brainfuck->view_dispatcher, brainfuckViewPopup, popup_get_view(brainfuck->popup));
|
||||
|
||||
// Text Input
|
||||
brainfuck->text_input = text_input_alloc();
|
||||
view_dispatcher_add_view(
|
||||
brainfuck->view_dispatcher,
|
||||
brainfuckViewTextInput,
|
||||
text_input_get_view(brainfuck->text_input));
|
||||
|
||||
// Textbox
|
||||
brainfuck->text_box = text_box_alloc();
|
||||
view_dispatcher_add_view(
|
||||
brainfuck->view_dispatcher, brainfuckViewTextBox, text_box_get_view(brainfuck->text_box));
|
||||
brainfuck->text_box_store = furi_string_alloc();
|
||||
|
||||
// Dev environment
|
||||
brainfuck->BF_dev_env = bf_dev_env_alloc(brainfuck);
|
||||
view_dispatcher_add_view(
|
||||
brainfuck->view_dispatcher, brainfuckViewDev, bf_dev_env_get_view(brainfuck->BF_dev_env));
|
||||
|
||||
// File path
|
||||
brainfuck->BF_file_path = furi_string_alloc();
|
||||
|
||||
return brainfuck;
|
||||
}
|
||||
|
||||
void brainfuck_free(BFApp* brainfuck) {
|
||||
furi_assert(brainfuck);
|
||||
|
||||
// Submenu
|
||||
view_dispatcher_remove_view(brainfuck->view_dispatcher, brainfuckViewMenu);
|
||||
submenu_free(brainfuck->submenu);
|
||||
|
||||
// Popup
|
||||
view_dispatcher_remove_view(brainfuck->view_dispatcher, brainfuckViewPopup);
|
||||
popup_free(brainfuck->popup);
|
||||
|
||||
// TextInput
|
||||
view_dispatcher_remove_view(brainfuck->view_dispatcher, brainfuckViewTextInput);
|
||||
text_input_free(brainfuck->text_input);
|
||||
|
||||
// TextBox
|
||||
view_dispatcher_remove_view(brainfuck->view_dispatcher, brainfuckViewTextBox);
|
||||
text_box_free(brainfuck->text_box);
|
||||
furi_string_free(brainfuck->text_box_store);
|
||||
|
||||
//dev env
|
||||
view_dispatcher_remove_view(brainfuck->view_dispatcher, brainfuckViewDev);
|
||||
bf_dev_env_free(brainfuck->BF_dev_env);
|
||||
|
||||
// View Dispatcher
|
||||
view_dispatcher_free(brainfuck->view_dispatcher);
|
||||
|
||||
// Scene Manager
|
||||
scene_manager_free(brainfuck->scene_manager);
|
||||
|
||||
// GUI
|
||||
furi_record_close(RECORD_GUI);
|
||||
brainfuck->gui = NULL;
|
||||
|
||||
// Notifications
|
||||
furi_record_close(RECORD_NOTIFICATION);
|
||||
brainfuck->notifications = NULL;
|
||||
|
||||
free(brainfuck);
|
||||
}
|
||||
|
||||
void brainfuck_show_loading_popup(void* context, bool show) {
|
||||
BFApp* brainfuck = context;
|
||||
TaskHandle_t timer_task = xTaskGetHandle(configTIMER_SERVICE_TASK_NAME);
|
||||
|
||||
if(show) {
|
||||
// Raise timer priority so that animations can play
|
||||
vTaskPrioritySet(timer_task, configMAX_PRIORITIES - 1);
|
||||
view_dispatcher_switch_to_view(brainfuck->view_dispatcher, brainfuckViewLoading);
|
||||
} else {
|
||||
// Restore default timer priority
|
||||
vTaskPrioritySet(timer_task, configTIMER_TASK_PRIORITY);
|
||||
}
|
||||
}
|
||||
|
||||
int32_t brainfuck_app(void* p) {
|
||||
UNUSED(p);
|
||||
BFApp* brainfuck = brainfuck_alloc();
|
||||
if(!brainfuck) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Storage* storage = furi_record_open(RECORD_STORAGE);
|
||||
storage_simply_mkdir(storage, "/ext/brainfuck");
|
||||
|
||||
scene_manager_next_scene(brainfuck->scene_manager, brainfuckSceneStart);
|
||||
|
||||
view_dispatcher_run(brainfuck->view_dispatcher);
|
||||
|
||||
brainfuck_free(brainfuck);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user