SubGhz: value get optimizations

This commit is contained in:
gid9798
2023-05-09 20:19:01 +03:00
parent 752a11ba26
commit 42a415e449
5 changed files with 37 additions and 50 deletions

View File

@@ -140,7 +140,7 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) {
} else {
//Restore default setting
if(subghz->raw_send_only) {
subghz_set_defalut_preset(subghz);
subghz_set_default_preset(subghz);
} else {
subghz_txrx_set_preset(
subghz->txrx, "AM650", subghz->last_settings->frequency, NULL, 0);

View File

@@ -93,15 +93,14 @@ uint8_t subghz_scene_receiver_config_next_frequency(const uint32_t value, void*
furi_assert(context);
SubGhz* subghz = context;
uint8_t index = 0;
for(uint8_t i = 0;
i < subghz_setting_get_frequency_count(subghz_txrx_get_setting(subghz->txrx));
i++) {
if(value == subghz_setting_get_frequency(subghz_txrx_get_setting(subghz->txrx), i)) {
SubGhzSetting* setting = subghz_txrx_get_setting(subghz->txrx);
for(uint8_t i = 0; i < subghz_setting_get_frequency_count(setting); i++) {
if(value == subghz_setting_get_frequency(setting, i)) {
index = i;
break;
} else {
index =
subghz_setting_get_frequency_default_index(subghz_txrx_get_setting(subghz->txrx));
index = subghz_setting_get_frequency_default_index(setting);
}
}
return index;
@@ -111,15 +110,14 @@ uint8_t subghz_scene_receiver_config_next_preset(const char* preset_name, void*
furi_assert(context);
SubGhz* subghz = context;
uint8_t index = 0;
for(uint8_t i = 0; i < subghz_setting_get_preset_count(subghz_txrx_get_setting(subghz->txrx));
i++) {
if(!strcmp(
subghz_setting_get_preset_name(subghz_txrx_get_setting(subghz->txrx), i),
preset_name)) {
SubGhzSetting* setting = subghz_txrx_get_setting(subghz->txrx);
for(uint8_t i = 0; i < subghz_setting_get_preset_count(setting); i++) {
if(!strcmp(subghz_setting_get_preset_name(setting, i), preset_name)) {
index = i;
break;
} else {
// index = subghz_setting_get_frequency_default_index(subghz_txrx_get_setting(subghz->txrx));
// index = subghz_setting_get_frequency_default_index(setting);
}
}
return index;
@@ -148,6 +146,7 @@ uint8_t subghz_scene_receiver_config_hopper_value_index(
static void subghz_scene_receiver_config_set_frequency(VariableItem* item) {
SubGhz* subghz = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
SubGhzSetting* setting = subghz_txrx_get_setting(subghz->txrx);
if(subghz_txrx_hopper_get_state(subghz->txrx) == SubGhzHopperStateOFF) {
char text_buf[10] = {0};
@@ -155,10 +154,8 @@ static void subghz_scene_receiver_config_set_frequency(VariableItem* item) {
text_buf,
sizeof(text_buf),
"%lu.%02lu",
subghz_setting_get_frequency(subghz_txrx_get_setting(subghz->txrx), index) / 1000000,
(subghz_setting_get_frequency(subghz_txrx_get_setting(subghz->txrx), index) %
1000000) /
10000);
subghz_setting_get_frequency(setting, index) / 1000000,
(subghz_setting_get_frequency(setting, index) % 1000000) / 10000);
variable_item_set_current_value_text(item, text_buf);
SubGhzRadioPreset preset = subghz_txrx_get_preset(subghz->txrx);
@@ -166,19 +163,17 @@ static void subghz_scene_receiver_config_set_frequency(VariableItem* item) {
subghz_txrx_set_preset(
subghz->txrx,
furi_string_get_cstr(preset.name),
subghz_setting_get_frequency(subghz_txrx_get_setting(subghz->txrx), index),
subghz_setting_get_frequency(setting, index),
preset.data,
preset.data_size);
preset = subghz_txrx_get_preset(subghz->txrx);
subghz->last_settings->frequency = preset.frequency;
subghz_setting_set_default_frequency(
subghz_txrx_get_setting(subghz->txrx), preset.frequency);
subghz_setting_set_default_frequency(setting, preset.frequency);
} else {
variable_item_set_current_value_index(
item,
subghz_setting_get_frequency_default_index(subghz_txrx_get_setting(subghz->txrx)));
item, subghz_setting_get_frequency_default_index(setting));
}
}
@@ -202,42 +197,34 @@ static void subghz_scene_receiver_config_set_preset(VariableItem* item) {
static void subghz_scene_receiver_config_set_hopping_running(VariableItem* item) {
SubGhz* subghz = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
SubGhzSetting* setting = subghz_txrx_get_setting(subghz->txrx);
VariableItem* frequency_item = (VariableItem*)scene_manager_get_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig);
variable_item_set_current_value_text(item, hopping_text[index]);
if(hopping_value[index] == SubGhzHopperStateOFF) {
char text_buf[10] = {0};
uint32_t frequency = subghz_setting_get_default_frequency(setting);
snprintf(
text_buf,
sizeof(text_buf),
"%lu.%02lu",
subghz_setting_get_default_frequency(subghz_txrx_get_setting(subghz->txrx)) / 1000000,
(subghz_setting_get_default_frequency(subghz_txrx_get_setting(subghz->txrx)) %
1000000) /
10000);
variable_item_set_current_value_text(
(VariableItem*)scene_manager_get_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig),
text_buf);
frequency / 1000000,
(frequency % 1000000) / 10000);
variable_item_set_current_value_text(frequency_item, text_buf);
SubGhzRadioPreset preset = subghz_txrx_get_preset(subghz->txrx);
subghz_txrx_set_preset(
subghz->txrx,
furi_string_get_cstr(preset.name),
subghz_setting_get_default_frequency(subghz_txrx_get_setting(subghz->txrx)),
frequency,
preset.data,
preset.data_size);
variable_item_set_current_value_index(
(VariableItem*)scene_manager_get_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig),
subghz_setting_get_frequency_default_index(subghz_txrx_get_setting(subghz->txrx)));
frequency_item, subghz_setting_get_frequency_default_index(setting));
} else {
variable_item_set_current_value_text(
(VariableItem*)scene_manager_get_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig),
" -----");
variable_item_set_current_value_text(frequency_item, " -----");
variable_item_set_current_value_index(
(VariableItem*)scene_manager_get_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig),
subghz_setting_get_frequency_default_index(subghz_txrx_get_setting(subghz->txrx)));
frequency_item, subghz_setting_get_frequency_default_index(setting));
}
subghz_txrx_hopper_set_state(subghz->txrx, hopping_value[index]);
@@ -411,8 +398,8 @@ void subghz_scene_receiver_config_on_enter(void* context) {
SPEAKER_COUNT,
subghz_scene_receiver_config_set_speaker,
subghz);
value_index =
value_index_uint32(subghz_txrx_speaker_get_state(subghz->txrx), speaker_value, SPEAKER_COUNT);
value_index = value_index_uint32(
subghz_txrx_speaker_get_state(subghz->txrx), speaker_value, SPEAKER_COUNT);
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, speaker_text[value_index]);

View File

@@ -15,16 +15,16 @@ void subghz_scene_transmitter_callback(SubGhzCustomEvent event, void* context) {
bool subghz_scene_transmitter_update_data_show(void* context) {
SubGhz* subghz = context;
bool ret = false;
if(subghz_txrx_get_decoder(subghz->txrx)) {
SubGhzProtocolDecoderBase* decoder = subghz_txrx_get_decoder(subghz->txrx);
if(decoder) {
FuriString* key_str = furi_string_alloc();
FuriString* frequency_str = furi_string_alloc();
FuriString* modulation_str = furi_string_alloc();
if(subghz_protocol_decoder_base_deserialize(
subghz_txrx_get_decoder(subghz->txrx), subghz_txtx_get_fff_data(subghz->txrx)) ==
SubGhzProtocolStatusOk) {
subghz_protocol_decoder_base_get_string(
subghz_txrx_get_decoder(subghz->txrx), key_str);
decoder, subghz_txtx_get_fff_data(subghz->txrx)) == SubGhzProtocolStatusOk) {
subghz_protocol_decoder_base_get_string(decoder, key_str);
subghz_txrx_get_frequency_modulation(
subghz->txrx, frequency_str, modulation_str, false);

View File

@@ -18,7 +18,7 @@
#define TAG "SubGhz"
void subghz_set_defalut_preset(SubGhz* subghz) {
void subghz_set_default_preset(SubGhz* subghz) {
furi_assert(subghz);
subghz_txrx_set_preset(
subghz->txrx,

View File

@@ -120,7 +120,7 @@ struct SubGhz {
void* rpc_ctx;
};
void subghz_set_defalut_preset(SubGhz* subghz);
void subghz_set_default_preset(SubGhz* subghz);
void subghz_blink_start(SubGhz* subghz);
void subghz_blink_stop(SubGhz* subghz);