Skip to content
This repository has been archived by the owner on May 22, 2022. It is now read-only.

Commit

Permalink
Fixes bug with double sending on input press
Browse files Browse the repository at this point in the history
  • Loading branch information
jimilinuxguy committed May 18, 2022
1 parent b80f5e6 commit 2b03066
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 45 deletions.
54 changes: 9 additions & 45 deletions applications/universal_rf/universal_rf.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,15 @@ static char* subString(char* someString, int n) {
char* new = malloc(sizeof(char) * n + 1);
strncpy(new, someString, n);
new[n] = '\0';
return new;
return(new);
}

static char* file_stub(const char* file_name) {
string_t filename;
string_init(filename);
// string_init(file_name);
path_extract_filename_no_ext(file_name, filename);

return subString((char*)string_get_cstr(filename), 8);
return(subString((char*)string_get_cstr(filename), 8));
}

static void remote_send_signal(uint32_t frequency, string_t signal, string_t protocol) {
Expand Down Expand Up @@ -115,7 +114,6 @@ static void remote_render_callback(Canvas* canvas, void* ctx) {
canvas_draw_str(canvas, 0, 36, strings[3]);
canvas_draw_str(canvas, 85, 36, strings[4]);
canvas_draw_str(canvas, 0, 48, strings[0]);
// canvas_draw_circle(canvas, 100, 26, 25);

if(state->press[0]) {
string_cat_printf(signal, "%s", string_get_cstr(right_file));
Expand Down Expand Up @@ -159,13 +157,15 @@ static void remote_render_callback(Canvas* canvas, void* ctx) {
}

canvas_draw_str(canvas, 10, 63, "[back] - skip, hold to exit");

remote_reset_state(state);
release_mutex((ValueMutex*)ctx, state);
}

static void remote_input_callback(InputEvent* input_event, void* ctx) {
osMessageQueueId_t event_queue = ctx;
osMessageQueuePut(event_queue, input_event, 0, osWaitForever);
if (input_event->type == InputTypeRelease) {
osMessageQueueId_t event_queue = ctx;
osMessageQueuePut(event_queue, input_event, 0, osWaitForever);
}
}

int32_t universal_rf_remote_app(void* p) {
Expand Down Expand Up @@ -218,15 +218,14 @@ int32_t universal_rf_remote_app(void* p) {
ValueMutex state_mutex;
if(!init_mutex(&state_mutex, &_state, sizeof(RemoteAppState))) {
FURI_LOG_D(TAG, "cannot create mutex");
return 0;
return(0);
}

ViewPort* view_port = view_port_alloc();

view_port_draw_callback_set(view_port, remote_render_callback, &state_mutex);
view_port_input_callback_set(view_port, remote_input_callback, event_queue);

// Open GUI and register view_port
Gui* gui = furi_record_open("gui");
gui_add_view_port(gui, view_port, GuiLayerFullscreen);

Expand All @@ -240,64 +239,29 @@ int32_t universal_rf_remote_app(void* p) {
input_get_type_name(event.type));

if(event.key == InputKeyRight) {
if(event.type == InputTypePress) {
state->press[0] = true;
} else if(event.type == InputTypeRelease) {
state->press[0] = false;
} else if(event.type == InputTypeShort) {
state->press[0] = false;
}
} else if(event.key == InputKeyLeft) {
if(event.type == InputTypePress) {
state->press[1] = true;
} else if(event.type == InputTypeRelease) {
state->press[1] = false;
} else if(event.type == InputTypeShort) {
state->press[1] = false;
}
} else if(event.key == InputKeyUp) {
if(event.type == InputTypePress) {
state->press[2] = true;
} else if(event.type == InputTypeRelease) {
state->press[2] = false;
} else if(event.type == InputTypeShort) {
state->press[2] = false;
}
} else if(event.key == InputKeyDown) {
if(event.type == InputTypePress) {
state->press[3] = true;
} else if(event.type == InputTypeRelease) {
state->press[3] = false;
} else if(event.type == InputTypeShort) {
state->press[3] = false;
}
} else if(event.key == InputKeyOk) {
if(event.type == InputTypePress) {
state->press[4] = true;
} else if(event.type == InputTypeRelease) {
state->press[4] = false;
} else if(event.type == InputTypeShort) {
state->press[4] = false;
}
} else if(event.key == InputKeyBack) {
if(event.type == InputTypeLong) {
release_mutex(&state_mutex, state);
break;
} else if(event.type == InputTypeShort) {
remote_reset_state(state);
}
}
release_mutex(&state_mutex, state);
view_port_update(view_port);
}

// remove & free all stuff created by app
gui_remove_view_port(gui, view_port);
view_port_free(view_port);
osMessageQueueDelete(event_queue);
delete_mutex(&state_mutex);

furi_record_close("gui");

return 0;
return(0);
}
7 changes: 7 additions & 0 deletions assets/resources/subghz/assets/universal_rf_map
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Filetype: Flipper SubGhz RAW File
Version: 1
UP: /any/subghz/Tesla.sub
DOWN: /any/subghz/P1.sub
LEFT: /any/subghz/tesla-2.sub
RIGHT: /any/subghz/Dad1.sub
OK: /any/subghz/test.sub

0 comments on commit 2b03066

Please # to comment.