mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2025-02-16 05:18:39 +00:00
refactor[playlist]: made app a plugin
This commit is contained in:
parent
1a60093689
commit
f84d5e9b85
3 changed files with 19 additions and 13 deletions
|
@ -59,7 +59,6 @@ App(
|
||||||
"clock",
|
"clock",
|
||||||
"spectrum_analyzer",
|
"spectrum_analyzer",
|
||||||
"unirfremix",
|
"unirfremix",
|
||||||
"playlist"
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -79,5 +78,6 @@ App(
|
||||||
"wifi_scanner",
|
"wifi_scanner",
|
||||||
"wav_player",
|
"wav_player",
|
||||||
"dec_hex_converter",
|
"dec_hex_converter",
|
||||||
|
"sub_playlist",
|
||||||
],
|
],
|
||||||
)
|
)
|
|
@ -1,14 +1,10 @@
|
||||||
App(
|
App(
|
||||||
appid="playlist",
|
appid="sub_playlist",
|
||||||
name="Playlist",
|
name=".sub Playlist",
|
||||||
apptype=FlipperAppType.APP,
|
apptype=FlipperAppType.PLUGIN,
|
||||||
entry_point="playlist_app",
|
entry_point="playlist_app",
|
||||||
cdefines=["APP_PLAYLIST"],
|
cdefines=["APP_PLAYLIST"],
|
||||||
requires=[
|
requires=["storage", "gui", "dialogs", "subghz"],
|
||||||
"gui",
|
|
||||||
"dialogs",
|
|
||||||
],
|
|
||||||
icon="A_UniRFRemix_14",
|
|
||||||
stack_size=2 * 1024,
|
stack_size=2 * 1024,
|
||||||
order=11,
|
order=31,
|
||||||
)
|
)
|
||||||
|
|
|
@ -45,6 +45,8 @@ typedef struct {
|
||||||
string_t prev_3_path; // you get the idea
|
string_t prev_3_path; // you get the idea
|
||||||
|
|
||||||
int state; // current state
|
int state; // current state
|
||||||
|
|
||||||
|
ViewPort* view_port;
|
||||||
} DisplayMeta;
|
} DisplayMeta;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -76,6 +78,11 @@ typedef struct {
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void meta_set_state(DisplayMeta* meta, int state) {
|
||||||
|
meta->state = state;
|
||||||
|
view_port_update(meta->view_port);
|
||||||
|
}
|
||||||
|
|
||||||
static FuriHalSubGhzPreset str_to_preset(string_t preset) {
|
static FuriHalSubGhzPreset str_to_preset(string_t preset) {
|
||||||
if(string_cmp_str(preset, "FuriHalSubGhzPresetOok270Async") == 0) {
|
if(string_cmp_str(preset, "FuriHalSubGhzPresetOok270Async") == 0) {
|
||||||
return FuriHalSubGhzPresetOok270Async;
|
return FuriHalSubGhzPresetOok270Async;
|
||||||
|
@ -235,7 +242,7 @@ static int32_t playlist_worker_thread(void* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// update state to sending
|
// update state to sending
|
||||||
worker->meta->state = STATE_SENDING;
|
meta_set_state(worker->meta, STATE_SENDING);
|
||||||
|
|
||||||
worker->meta->current_single_repetition = 0;
|
worker->meta->current_single_repetition = 0;
|
||||||
++worker->meta->current_count;
|
++worker->meta->current_count;
|
||||||
|
@ -251,6 +258,7 @@ static int32_t playlist_worker_thread(void* ctx) {
|
||||||
string_set_str(worker->meta->prev_1_path, string_get_cstr(worker->meta->prev_0_path));
|
string_set_str(worker->meta->prev_1_path, string_get_cstr(worker->meta->prev_0_path));
|
||||||
string_reset(worker->meta->prev_0_path);
|
string_reset(worker->meta->prev_0_path);
|
||||||
string_set_str(worker->meta->prev_0_path, str);
|
string_set_str(worker->meta->prev_0_path, str);
|
||||||
|
view_port_update(worker->meta->view_port);
|
||||||
|
|
||||||
for(int i = 0; i < MAX(1, worker->meta->single_repetitions); i++) {
|
for(int i = 0; i < MAX(1, worker->meta->single_repetitions); i++) {
|
||||||
if(!playlist_worker_wait_pause(worker)) {
|
if(!playlist_worker_wait_pause(worker)) {
|
||||||
|
@ -258,6 +266,7 @@ static int32_t playlist_worker_thread(void* ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
++worker->meta->current_single_repetition;
|
++worker->meta->current_single_repetition;
|
||||||
|
view_port_update(worker->meta->view_port);
|
||||||
|
|
||||||
FURI_LOG_I(
|
FURI_LOG_I(
|
||||||
TAG,
|
TAG,
|
||||||
|
@ -302,7 +311,7 @@ static int32_t playlist_worker_thread(void* ctx) {
|
||||||
worker->is_running = false;
|
worker->is_running = false;
|
||||||
|
|
||||||
// update state to overview
|
// update state to overview
|
||||||
worker->meta->state = STATE_OVERVIEW;
|
meta_set_state(worker->meta, STATE_OVERVIEW);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -657,6 +666,7 @@ int32_t playlist_app(void* p) {
|
||||||
// create app
|
// create app
|
||||||
DisplayMeta* meta = playlist_meta_alloc();
|
DisplayMeta* meta = playlist_meta_alloc();
|
||||||
Playlist* app = playlist_alloc(meta);
|
Playlist* app = playlist_alloc(meta);
|
||||||
|
meta->view_port = app->view_port;
|
||||||
|
|
||||||
// select playlist file
|
// select playlist file
|
||||||
{
|
{
|
||||||
|
@ -674,7 +684,7 @@ int32_t playlist_app(void* p) {
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
playlist_start_worker(app, meta);
|
playlist_start_worker(app, meta);
|
||||||
app->meta->state = STATE_OVERVIEW;
|
meta_set_state(app->meta, STATE_OVERVIEW);
|
||||||
|
|
||||||
bool exit_loop = false;
|
bool exit_loop = false;
|
||||||
InputEvent input;
|
InputEvent input;
|
||||||
|
|
Loading…
Add table
Reference in a new issue