diff --git a/CHANGELOG.md b/CHANGELOG.md index d788c7414..c970574cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - NFC: Cyborg Detector (by @RocketGod-git) - Sub-GHz: Radio Scanner (by @RocketGod-git) - Sub-GHz: + - Show satellites count with an icon (#215 by @m7i-org) - Add Bresser 3CH weather station protocol (#217 by @m7i-org) - UL: Add Marantec24 protocol (static 24 bit) with add manually (by @xMasterX) - UL: Add GangQi protocol (static 34 bit) with button parsing and add manually (by @xMasterX & @Skorpionm) diff --git a/applications/main/subghz/scenes/subghz_scene_decode_raw.c b/applications/main/subghz/scenes/subghz_scene_decode_raw.c index 9ce344c00..bdab0a434 100644 --- a/applications/main/subghz/scenes/subghz_scene_decode_raw.c +++ b/applications/main/subghz/scenes/subghz_scene_decode_raw.c @@ -7,11 +7,13 @@ static void subghz_scene_receiver_update_statusbar(void* context) { SubGhz* subghz = context; FuriString* history_stat_str = furi_string_alloc(); + bool show_sats = subghz->gps && furi_hal_rtc_get_timestamp() % 2; if(!subghz_history_get_text_space_left( subghz->history, history_stat_str, - subghz->gps ? subghz->gps->satellites : 0, - subghz->last_settings->delete_old_signals)) { + subghz->last_settings->delete_old_signals, + show_sats, + show_sats ? subghz->gps->satellites : 0)) { FuriString* frequency_str = furi_string_alloc(); FuriString* modulation_str = furi_string_alloc(); @@ -25,6 +27,7 @@ static void subghz_scene_receiver_update_statusbar(void* context) { furi_string_get_cstr(history_stat_str), subghz_txrx_hopper_get_state(subghz->txrx) != SubGhzHopperStateOFF, READ_BIT(subghz->filter, SubGhzProtocolFlag_BinRAW) > 0, + show_sats, subghz->repeater); furi_string_free(frequency_str); @@ -37,6 +40,7 @@ static void subghz_scene_receiver_update_statusbar(void* context) { "", subghz_txrx_hopper_get_state(subghz->txrx) != SubGhzHopperStateOFF, READ_BIT(subghz->filter, SubGhzProtocolFlag_BinRAW) > 0, + show_sats, subghz->repeater); } furi_string_free(history_stat_str); diff --git a/applications/main/subghz/scenes/subghz_scene_receiver.c b/applications/main/subghz/scenes/subghz_scene_receiver.c index a0946b313..ce824fed0 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver.c @@ -50,11 +50,13 @@ const NotificationSequence subghz_sequence_tx_beep = { static void subghz_scene_receiver_update_statusbar(void* context) { SubGhz* subghz = context; FuriString* history_stat_str = furi_string_alloc(); + bool show_sats = subghz->gps && furi_hal_rtc_get_timestamp() % 2; if(!subghz_history_get_text_space_left( subghz->history, history_stat_str, - subghz->gps ? subghz->gps->satellites : 0, - subghz->last_settings->delete_old_signals)) { + subghz->last_settings->delete_old_signals, + show_sats, + show_sats ? subghz->gps->satellites : 0)) { FuriString* frequency_str = furi_string_alloc(); FuriString* modulation_str = furi_string_alloc(); @@ -87,6 +89,7 @@ static void subghz_scene_receiver_update_statusbar(void* context) { furi_string_get_cstr(history_stat_str), subghz_txrx_hopper_get_state(subghz->txrx) != SubGhzHopperStateOFF, READ_BIT(subghz->filter, SubGhzProtocolFlag_BinRAW) > 0, + show_sats, subghz->repeater); furi_string_free(frequency_str); @@ -99,6 +102,7 @@ static void subghz_scene_receiver_update_statusbar(void* context) { "", subghz_txrx_hopper_get_state(subghz->txrx) != SubGhzHopperStateOFF, READ_BIT(subghz->filter, SubGhzProtocolFlag_BinRAW) > 0, + show_sats, subghz->repeater); } furi_string_free(history_stat_str); diff --git a/applications/main/subghz/subghz_history.c b/applications/main/subghz/subghz_history.c index ccc6e3ecb..eefa798ed 100644 --- a/applications/main/subghz/subghz_history.c +++ b/applications/main/subghz/subghz_history.c @@ -193,8 +193,9 @@ FlipperFormat* subghz_history_get_raw_data(SubGhzHistory* instance, uint16_t idx bool subghz_history_get_text_space_left( SubGhzHistory* instance, FuriString* output, - uint8_t sats, - bool ignore_full) { + bool ignore_full, + bool show_sats, + uint8_t sats) { furi_assert(instance); if(!ignore_full) { if(memmgr_get_free_heap() < SUBGHZ_HISTORY_FREE_HEAP) { @@ -207,14 +208,10 @@ bool subghz_history_get_text_space_left( } } if(output != NULL) { - if(sats == 0) { - furi_string_printf(output, "%02u", instance->last_index_write); + if(show_sats) { + furi_string_printf(output, "%d", sats); } else { - if(furi_hal_rtc_get_timestamp() % 2) { - furi_string_printf(output, "%02u", instance->last_index_write); - } else { - furi_string_printf(output, "%d sats", sats); - } + furi_string_printf(output, "%02u", instance->last_index_write); } } return false; diff --git a/applications/main/subghz/subghz_history.h b/applications/main/subghz/subghz_history.h index d7f53d78f..c64cf01c0 100644 --- a/applications/main/subghz/subghz_history.h +++ b/applications/main/subghz/subghz_history.h @@ -118,19 +118,21 @@ void subghz_history_get_text_item_menu(SubGhzHistory* instance, FuriString* outp */ void subghz_history_get_time_item_menu(SubGhzHistory* instance, FuriString* output, uint16_t idx); -/** Get string the remaining number of records to history +/** Get string the remaining number of records to history, or sats * - * @param instance - SubGhzHistory instance - * @param output - FuriString* output - * @param sats - Number of satellites + * @param instance - SubGhzHistory instance + * @param output - FuriString* output * @param ignore_full - Ignore if history is full + * @param show_sats - Whether to show the satellite number + * @param sats - Number of satellites * @return bool - is FULL */ bool subghz_history_get_text_space_left( SubGhzHistory* instance, FuriString* output, - uint8_t sats, - bool ignore_full); + bool ignore_full, + bool show_sats, + uint8_t sats); /** Return last index * diff --git a/applications/main/subghz/views/receiver.c b/applications/main/subghz/views/receiver.c index 232ff9be4..af4a68f1d 100644 --- a/applications/main/subghz/views/receiver.c +++ b/applications/main/subghz/views/receiver.c @@ -66,6 +66,7 @@ typedef struct { FuriString* progress_str; bool hopping_enabled; bool bin_raw_enabled; + bool show_sats; SubGhzRepeaterState repeater_state; SubGhzReceiverHistory* history; uint16_t idx; @@ -210,6 +211,7 @@ void subghz_view_receiver_add_data_statusbar( const char* history_stat_str, bool hopping_enabled, bool bin_raw_enabled, + bool show_sats, SubGhzRepeaterState repeater_state) { furi_assert(subghz_receiver); with_view_model( @@ -221,6 +223,7 @@ void subghz_view_receiver_add_data_statusbar( furi_string_set(model->history_stat_str, history_stat_str); model->hopping_enabled = hopping_enabled; model->bin_raw_enabled = bin_raw_enabled; + model->show_sats = show_sats; model->repeater_state = repeater_state; }, true); @@ -408,7 +411,11 @@ void subghz_view_receiver_draw(Canvas* canvas, SubGhzViewReceiverModel* model) { AlignRight, AlignBottom, furi_string_get_cstr(model->history_stat_str)); - canvas_draw_icon(canvas, 116, 53, &I_sub1_10px); + if(model->show_sats) { + canvas_draw_icon(canvas, 118, 54, &I_Sats_6x9); + } else { + canvas_draw_icon(canvas, 116, 53, &I_sub1_10px); + } } canvas_set_font(canvas, FontSecondary); elements_bold_rounded_frame(canvas, 14, 8, 99, 48); @@ -453,7 +460,11 @@ void subghz_view_receiver_draw(Canvas* canvas, SubGhzViewReceiverModel* model) { AlignRight, AlignBottom, furi_string_get_cstr(model->history_stat_str)); - canvas_draw_icon(canvas, 116, 53, &I_sub1_10px); + if(model->show_sats) { + canvas_draw_icon(canvas, 118, 54, &I_Sats_6x9); + } else { + canvas_draw_icon(canvas, 116, 53, &I_sub1_10px); + } } } break; } diff --git a/applications/main/subghz/views/receiver.h b/applications/main/subghz/views/receiver.h index 941ea2e92..21faa41d6 100644 --- a/applications/main/subghz/views/receiver.h +++ b/applications/main/subghz/views/receiver.h @@ -34,6 +34,7 @@ void subghz_view_receiver_add_data_statusbar( const char* history_stat_str, bool hopping_enabled, bool bin_raw_enabled, + bool show_sats, SubGhzRepeaterState repeater_enabled); void subghz_view_receiver_set_radio_device_type( diff --git a/assets/icons/SubGhz/Sats_6x9.png b/assets/icons/SubGhz/Sats_6x9.png new file mode 100644 index 000000000..cbb6c102b Binary files /dev/null and b/assets/icons/SubGhz/Sats_6x9.png differ diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 3840d3018..f71e6d341 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -3987,6 +3987,7 @@ Variable,+,I_Rpc_active_7x8,const Icon, Variable,+,I_SDQuestion_35x43,const Icon, Variable,+,I_SDcardFail_11x8,const Icon, Variable,+,I_SDcardMounted_11x8,const Icon, +Variable,+,I_Sats_6x9,const Icon, Variable,+,I_Scanning_123x52,const Icon, Variable,+,I_SmallArrowDown_3x5,const Icon, Variable,+,I_SmallArrowUp_3x5,const Icon,