mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 22:58:36 -07:00
Xfw frequency editor add new frequencies
This commit is contained in:
@@ -9,7 +9,7 @@ App(
|
|||||||
"dolphin",
|
"dolphin",
|
||||||
"xtreme",
|
"xtreme",
|
||||||
],
|
],
|
||||||
stack_size=1 * 1024,
|
stack_size=2 * 1024,
|
||||||
# icon="A_Xtreme_14",
|
# icon="A_Xtreme_14",
|
||||||
order=90,
|
order=90,
|
||||||
fap_category=".Main",
|
fap_category=".Main",
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ ADD_SCENE(xtreme_app, graphics, Graphics)
|
|||||||
ADD_SCENE(xtreme_app, statusbar, Statusbar)
|
ADD_SCENE(xtreme_app, statusbar, Statusbar)
|
||||||
ADD_SCENE(xtreme_app, protocols, Protocols)
|
ADD_SCENE(xtreme_app, protocols, Protocols)
|
||||||
ADD_SCENE(xtreme_app, protocols_frequencies, ProtocolsFrequencies)
|
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, dolphin, Dolphin)
|
||||||
ADD_SCENE(xtreme_app, misc, Misc)
|
ADD_SCENE(xtreme_app, misc, Misc)
|
||||||
ADD_SCENE(xtreme_app, misc_rename, MiscRename)
|
ADD_SCENE(xtreme_app, misc_rename, MiscRename)
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
enum VarItemListIndex {
|
enum VarItemListIndex {
|
||||||
VarItemListIndexUseDefaults,
|
VarItemListIndexUseDefaults,
|
||||||
VarItemListIndexStaticFrequency,
|
VarItemListIndexStaticFrequency,
|
||||||
VarItemListIndexDeleteStatic,
|
VarItemListIndexDeleteStaticFreq,
|
||||||
|
VarItemListIndexAddStaticFreq,
|
||||||
VarItemListIndexHopperFrequency,
|
VarItemListIndexHopperFrequency,
|
||||||
VarItemListIndexDeleteHopper,
|
VarItemListIndexDeleteHopperFreq,
|
||||||
|
VarItemListIndexAddHopperFreq,
|
||||||
};
|
};
|
||||||
|
|
||||||
void xtreme_app_scene_protocols_frequencies_var_item_list_callback(void* context, uint32_t index) {
|
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, "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);
|
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;
|
app->subghz_hopper_index = 0;
|
||||||
variable_item_set_current_value_index(item, app->subghz_hopper_index);
|
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, "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(
|
variable_item_list_set_enter_callback(
|
||||||
var_item_list, xtreme_app_scene_protocols_frequencies_var_item_list_callback, app);
|
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;
|
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) {
|
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) {
|
if(event.type == SceneManagerEventTypeCustom) {
|
||||||
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequencies, event.event);
|
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequencies, event.event);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
bool redraw = true;
|
|
||||||
switch(event.event) {
|
switch(event.event) {
|
||||||
case VarItemListIndexDeleteStatic:
|
case VarItemListIndexDeleteStaticFreq:
|
||||||
remove_frequency(app, app->subghz_static_frequencies, app->subghz_static_index);
|
remove_frequency(app, app->subghz_static_frequencies, app->subghz_static_index);
|
||||||
break;
|
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);
|
remove_frequency(app, app->subghz_hopper_frequencies, app->subghz_hopper_index);
|
||||||
break;
|
break;
|
||||||
default:
|
case VarItemListIndexAddHopperFreq:
|
||||||
redraw = false;
|
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd, true);
|
||||||
|
scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
break;
|
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/settings.h"
|
||||||
#include "xtreme/assets.h"
|
#include "xtreme/assets.h"
|
||||||
|
|
||||||
|
#define XTREME_SUBGHZ_FREQ_BUFFER_SIZE 6
|
||||||
|
|
||||||
ARRAY_DEF(asset_packs, char*)
|
ARRAY_DEF(asset_packs, char*)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -35,6 +37,7 @@ typedef struct {
|
|||||||
uint8_t subghz_static_index;
|
uint8_t subghz_static_index;
|
||||||
FrequencyList_t subghz_hopper_frequencies;
|
FrequencyList_t subghz_hopper_frequencies;
|
||||||
uint8_t subghz_hopper_index;
|
uint8_t subghz_hopper_index;
|
||||||
|
char subghz_freq_buffer[XTREME_SUBGHZ_FREQ_BUFFER_SIZE];
|
||||||
bool subghz_extend;
|
bool subghz_extend;
|
||||||
bool subghz_bypass;
|
bool subghz_bypass;
|
||||||
int dolphin_level;
|
int dolphin_level;
|
||||||
|
|||||||
Reference in New Issue
Block a user