mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-23 21:13:16 +00:00
Merge pull request #50 from darmiel/fix/infrared-buttons
fix[infrared]: fixed crash if button out of bounds and sending wrong signals
This commit is contained in:
commit
eb28dc2e20
5 changed files with 22 additions and 0 deletions
|
@ -83,6 +83,15 @@ ButtonPanel* button_panel_alloc() {
|
||||||
return button_panel;
|
return button_panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void button_panel_reset_selection(ButtonPanel* button_panel) {
|
||||||
|
with_view_model(
|
||||||
|
button_panel->view, (ButtonPanelModel * model) {
|
||||||
|
model->selected_item_x = 0;
|
||||||
|
model->selected_item_y = 0;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void button_panel_reserve(ButtonPanel* button_panel, size_t reserve_x, size_t reserve_y) {
|
void button_panel_reserve(ButtonPanel* button_panel, size_t reserve_x, size_t reserve_y) {
|
||||||
furi_check(reserve_x > 0);
|
furi_check(reserve_x > 0);
|
||||||
furi_check(reserve_y > 0);
|
furi_check(reserve_y > 0);
|
||||||
|
|
|
@ -35,6 +35,12 @@ void button_panel_free(ButtonPanel* button_panel);
|
||||||
*/
|
*/
|
||||||
void button_panel_reset(ButtonPanel* button_panel);
|
void button_panel_reset(ButtonPanel* button_panel);
|
||||||
|
|
||||||
|
/** Resets selected_item_x and selected_item_y.
|
||||||
|
*
|
||||||
|
* @param button_panel ButtonPanel instance
|
||||||
|
*/
|
||||||
|
void button_panel_reset_selection(ButtonPanel* button_panel);
|
||||||
|
|
||||||
/** Reserve space for adding items.
|
/** Reserve space for adding items.
|
||||||
*
|
*
|
||||||
* One does not simply use button_panel_add_item() without this function. It
|
* One does not simply use button_panel_add_item() without this function. It
|
||||||
|
|
|
@ -35,6 +35,10 @@ InfraredBruteForce* infrared_brute_force_alloc() {
|
||||||
return brute_force;
|
return brute_force;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void infrared_brute_force_clear_records(InfraredBruteForce* brute_force) {
|
||||||
|
InfraredBruteForceRecordDict_reset(brute_force->records);
|
||||||
|
}
|
||||||
|
|
||||||
void infrared_brute_force_free(InfraredBruteForce* brute_force) {
|
void infrared_brute_force_free(InfraredBruteForce* brute_force) {
|
||||||
furi_assert(!brute_force->ff);
|
furi_assert(!brute_force->ff);
|
||||||
InfraredBruteForceRecordDict_clear(brute_force->records);
|
InfraredBruteForceRecordDict_clear(brute_force->records);
|
||||||
|
|
|
@ -16,6 +16,7 @@ bool infrared_brute_force_start(
|
||||||
bool infrared_brute_force_is_started(InfraredBruteForce* brute_force);
|
bool infrared_brute_force_is_started(InfraredBruteForce* brute_force);
|
||||||
void infrared_brute_force_stop(InfraredBruteForce* brute_force);
|
void infrared_brute_force_stop(InfraredBruteForce* brute_force);
|
||||||
bool infrared_brute_force_send_next(InfraredBruteForce* brute_force);
|
bool infrared_brute_force_send_next(InfraredBruteForce* brute_force);
|
||||||
|
void infrared_brute_force_clear_records(InfraredBruteForce* brute_force);
|
||||||
void infrared_brute_force_add_record(
|
void infrared_brute_force_add_record(
|
||||||
InfraredBruteForce* brute_force,
|
InfraredBruteForce* brute_force,
|
||||||
uint32_t index,
|
uint32_t index,
|
||||||
|
|
|
@ -33,6 +33,8 @@ static void infrared_scene_universal_common_hide_popup(Infrared* infrared) {
|
||||||
|
|
||||||
void infrared_scene_universal_common_on_enter(void* context) {
|
void infrared_scene_universal_common_on_enter(void* context) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
|
infrared_brute_force_clear_records(infrared->brute_force);
|
||||||
|
button_panel_reset_selection(infrared->button_panel);
|
||||||
view_stack_add_view(infrared->view_stack, button_panel_get_view(infrared->button_panel));
|
view_stack_add_view(infrared->view_stack, button_panel_get_view(infrared->button_panel));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue