From d87df3e6c25dddc71891c255dffdf05a7e81ea4d Mon Sep 17 00:00:00 2001 From: gid9798 <30450294+gid9798@users.noreply.github.com> Date: Sun, 14 May 2023 01:34:43 +0300 Subject: [PATCH] Change custom btn sending logic --- applications/main/subghz/views/transmitter.c | 73 ++++++++++---------- firmware/targets/f7/api_symbols.csv | 5 +- lib/subghz/blocks/custom_btn.c | 8 ++- lib/subghz/blocks/custom_btn.h | 6 +- 4 files changed, 52 insertions(+), 40 deletions(-) diff --git a/applications/main/subghz/views/transmitter.c b/applications/main/subghz/views/transmitter.c index 08db03334..7ae865064 100644 --- a/applications/main/subghz/views/transmitter.c +++ b/applications/main/subghz/views/transmitter.c @@ -156,43 +156,46 @@ bool subghz_view_transmitter_input(InputEvent* event, void* context) { return true; } // Finish "OK" key processing - uint8_t temp_btn_id; - if(event->key == InputKeyUp) { - temp_btn_id = SUBGHZ_CUSTOM_BTN_UP; - } else if(event->key == InputKeyDown) { - temp_btn_id = SUBGHZ_CUSTOM_BTN_DOWN; - } else if(event->key == InputKeyLeft) { - temp_btn_id = SUBGHZ_CUSTOM_BTN_LEFT; - } else if(event->key == InputKeyRight) { - temp_btn_id = SUBGHZ_CUSTOM_BTN_RIGHT; - } else { - // Finish processing if the button is different - return true; - } + if(subghz_custom_btn_is_allowed()) { + uint8_t temp_btn_id; + if(event->key == InputKeyUp) { + temp_btn_id = SUBGHZ_CUSTOM_BTN_UP; + } else if(event->key == InputKeyDown) { + temp_btn_id = SUBGHZ_CUSTOM_BTN_DOWN; + } else if(event->key == InputKeyLeft) { + temp_btn_id = SUBGHZ_CUSTOM_BTN_LEFT; + } else if(event->key == InputKeyRight) { + temp_btn_id = SUBGHZ_CUSTOM_BTN_RIGHT; + } else { + // Finish processing if the button is different + return true; + } - if(event->type == InputTypePress) { - subghz_custom_btn_set(temp_btn_id); - with_view_model( - subghz_transmitter->view, - SubGhzViewTransmitterModel * model, - { - furi_string_reset(model->temp_button_id); - if(subghz_custom_btn_get_original() != 0) { - if(subghz_custom_btn_get() == temp_btn_id) { - furi_string_printf( - model->temp_button_id, "%01X", subghz_custom_btn_get_original()); - model->draw_temp_button = true; + if(event->type == InputTypePress) { + with_view_model( + subghz_transmitter->view, + SubGhzViewTransmitterModel * model, + { + furi_string_reset(model->temp_button_id); + if(subghz_custom_btn_get_original() != 0) { + if(subghz_custom_btn_set(temp_btn_id)) { + furi_string_printf( + model->temp_button_id, + "%01X", + subghz_custom_btn_get_original()); + model->draw_temp_button = true; + } } - } - }, - true); - subghz_transmitter->callback( - SubGhzCustomEventViewTransmitterSendStart, subghz_transmitter->context); - return true; - } else if(event->type == InputTypeRelease) { - subghz_transmitter->callback( - SubGhzCustomEventViewTransmitterSendStop, subghz_transmitter->context); - return true; + }, + true); + subghz_transmitter->callback( + SubGhzCustomEventViewTransmitterSendStart, subghz_transmitter->context); + return true; + } else if(event->type == InputTypeRelease) { + subghz_transmitter->callback( + SubGhzCustomEventViewTransmitterSendStop, subghz_transmitter->context); + return true; + } } } diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 7eac9ab00..4bf96d2a9 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,26.2,, +Version,+,26.3,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/cli/cli.h,, Header,+,applications/services/cli/cli_vcp.h,, @@ -2703,7 +2703,8 @@ Function,+,subghz_block_generic_get_preset_name,void,"const char*, FuriString*" Function,+,subghz_block_generic_serialize,SubGhzProtocolStatus,"SubGhzBlockGeneric*, FlipperFormat*, SubGhzRadioPreset*" Function,-,subghz_custom_btn_get,uint8_t, Function,-,subghz_custom_btn_get_original,uint8_t, -Function,-,subghz_custom_btn_set,void,uint8_t +Function,-,subghz_custom_btn_is_allowed,_Bool, +Function,-,subghz_custom_btn_set,_Bool,uint8_t Function,-,subghz_custom_btn_set_max,void,uint8_t Function,-,subghz_custom_btn_set_original,void,uint8_t Function,-,subghz_custom_btns_reset,void, diff --git a/lib/subghz/blocks/custom_btn.c b/lib/subghz/blocks/custom_btn.c index 158c10a2f..275a4c930 100644 --- a/lib/subghz/blocks/custom_btn.c +++ b/lib/subghz/blocks/custom_btn.c @@ -4,11 +4,13 @@ static uint8_t custom_btn_id = SUBGHZ_CUSTOM_BTN_OK; static uint8_t custom_btn_original = 0; static uint8_t custom_btn_max_btns = 0; -void subghz_custom_btn_set(uint8_t btn_id) { +bool subghz_custom_btn_set(uint8_t btn_id) { if(btn_id > custom_btn_max_btns) { custom_btn_id = SUBGHZ_CUSTOM_BTN_OK; + return false; } else { custom_btn_id = btn_id; + return true; } } @@ -31,4 +33,8 @@ void subghz_custom_btn_set_max(uint8_t b) { void subghz_custom_btns_reset() { custom_btn_original = 0; custom_btn_max_btns = 0; +} + +bool subghz_custom_btn_is_allowed() { + return custom_btn_max_btns != 0; } \ No newline at end of file diff --git a/lib/subghz/blocks/custom_btn.h b/lib/subghz/blocks/custom_btn.h index a92567321..c13842fa8 100644 --- a/lib/subghz/blocks/custom_btn.h +++ b/lib/subghz/blocks/custom_btn.h @@ -11,7 +11,7 @@ #define SUBGHZ_CUSTOM_BTN_LEFT (3U) #define SUBGHZ_CUSTOM_BTN_RIGHT (4U) -void subghz_custom_btn_set(uint8_t btn_id); +bool subghz_custom_btn_set(uint8_t btn_id); uint8_t subghz_custom_btn_get(); @@ -21,4 +21,6 @@ uint8_t subghz_custom_btn_get_original(); void subghz_custom_btn_set_max(uint8_t b); -void subghz_custom_btns_reset(); \ No newline at end of file +void subghz_custom_btns_reset(); + +bool subghz_custom_btn_is_allowed(); \ No newline at end of file