mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-14 22:18:35 -07:00
Xfw frequency editor add new frequencies
This commit is contained in:
@@ -9,7 +9,7 @@ App(
|
||||
"dolphin",
|
||||
"xtreme",
|
||||
],
|
||||
stack_size=1 * 1024,
|
||||
stack_size=2 * 1024,
|
||||
# icon="A_Xtreme_14",
|
||||
order=90,
|
||||
fap_category=".Main",
|
||||
|
||||
@@ -3,6 +3,7 @@ ADD_SCENE(xtreme_app, graphics, Graphics)
|
||||
ADD_SCENE(xtreme_app, statusbar, Statusbar)
|
||||
ADD_SCENE(xtreme_app, protocols, Protocols)
|
||||
ADD_SCENE(xtreme_app, protocols_frequencies, ProtocolsFrequencies)
|
||||
ADD_SCENE(xtreme_app, protocols_frequencies_add, ProtocolsFrequenciesAdd)
|
||||
ADD_SCENE(xtreme_app, dolphin, Dolphin)
|
||||
ADD_SCENE(xtreme_app, misc, Misc)
|
||||
ADD_SCENE(xtreme_app, misc_rename, MiscRename)
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
enum VarItemListIndex {
|
||||
VarItemListIndexUseDefaults,
|
||||
VarItemListIndexStaticFrequency,
|
||||
VarItemListIndexDeleteStatic,
|
||||
VarItemListIndexDeleteStaticFreq,
|
||||
VarItemListIndexAddStaticFreq,
|
||||
VarItemListIndexHopperFrequency,
|
||||
VarItemListIndexDeleteHopper,
|
||||
VarItemListIndexDeleteHopperFreq,
|
||||
VarItemListIndexAddHopperFreq,
|
||||
};
|
||||
|
||||
void xtreme_app_scene_protocols_frequencies_var_item_list_callback(void* context, uint32_t index) {
|
||||
@@ -63,6 +65,8 @@ void xtreme_app_scene_protocols_frequencies_on_enter(void* context) {
|
||||
|
||||
variable_item_list_add(var_item_list, "Delete Static Freq", 0, NULL, app);
|
||||
|
||||
variable_item_list_add(var_item_list, "Add Static Freq", 0, NULL, app);
|
||||
|
||||
item = variable_item_list_add(var_item_list, "Hopper Freq", FrequencyList_size(app->subghz_hopper_frequencies), xtreme_app_scene_protocols_frequencies_hopper_frequency_changed, app);
|
||||
app->subghz_hopper_index = 0;
|
||||
variable_item_set_current_value_index(item, app->subghz_hopper_index);
|
||||
@@ -77,6 +81,8 @@ void xtreme_app_scene_protocols_frequencies_on_enter(void* context) {
|
||||
|
||||
variable_item_list_add(var_item_list, "Delete Hopper Freq", 0, NULL, app);
|
||||
|
||||
variable_item_list_add(var_item_list, "Add Hopper Freq", 0, NULL, app);
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
var_item_list, xtreme_app_scene_protocols_frequencies_var_item_list_callback, app);
|
||||
|
||||
@@ -99,6 +105,8 @@ void remove_frequency(XtremeApp* app, FrequencyList_t list, uint8_t index) {
|
||||
}
|
||||
}
|
||||
app->save_subghz_frequencies = true;
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFrequencies);
|
||||
}
|
||||
|
||||
bool xtreme_app_scene_protocols_frequencies_on_event(void* context, SceneManagerEvent event) {
|
||||
@@ -108,21 +116,23 @@ bool xtreme_app_scene_protocols_frequencies_on_event(void* context, SceneManager
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequencies, event.event);
|
||||
consumed = true;
|
||||
bool redraw = true;
|
||||
switch(event.event) {
|
||||
case VarItemListIndexDeleteStatic:
|
||||
case VarItemListIndexDeleteStaticFreq:
|
||||
remove_frequency(app, app->subghz_static_frequencies, app->subghz_static_index);
|
||||
break;
|
||||
case VarItemListIndexDeleteHopper:
|
||||
case VarItemListIndexAddStaticFreq:
|
||||
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd, false);
|
||||
scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||
break;
|
||||
case VarItemListIndexDeleteHopperFreq:
|
||||
remove_frequency(app, app->subghz_hopper_frequencies, app->subghz_hopper_index);
|
||||
break;
|
||||
default:
|
||||
redraw = false;
|
||||
case VarItemListIndexAddHopperFreq:
|
||||
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd, true);
|
||||
scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(redraw) {
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFrequencies);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
#include "../xtreme_app.h"
|
||||
|
||||
enum TextInputIndex {
|
||||
TextInputIndexResult,
|
||||
};
|
||||
|
||||
static void xtreme_app_scene_protocols_frequencies_add_text_input_callback(void* context) {
|
||||
XtremeApp* app = context;
|
||||
|
||||
do {
|
||||
char *end;
|
||||
uint32_t value = strtol(app->subghz_freq_buffer, &end, 0);
|
||||
if(*end) break;
|
||||
value *= 10000;
|
||||
if(!furi_hal_subghz_is_frequency_valid(value)) break;
|
||||
bool is_hopper = scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||
if(is_hopper) {
|
||||
FrequencyList_push_back(app->subghz_hopper_frequencies, value);
|
||||
} else {
|
||||
FrequencyList_push_back(app->subghz_static_frequencies, value);
|
||||
}
|
||||
app->save_subghz_frequencies = true;
|
||||
} while(false);
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, TextInputIndexResult);
|
||||
}
|
||||
|
||||
void xtreme_app_scene_protocols_frequencies_add_on_enter(void* context) {
|
||||
XtremeApp* app = context;
|
||||
TextInput* text_input = app->text_input;
|
||||
|
||||
text_input_set_header_text(text_input, "Format: 12356");
|
||||
|
||||
strlcpy(app->subghz_freq_buffer, "", XTREME_SUBGHZ_FREQ_BUFFER_SIZE);
|
||||
|
||||
text_input_set_result_callback(
|
||||
text_input,
|
||||
xtreme_app_scene_protocols_frequencies_add_text_input_callback,
|
||||
app,
|
||||
app->subghz_freq_buffer,
|
||||
XTREME_SUBGHZ_FREQ_BUFFER_SIZE,
|
||||
true);
|
||||
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewTextInput);
|
||||
}
|
||||
|
||||
bool xtreme_app_scene_protocols_frequencies_add_on_event(void* context, SceneManagerEvent event) {
|
||||
XtremeApp* app = context;
|
||||
bool consumed = false;
|
||||
|
||||
if(event.type == SceneManagerEventTypeCustom) {
|
||||
consumed = true;
|
||||
switch(event.event) {
|
||||
case TextInputIndexResult:
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return consumed;
|
||||
}
|
||||
|
||||
void xtreme_app_scene_protocols_frequencies_add_on_exit(void* context) {
|
||||
XtremeApp* app = context;
|
||||
text_input_reset(app->text_input);
|
||||
}
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "xtreme/settings.h"
|
||||
#include "xtreme/assets.h"
|
||||
|
||||
#define XTREME_SUBGHZ_FREQ_BUFFER_SIZE 6
|
||||
|
||||
ARRAY_DEF(asset_packs, char*)
|
||||
|
||||
typedef struct {
|
||||
@@ -35,6 +37,7 @@ typedef struct {
|
||||
uint8_t subghz_static_index;
|
||||
FrequencyList_t subghz_hopper_frequencies;
|
||||
uint8_t subghz_hopper_index;
|
||||
char subghz_freq_buffer[XTREME_SUBGHZ_FREQ_BUFFER_SIZE];
|
||||
bool subghz_extend;
|
||||
bool subghz_bypass;
|
||||
int dolphin_level;
|
||||
|
||||
Reference in New Issue
Block a user