Skip to content

Commit 6b7b95e

Browse files
authored
Merge pull request #405 from gid9798/custom-buttons
Unification of custom buttons
2 parents 656e328 + cb12369 commit 6b7b95e

File tree

18 files changed

+199
-320
lines changed

18 files changed

+199
-320
lines changed

applications/main/subghz/scenes/subghz_scene_receiver_info.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
#include "../helpers/subghz_custom_event.h"
33
#include <lib/subghz/protocols/keeloq.h>
44
#include <lib/subghz/protocols/star_line.h>
5-
#include <lib/subghz/protocols/alutech_at_4n.h>
6-
#include <lib/subghz/protocols/nice_flor_s.h>
7-
#include <lib/subghz/protocols/somfy_telis.h>
8-
#include <lib/subghz/protocols/secplus_v2.h>
5+
6+
#include <lib/subghz/blocks/custom_btn.h>
97

108
void subghz_scene_receiver_info_callback(GuiButtonType result, InputType type, void* context) {
119
furi_assert(context);
@@ -238,10 +236,7 @@ void subghz_scene_receiver_info_on_exit(void* context) {
238236
keeloq_reset_mfname();
239237
keeloq_reset_kl_type();
240238
keeloq_reset_original_btn();
241-
alutech_reset_original_btn();
242-
nice_flors_reset_original_btn();
243-
somfy_telis_reset_original_btn();
244-
secplus2_reset_original_btn();
239+
subghz_custom_btns_reset();
245240
star_line_reset_mfname();
246241
star_line_reset_kl_type();
247242
}

applications/main/subghz/scenes/subghz_scene_rpc.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
#include "../subghz_i.h"
22
#include <lib/subghz/protocols/keeloq.h>
33
#include <lib/subghz/protocols/star_line.h>
4-
#include <lib/subghz/protocols/alutech_at_4n.h>
5-
#include <lib/subghz/protocols/nice_flor_s.h>
6-
#include <lib/subghz/protocols/somfy_telis.h>
7-
#include <lib/subghz/protocols/secplus_v2.h>
4+
5+
#include <lib/subghz/blocks/custom_btn.h>
86

97
typedef enum {
108
SubGhzRpcStateIdle,
@@ -115,10 +113,7 @@ void subghz_scene_rpc_on_exit(void* context) {
115113
keeloq_reset_mfname();
116114
keeloq_reset_kl_type();
117115
keeloq_reset_original_btn();
118-
alutech_reset_original_btn();
119-
nice_flors_reset_original_btn();
120-
somfy_telis_reset_original_btn();
121-
secplus2_reset_original_btn();
116+
subghz_custom_btns_reset();
122117
star_line_reset_mfname();
123118
star_line_reset_kl_type();
124119
}

applications/main/subghz/scenes/subghz_scene_transmitter.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
#include "../views/transmitter.h"
33
#include <dolphin/dolphin.h>
44
#include <lib/subghz/protocols/keeloq.h>
5-
#include <lib/subghz/protocols/alutech_at_4n.h>
65
#include <lib/subghz/protocols/star_line.h>
7-
#include <lib/subghz/protocols/nice_flor_s.h>
8-
#include <lib/subghz/protocols/somfy_telis.h>
9-
#include <lib/subghz/protocols/secplus_v2.h>
6+
7+
#include <lib/subghz/blocks/custom_btn.h>
108

119
void subghz_scene_transmitter_callback(SubGhzCustomEvent event, void* context) {
1210
furi_assert(context);
@@ -91,12 +89,8 @@ bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) {
9189
subghz_tx_stop(subghz);
9290
subghz_sleep(subghz);
9391
}
94-
if(keeloq_get_custom_btn() != 0) {
95-
keeloq_set_btn(0);
96-
alutech_set_btn(0);
97-
nice_flors_set_btn(0);
98-
somfy_telis_set_btn(0);
99-
secplus2_set_btn(0);
92+
if(subghz_custom_btn_get() != 0) {
93+
subghz_custom_btn_set(0);
10094
uint8_t tmp_counter = furi_hal_subghz_get_rolling_counter_mult();
10195
furi_hal_subghz_set_rolling_counter_mult(0);
10296
// Calling restore!
@@ -138,10 +132,7 @@ void subghz_scene_transmitter_on_exit(void* context) {
138132
keeloq_reset_mfname();
139133
keeloq_reset_kl_type();
140134
keeloq_reset_original_btn();
141-
alutech_reset_original_btn();
142-
nice_flors_reset_original_btn();
143-
somfy_telis_reset_original_btn();
144-
secplus2_reset_original_btn();
135+
subghz_custom_btns_reset();
145136
star_line_reset_mfname();
146137
star_line_reset_kl_type();
147138
}

applications/main/subghz/views/transmitter.c

Lines changed: 29 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44
#include <input/input.h>
55
#include <gui/elements.h>
66

7-
#include <lib/subghz/protocols/keeloq.h>
8-
#include <lib/subghz/protocols/alutech_at_4n.h>
9-
#include <lib/subghz/protocols/nice_flor_s.h>
10-
#include <lib/subghz/protocols/somfy_telis.h>
11-
#include <lib/subghz/protocols/secplus_v2.h>
7+
#include <lib/subghz/blocks/custom_btn.h>
128

139
struct SubGhzViewTransmitter {
1410
View* view;
@@ -160,30 +156,18 @@ bool subghz_view_transmitter_input(InputEvent* event, void* context) {
160156

161157
// Temp Buttons (UP)
162158
if(can_be_sent && event->key == InputKeyUp && event->type == InputTypePress) {
163-
keeloq_set_btn(1);
164-
alutech_set_btn(1);
165-
nice_flors_set_btn(1);
166-
somfy_telis_set_btn(1);
167-
secplus2_set_btn(1);
159+
subghz_custom_btn_set(1);
168160
with_view_model(
169161
subghz_transmitter->view,
170162
SubGhzViewTransmitterModel * model,
171163
{
172164
furi_string_reset(model->temp_button_id);
173-
if(keeloq_get_original_btn() != 0) {
174-
furi_string_printf(model->temp_button_id, "%01X", keeloq_get_original_btn());
175-
model->draw_temp_button = true;
176-
} else if(alutech_get_original_btn() != 0) {
177-
furi_string_printf(model->temp_button_id, "%01X", alutech_get_original_btn());
178-
model->draw_temp_button = true;
179-
} else if(nice_flors_get_original_btn() != 0) {
180-
furi_string_printf(
181-
model->temp_button_id, "%01X", nice_flors_get_original_btn());
182-
model->draw_temp_button = true;
183-
} else if(somfy_telis_get_original_btn() != 0) {
184-
furi_string_printf(
185-
model->temp_button_id, "%01X", somfy_telis_get_original_btn());
186-
model->draw_temp_button = true;
165+
if(subghz_custom_btn_get_original() != 0) {
166+
if(subghz_custom_btn_get() == 1) {
167+
furi_string_printf(
168+
model->temp_button_id, "%01X", subghz_custom_btn_get_original());
169+
model->draw_temp_button = true;
170+
}
187171
}
188172
},
189173
true);
@@ -197,30 +181,18 @@ bool subghz_view_transmitter_input(InputEvent* event, void* context) {
197181
}
198182
// Down
199183
if(can_be_sent && event->key == InputKeyDown && event->type == InputTypePress) {
200-
keeloq_set_btn(2);
201-
alutech_set_btn(2);
202-
nice_flors_set_btn(2);
203-
somfy_telis_set_btn(2);
204-
secplus2_set_btn(2);
184+
subghz_custom_btn_set(2);
205185
with_view_model(
206186
subghz_transmitter->view,
207187
SubGhzViewTransmitterModel * model,
208188
{
209189
furi_string_reset(model->temp_button_id);
210-
if(keeloq_get_original_btn() != 0) {
211-
furi_string_printf(model->temp_button_id, "%01X", keeloq_get_original_btn());
212-
model->draw_temp_button = true;
213-
} else if(alutech_get_original_btn() != 0) {
214-
furi_string_printf(model->temp_button_id, "%01X", alutech_get_original_btn());
215-
model->draw_temp_button = true;
216-
} else if(nice_flors_get_original_btn() != 0) {
217-
furi_string_printf(
218-
model->temp_button_id, "%01X", nice_flors_get_original_btn());
219-
model->draw_temp_button = true;
220-
} else if(somfy_telis_get_original_btn() != 0) {
221-
furi_string_printf(
222-
model->temp_button_id, "%01X", somfy_telis_get_original_btn());
223-
model->draw_temp_button = true;
190+
if(subghz_custom_btn_get_original() != 0) {
191+
if(subghz_custom_btn_get() == 2) {
192+
furi_string_printf(
193+
model->temp_button_id, "%01X", subghz_custom_btn_get_original());
194+
model->draw_temp_button = true;
195+
}
224196
}
225197
},
226198
true);
@@ -234,30 +206,18 @@ bool subghz_view_transmitter_input(InputEvent* event, void* context) {
234206
}
235207
// Left
236208
if(can_be_sent && event->key == InputKeyLeft && event->type == InputTypePress) {
237-
keeloq_set_btn(3);
238-
alutech_set_btn(3);
239-
nice_flors_set_btn(3);
240-
somfy_telis_set_btn(3);
241-
secplus2_set_btn(3);
209+
subghz_custom_btn_set(3);
242210
with_view_model(
243211
subghz_transmitter->view,
244212
SubGhzViewTransmitterModel * model,
245213
{
246214
furi_string_reset(model->temp_button_id);
247-
if(keeloq_get_original_btn() != 0) {
248-
furi_string_printf(model->temp_button_id, "%01X", keeloq_get_original_btn());
249-
model->draw_temp_button = true;
250-
} else if(alutech_get_original_btn() != 0) {
251-
furi_string_printf(model->temp_button_id, "%01X", alutech_get_original_btn());
252-
model->draw_temp_button = true;
253-
} else if(nice_flors_get_original_btn() != 0) {
254-
furi_string_printf(
255-
model->temp_button_id, "%01X", nice_flors_get_original_btn());
256-
model->draw_temp_button = true;
257-
} else if(somfy_telis_get_original_btn() != 0) {
258-
furi_string_printf(
259-
model->temp_button_id, "%01X", somfy_telis_get_original_btn());
260-
model->draw_temp_button = true;
215+
if(subghz_custom_btn_get_original() != 0) {
216+
if(subghz_custom_btn_get() == 3) {
217+
furi_string_printf(
218+
model->temp_button_id, "%01X", subghz_custom_btn_get_original());
219+
model->draw_temp_button = true;
220+
}
261221
}
262222
},
263223
true);
@@ -271,19 +231,18 @@ bool subghz_view_transmitter_input(InputEvent* event, void* context) {
271231
}
272232
// Right
273233
if(can_be_sent && event->key == InputKeyRight && event->type == InputTypePress) {
274-
keeloq_set_btn(4);
275-
alutech_set_btn(4);
234+
subghz_custom_btn_set(4);
276235
with_view_model(
277236
subghz_transmitter->view,
278237
SubGhzViewTransmitterModel * model,
279238
{
280239
furi_string_reset(model->temp_button_id);
281-
if(keeloq_get_original_btn() != 0) {
282-
furi_string_printf(model->temp_button_id, "%01X", keeloq_get_original_btn());
283-
model->draw_temp_button = true;
284-
} else if(alutech_get_original_btn() != 0) {
285-
furi_string_printf(model->temp_button_id, "%01X", alutech_get_original_btn());
286-
model->draw_temp_button = true;
240+
if(subghz_custom_btn_get_original() != 0) {
241+
if(subghz_custom_btn_get() == 4) {
242+
furi_string_printf(
243+
model->temp_button_id, "%01X", subghz_custom_btn_get_original());
244+
model->draw_temp_button = true;
245+
}
287246
}
288247
},
289248
true);

applications/main/subghz_remote/subghz_remote_app.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@
1919
#include <lib/subghz/types.h>
2020
#include <lib/subghz/protocols/keeloq.h>
2121
#include <lib/subghz/protocols/star_line.h>
22-
#include <lib/subghz/protocols/alutech_at_4n.h>
23-
#include <lib/subghz/protocols/nice_flor_s.h>
24-
#include <lib/subghz/protocols/somfy_telis.h>
25-
#include <lib/subghz/protocols/secplus_v2.h>
22+
23+
#include <lib/subghz/blocks/custom_btn.h>
2624

2725
#define SUBREMOTEMAP_FOLDER "/ext/subghz_remote"
2826
#define SUBREMOTEMAP_EXTENSION ".txt"
@@ -489,10 +487,7 @@ void subghz_remote_tx_stop(SubGHzRemote* app) {
489487
keeloq_reset_mfname();
490488
keeloq_reset_kl_type();
491489
keeloq_reset_original_btn();
492-
alutech_reset_original_btn();
493-
nice_flors_reset_original_btn();
494-
somfy_telis_reset_original_btn();
495-
secplus2_reset_original_btn();
490+
subghz_custom_btns_reset();
496491
star_line_reset_mfname();
497492
star_line_reset_kl_type();
498493
}

firmware/targets/f7/api_symbols.csv

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
entry,status,name,type,params
2-
Version,+,20.0,,
2+
Version,+,20.1,,
33
Header,+,applications/services/bt/bt_service/bt.h,,
44
Header,+,applications/services/cli/cli.h,,
55
Header,+,applications/services/cli/cli_vcp.h,,
@@ -503,10 +503,6 @@ Function,-,acosl,long double,long double
503503
Function,-,aligned_alloc,void*,"size_t, size_t"
504504
Function,+,aligned_free,void,void*
505505
Function,+,aligned_malloc,void*,"size_t, size_t"
506-
Function,-,alutech_get_custom_btn,uint8_t,
507-
Function,-,alutech_get_original_btn,uint8_t,
508-
Function,-,alutech_reset_original_btn,void,
509-
Function,-,alutech_set_btn,void,uint8_t
510506
Function,-,arc4random,__uint32_t,
511507
Function,-,arc4random_buf,void,"void*, size_t"
512508
Function,-,arc4random_uniform,__uint32_t,__uint32_t
@@ -1780,12 +1776,9 @@ Function,-,j1f,float,float
17801776
Function,-,jn,double,"int, double"
17811777
Function,-,jnf,float,"int, float"
17821778
Function,-,jrand48,long,unsigned short[3]
1783-
Function,-,keeloq_get_custom_btn,uint8_t,
1784-
Function,-,keeloq_get_original_btn,uint8_t,
17851779
Function,-,keeloq_reset_kl_type,void,
17861780
Function,-,keeloq_reset_mfname,void,
17871781
Function,-,keeloq_reset_original_btn,void,
1788-
Function,-,keeloq_set_btn,void,uint8_t
17891782
Function,-,l64a,char*,long
17901783
Function,-,labs,long,long
17911784
Function,-,lcong48,void,unsigned short[7]
@@ -2093,10 +2086,6 @@ Function,-,nfca_get_crc16,uint16_t,"uint8_t*, uint16_t"
20932086
Function,-,nfca_signal_alloc,NfcaSignal*,
20942087
Function,-,nfca_signal_encode,void,"NfcaSignal*, uint8_t*, uint16_t, uint8_t*"
20952088
Function,-,nfca_signal_free,void,NfcaSignal*
2096-
Function,-,nice_flors_get_custom_btn,uint8_t,
2097-
Function,-,nice_flors_get_original_btn,uint8_t,
2098-
Function,-,nice_flors_reset_original_btn,void,
2099-
Function,-,nice_flors_set_btn,void,uint8_t
21002089
Function,+,notification_internal_message,void,"NotificationApp*, const NotificationSequence*"
21012090
Function,+,notification_internal_message_block,void,"NotificationApp*, const NotificationSequence*"
21022091
Function,+,notification_message,void,"NotificationApp*, const NotificationSequence*"
@@ -2464,10 +2453,6 @@ Function,+,scene_manager_search_and_switch_to_previous_scene_one_of,_Bool,"Scene
24642453
Function,+,scene_manager_set_scene_state,void,"SceneManager*, uint32_t, uint32_t"
24652454
Function,+,scene_manager_stop,void,SceneManager*
24662455
Function,+,sd_api_get_fs_type_text,const char*,SDFsType
2467-
Function,-,secplus2_get_custom_btn,uint8_t,
2468-
Function,-,secplus2_get_original_btn,uint8_t,
2469-
Function,-,secplus2_reset_original_btn,void,
2470-
Function,-,secplus2_set_btn,void,uint8_t
24712456
Function,-,secure_getenv,char*,const char*
24722457
Function,-,seed48,unsigned short*,unsigned short[3]
24732458
Function,-,select,int,"int, fd_set*, fd_set*, fd_set*, timeval*"
@@ -2503,10 +2488,6 @@ Function,-,siprintf,int,"char*, const char*, ..."
25032488
Function,-,siscanf,int,"const char*, const char*, ..."
25042489
Function,-,sniprintf,int,"char*, size_t, const char*, ..."
25052490
Function,+,snprintf,int,"char*, size_t, const char*, ..."
2506-
Function,-,somfy_telis_get_custom_btn,uint8_t,
2507-
Function,-,somfy_telis_get_original_btn,uint8_t,
2508-
Function,-,somfy_telis_reset_original_btn,void,
2509-
Function,-,somfy_telis_set_btn,void,uint8_t
25102491
Function,-,sprintf,int,"char*, const char*, ..."
25112492
Function,-,sqrt,double,double
25122493
Function,-,sqrtf,float,float
@@ -2663,6 +2644,12 @@ Function,+,subghz_block_generic_deserialize,SubGhzProtocolStatus,"SubGhzBlockGen
26632644
Function,+,subghz_block_generic_deserialize_check_count_bit,SubGhzProtocolStatus,"SubGhzBlockGeneric*, FlipperFormat*, uint16_t"
26642645
Function,+,subghz_block_generic_get_preset_name,void,"const char*, FuriString*"
26652646
Function,+,subghz_block_generic_serialize,SubGhzProtocolStatus,"SubGhzBlockGeneric*, FlipperFormat*, SubGhzRadioPreset*"
2647+
Function,-,subghz_custom_btn_get,uint8_t,
2648+
Function,-,subghz_custom_btn_get_original,uint8_t,
2649+
Function,-,subghz_custom_btn_set,void,uint8_t
2650+
Function,-,subghz_custom_btn_set_max,void,uint8_t
2651+
Function,-,subghz_custom_btn_set_original,void,uint8_t
2652+
Function,-,subghz_custom_btns_reset,void,
26662653
Function,+,subghz_environment_alloc,SubGhzEnvironment*,
26672654
Function,+,subghz_environment_free,void,SubGhzEnvironment*
26682655
Function,+,subghz_environment_get_alutech_at_4n_rainbow_table_file_name,const char*,SubGhzEnvironment*

lib/subghz/blocks/custom_btn.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include "custom_btn.h"
2+
3+
static uint8_t custom_btn_id;
4+
static uint8_t custom_btn_original;
5+
static uint8_t custom_btn_max_btns = 0;
6+
7+
void subghz_custom_btn_set(uint8_t b) {
8+
if(b > custom_btn_max_btns) {
9+
custom_btn_id = 0;
10+
} else {
11+
custom_btn_id = b;
12+
}
13+
}
14+
15+
uint8_t subghz_custom_btn_get() {
16+
return custom_btn_id;
17+
}
18+
19+
void subghz_custom_btn_set_original(uint8_t b) {
20+
custom_btn_original = b;
21+
}
22+
23+
uint8_t subghz_custom_btn_get_original() {
24+
return custom_btn_original;
25+
}
26+
27+
void subghz_custom_btn_set_max(uint8_t b) {
28+
custom_btn_max_btns = b;
29+
}
30+
31+
void subghz_custom_btns_reset() {
32+
custom_btn_original = 0;
33+
custom_btn_max_btns = 0;
34+
}

0 commit comments

Comments
 (0)