Skip to content

Commit 12808bd

Browse files
committed
FW-specific macros, debug-locked items, reorder config
1 parent 1ef6e01 commit 12808bd

File tree

4 files changed

+39
-13
lines changed

4 files changed

+39
-13
lines changed

mag.c

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ static MagSetting* mag_setting_alloc() {
2929
setting->tx = SETTING_DEFAULT_TX_RFID;
3030
setting->us_clock = SETTING_DEFAULT_US_CLOCK;
3131
setting->us_interpacket = SETTING_DEFAULT_US_INTERPACKET;
32+
setting->is_debug = furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug);
3233

3334
return setting;
3435
}

mag_i.h

+11
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@
3636

3737
#define MAG_TEXT_STORE_SIZE 150
3838

39+
// CFWs have `submenue_add_lockable_item`; OFW doesn't,
40+
// replace with conditional submenu item
41+
#ifdef FW_ORIGIN_Official
42+
#define submenu_add_lockable_item( \
43+
submenu, label, index, callback, callback_context, locked, locked_message) \
44+
if(!locked) { \
45+
submenu_add_item(submenu, label, index, callback, callback_context) \
46+
}
47+
#endif
48+
3949
enum MagCustomEvent {
4050
MagEventNext = 100,
4151
MagEventExit,
@@ -48,6 +58,7 @@ typedef struct {
4858
MagReverseState reverse;
4959
uint32_t us_clock;
5060
uint32_t us_interpacket;
61+
bool is_debug;
5162
} MagSetting;
5263

5364
typedef struct {

scenes/mag_scene_emulate_config.c

+19-12
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,13 @@ void mag_scene_emulate_config_on_enter(void* context) {
188188
VariableItem* item;
189189
uint8_t value_index;
190190

191-
// TX
191+
// Clock
192192
item = variable_item_list_add(
193-
mag->variable_item_list, "TX via:", TX_COUNT, mag_scene_emulate_config_set_tx, mag);
194-
value_index = value_index_uint32(mag->setting->tx, tx_value, TX_COUNT);
193+
mag->variable_item_list, "Clock:", CLOCK_COUNT, mag_scene_emulate_config_set_clock, mag);
194+
value_index = value_index_uint32(mag->setting->us_clock, clock_value, CLOCK_COUNT);
195195
scene_manager_set_scene_state(mag->scene_manager, MagSceneEmulateConfig, (uint32_t)item);
196196
variable_item_set_current_value_index(item, value_index);
197-
variable_item_set_current_value_text(item, tx_text[value_index]);
197+
variable_item_set_current_value_text(item, clock_text[value_index]);
198198

199199
// Track
200200
item = variable_item_list_add(
@@ -217,14 +217,21 @@ void mag_scene_emulate_config_on_enter(void* context) {
217217
variable_item_set_current_value_index(item, value_index);
218218
variable_item_set_current_value_text(item, reverse_text[value_index]);
219219

220-
// Clock
221-
item = variable_item_list_add(
222-
mag->variable_item_list, "Clock:", CLOCK_COUNT, mag_scene_emulate_config_set_clock, mag);
223-
value_index = value_index_uint32(mag->setting->us_clock, clock_value, CLOCK_COUNT);
224-
scene_manager_set_scene_state(mag->scene_manager, MagSceneEmulateConfig, (uint32_t)item);
225-
variable_item_set_current_value_index(item, value_index);
226-
variable_item_set_current_value_text(item, clock_text[value_index]);
227-
220+
// TX
221+
#ifdef FW_ORIGIN_Official
222+
if(mag->setting->is_debug) {
223+
#endif
224+
item = variable_item_list_add(
225+
mag->variable_item_list, "TX via:", TX_COUNT, mag_scene_emulate_config_set_tx, mag);
226+
value_index = value_index_uint32(mag->setting->tx, tx_value, TX_COUNT);
227+
scene_manager_set_scene_state(mag->scene_manager, MagSceneEmulateConfig, (uint32_t)item);
228+
variable_item_set_current_value_index(item, value_index);
229+
variable_item_set_current_value_text(item, tx_text[value_index]);
230+
#ifdef FW_ORIGIN_Official
231+
}
232+
#else
233+
variable_item_set_locked(item, !mag->setting->is_debug, "Enable Debug!");
234+
#endif
228235
// Interpacket
229236
/*
230237
item = variable_item_list_add(

scenes/mag_scene_start.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ void mag_scene_start_on_enter(void* context) {
1818
Submenu* submenu = mag->submenu;
1919

2020
submenu_add_item(submenu, "Saved", SubmenuIndexSaved, mag_scene_start_submenu_callback, mag);
21-
submenu_add_item(submenu, "Read", SubmenuIndexRead, mag_scene_start_submenu_callback, mag);
21+
submenu_add_lockable_item(
22+
submenu,
23+
"Read",
24+
SubmenuIndexRead,
25+
mag_scene_start_submenu_callback,
26+
mag,
27+
!mag->setting->is_debug,
28+
"Enable Debug!");
2229
//submenu_add_item(
2330
// submenu, "Add Manually", SubmenuIndexAddManually, mag_scene_start_submenu_callback, mag);
2431
submenu_add_item(submenu, "About", SubmenuIndexAbout, mag_scene_start_submenu_callback, mag);

0 commit comments

Comments
 (0)