diff --git a/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c b/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c index 6fec29565..e672542bb 100644 --- a/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c +++ b/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c @@ -4,6 +4,8 @@ #include #include +// TODO add external module + #define TAG "SubghzFrequencyAnalyzerWorker" #define SUBGHZ_FREQUENCY_ANALYZER_THRESHOLD -97.0f @@ -36,13 +38,13 @@ struct SubGhzFrequencyAnalyzerWorker { }; static void subghz_frequency_analyzer_worker_load_registers(const uint8_t data[][2]) { - furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle); + furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz); size_t i = 0; while(data[i][0]) { - cc1101_write_reg(furi_hal_subghz.spi_bus_handle, data[i][0], data[i][1]); + cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, data[i][0], data[i][1]); i++; } - furi_hal_spi_release(furi_hal_subghz.spi_bus_handle); + furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); } // running average with adaptive coefficient @@ -80,26 +82,26 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) { //Start CC1101 furi_hal_subghz_reset(); - furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle); - cc1101_flush_rx(furi_hal_subghz.spi_bus_handle); - cc1101_flush_tx(furi_hal_subghz.spi_bus_handle); - cc1101_write_reg(furi_hal_subghz.spi_bus_handle, CC1101_IOCFG0, CC1101IocfgHW); - cc1101_write_reg(furi_hal_subghz.spi_bus_handle, CC1101_MDMCFG3, + furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz); + cc1101_flush_rx(&furi_hal_spi_bus_handle_subghz); + cc1101_flush_tx(&furi_hal_spi_bus_handle_subghz); + cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_IOCFG0, CC1101IocfgHW); + cc1101_write_reg(&furi_hal_spi_bus_handle_subghz, CC1101_MDMCFG3, 0b01111111); // symbol rate cc1101_write_reg( - furi_hal_subghz.spi_bus_handle, + &furi_hal_spi_bus_handle_subghz, CC1101_AGCCTRL2, 0b00000111); // 00 - DVGA all; 000 - MAX LNA+LNA2; 111 - MAGN_TARGET 42 dB cc1101_write_reg( - furi_hal_subghz.spi_bus_handle, + &furi_hal_spi_bus_handle_subghz, CC1101_AGCCTRL1, 0b00001000); // 0; 0 - LNA 2 gain is decreased to minimum before decreasing LNA gain; 00 - Relative carrier sense threshold disabled; 1000 - Absolute carrier sense threshold disabled cc1101_write_reg( - furi_hal_subghz.spi_bus_handle, + &furi_hal_spi_bus_handle_subghz, CC1101_AGCCTRL0, 0b00110000); // 00 - No hysteresis, medium asymmetric dead zone, medium gain ; 11 - 64 samples agc; 00 - Normal AGC, 00 - 4dB boundary - furi_hal_spi_release(furi_hal_subghz.spi_bus_handle); + furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate); @@ -119,23 +121,25 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) { for(size_t i = 0; i < subghz_setting_get_frequency_count(instance->setting); i++) { uint32_t current_frequency = subghz_setting_get_frequency(instance->setting, i); if(furi_hal_subghz_is_frequency_valid(current_frequency) && - (current_frequency != 467750000) && (current_frequency != 464000000) && - !((furi_hal_subghz.radio_type == SubGhzRadioExternal) && - ((current_frequency == 390000000) || (current_frequency == 312000000) || - (current_frequency == 312100000) || (current_frequency == 312200000) || - (current_frequency == 440175000)))) { - furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle); - cc1101_switch_to_idle(furi_hal_subghz.spi_bus_handle); + (current_frequency != 467750000) && (current_frequency != 464000000) + // && + // !((furi_hal_subghz.radio_type == SubGhzRadioExternal) && + // ((current_frequency == 390000000) || (current_frequency == 312000000) || + // (current_frequency == 312100000) || (current_frequency == 312200000) || + // (current_frequency == 440175000))) + ) { + furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz); + cc1101_switch_to_idle(&furi_hal_spi_bus_handle_subghz); frequency = - cc1101_set_frequency(furi_hal_subghz.spi_bus_handle, current_frequency); + cc1101_set_frequency(&furi_hal_spi_bus_handle_subghz, current_frequency); - cc1101_calibrate(furi_hal_subghz.spi_bus_handle); + cc1101_calibrate(&furi_hal_spi_bus_handle_subghz); do { - status = cc1101_get_status(furi_hal_subghz.spi_bus_handle); + status = cc1101_get_status(&furi_hal_spi_bus_handle_subghz); } while(status.STATE != CC1101StateIDLE); - cc1101_switch_to_rx(furi_hal_subghz.spi_bus_handle); - furi_hal_spi_release(furi_hal_subghz.spi_bus_handle); + cc1101_switch_to_rx(&furi_hal_spi_bus_handle_subghz); + furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); furi_delay_ms(2); @@ -170,17 +174,17 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) { i < frequency_rssi.frequency_coarse + 300000; i += 20000) { if(furi_hal_subghz_is_frequency_valid(i)) { - furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle); - cc1101_switch_to_idle(furi_hal_subghz.spi_bus_handle); - frequency = cc1101_set_frequency(furi_hal_subghz.spi_bus_handle, i); + furi_hal_spi_acquire(&furi_hal_spi_bus_handle_subghz); + cc1101_switch_to_idle(&furi_hal_spi_bus_handle_subghz); + frequency = cc1101_set_frequency(&furi_hal_spi_bus_handle_subghz, i); - cc1101_calibrate(furi_hal_subghz.spi_bus_handle); + cc1101_calibrate(&furi_hal_spi_bus_handle_subghz); do { - status = cc1101_get_status(furi_hal_subghz.spi_bus_handle); + status = cc1101_get_status(&furi_hal_spi_bus_handle_subghz); } while(status.STATE != CC1101StateIDLE); - cc1101_switch_to_rx(furi_hal_subghz.spi_bus_handle); - furi_hal_spi_release(furi_hal_subghz.spi_bus_handle); + cc1101_switch_to_rx(&furi_hal_spi_bus_handle_subghz); + furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); furi_delay_ms(2); diff --git a/applications/main/subghz/scenes/subghz_scene_radio_settings.c b/applications/main/subghz/scenes/subghz_scene_radio_settings.c index a3576b3e5..7c78d07c4 100644 --- a/applications/main/subghz/scenes/subghz_scene_radio_settings.c +++ b/applications/main/subghz/scenes/subghz_scene_radio_settings.c @@ -132,7 +132,7 @@ void subghz_scene_radio_settings_on_enter(void* context) { // variable_item_set_current_value_text(item, radio_modules_variables_text[value_index]); // item = variable_item_list_add( - // subghz->variable_item_list, + // variable_item_list, // "Ext Radio 5v", // EXT_MOD_POWER_COUNT, // subghz_scene_receiver_config_set_ext_mod_power, @@ -142,7 +142,7 @@ void subghz_scene_radio_settings_on_enter(void* context) { // variable_item_set_current_value_text(item, ext_mod_power_text[value_index]); item = variable_item_list_add( - subghz->variable_item_list, + variable_item_list, "Time in names", TIMESTAMP_NAMES_COUNT, subghz_scene_receiver_config_set_timestamp_file_names, @@ -153,7 +153,7 @@ void subghz_scene_radio_settings_on_enter(void* context) { if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) { item = variable_item_list_add( - subghz->variable_item_list, + variable_item_list, "Counter incr.", DEBUG_COUNTER_COUNT, subghz_scene_receiver_config_set_debug_counter, @@ -182,7 +182,7 @@ void subghz_scene_radio_settings_on_enter(void* context) { } } else { item = variable_item_list_add( - subghz->variable_item_list, + variable_item_list, "Counter incr.", 3, subghz_scene_receiver_config_set_debug_counter, @@ -209,7 +209,7 @@ void subghz_scene_radio_settings_on_enter(void* context) { if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) { item = variable_item_list_add( - subghz->variable_item_list, + variable_item_list, "Debug Pin", DEBUG_P_COUNT, subghz_scene_receiver_config_set_debug_pin, diff --git a/applications/main/subghz/subghz.c b/applications/main/subghz/subghz.c index 97e2e8c34..2af1328ab 100644 --- a/applications/main/subghz/subghz.c +++ b/applications/main/subghz/subghz.c @@ -387,15 +387,6 @@ int32_t subghz_app(void* p) { subghz->raw_send_only = false; } - // Call enable power for external module - furi_hal_subghz_enable_ext_power(); - - // Auto switch to internal radio if external radio is not available - if(!furi_hal_subghz_check_radio()) { - subghz->last_settings->external_module_enabled = false; - furi_hal_subghz_select_radio_type(SubGhzRadioInternal); - furi_hal_subghz_init_radio_type(SubGhzRadioInternal); - } // Check argument and run corresponding scene if(p && strlen(p)) { uint32_t rpc_ctx = 0; @@ -448,10 +439,6 @@ int32_t subghz_app(void* p) { view_dispatcher_run(subghz->view_dispatcher); furi_hal_power_suppress_charge_exit(); - // Disable power for External CC1101 if it was enabled and module is connected - furi_hal_subghz_disable_ext_power(); - // Reinit SPI handles for internal radio / nfc - furi_hal_subghz_init_radio_type(SubGhzRadioInternal); subghz_free(subghz, alloc_for_tx); diff --git a/applications/main/subghz/subghz_last_settings.c b/applications/main/subghz/subghz_last_settings.c index 8cf0f063a..b61ed3769 100644 --- a/applications/main/subghz/subghz_last_settings.c +++ b/applications/main/subghz/subghz_last_settings.c @@ -119,18 +119,6 @@ void subghz_last_settings_load(SubGhzLastSettings* instance, size_t preset_count instance->timestamp_file_names = temp_timestamp_file_names; - // Set globally - if(instance->external_module_power_5v_disable) { - furi_hal_subghz_set_external_power_disable(true); - furi_hal_subghz_disable_ext_power(); - } - - // Set selected radio module - if(instance->external_module_enabled) { - furi_hal_subghz_select_radio_type(SubGhzRadioExternal); - furi_hal_subghz_init_radio_type(SubGhzRadioExternal); - } - /*/} else { instance->preset = temp_preset; }*/ diff --git a/applications/main/subghz/subghz_last_settings.h b/applications/main/subghz/subghz_last_settings.h index 260c879f4..d1a5b495f 100644 --- a/applications/main/subghz/subghz_last_settings.h +++ b/applications/main/subghz/subghz_last_settings.h @@ -10,8 +10,10 @@ typedef struct { int32_t preset; uint32_t frequency_analyzer_feedback_level; float frequency_analyzer_trigger; + // TODO not using but saved so as not to change the version bool external_module_enabled; bool external_module_power_5v_disable; + // saved so as not to change the version bool timestamp_file_names; } SubGhzLastSettings; diff --git a/applications/main/subghz/views/subghz_frequency_analyzer.c b/applications/main/subghz/views/subghz_frequency_analyzer.c index 92ba833c4..b3822feab 100644 --- a/applications/main/subghz/views/subghz_frequency_analyzer.c +++ b/applications/main/subghz/views/subghz_frequency_analyzer.c @@ -168,7 +168,8 @@ void subghz_frequency_analyzer_draw(Canvas* canvas, SubGhzFrequencyAnalyzerModel // Title canvas_set_color(canvas, ColorBlack); canvas_set_font(canvas, FontSecondary); - canvas_draw_str(canvas, 0, 7, furi_hal_subghz_get_radio_type() ? "Ext" : "Int"); + // TODO + // canvas_draw_str(canvas, 0, 7, furi_hal_subghz_get_radio_type() ? "Ext" : "Int"); canvas_draw_str(canvas, 20, 7, "Frequency Analyzer"); // RSSI diff --git a/applications/main/subghz/views/subghz_test_carrier.c b/applications/main/subghz/views/subghz_test_carrier.c index 2cbde6e32..3815e8ff0 100644 --- a/applications/main/subghz/views/subghz_test_carrier.c +++ b/applications/main/subghz/views/subghz_test_carrier.c @@ -7,6 +7,8 @@ #include #include +// TODO add external module + struct SubGhzTestCarrier { View* view; FuriTimer* timer; @@ -115,19 +117,14 @@ bool subghz_test_carrier_input(InputEvent* event, void* context) { furi_hal_subghz_set_path(model->path); if(model->status == SubGhzTestCarrierModelStatusRx) { - furi_hal_gpio_init( - furi_hal_subghz.cc1101_g0_pin, GpioModeInput, GpioPullNo, GpioSpeedLow); + furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); furi_hal_subghz_rx(); } else { furi_hal_gpio_init( - furi_hal_subghz.cc1101_g0_pin, - GpioModeOutputPushPull, - GpioPullNo, - GpioSpeedLow); - furi_hal_gpio_write(furi_hal_subghz.cc1101_g0_pin, true); + &gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); + furi_hal_gpio_write(&gpio_cc1101_g0, true); if(!furi_hal_subghz_tx()) { - furi_hal_gpio_init( - furi_hal_subghz.cc1101_g0_pin, GpioModeInput, GpioPullNo, GpioSpeedLow); + furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); subghz_test_carrier->callback( SubGhzTestCarrierEventOnlyRx, subghz_test_carrier->context); } @@ -145,7 +142,7 @@ void subghz_test_carrier_enter(void* context) { furi_hal_subghz_reset(); furi_hal_subghz_load_preset(FuriHalSubGhzPresetOok650Async); - furi_hal_gpio_init(furi_hal_subghz.cc1101_g0_pin, GpioModeInput, GpioPullNo, GpioSpeedLow); + furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeInput, GpioPullNo, GpioSpeedLow); with_view_model( subghz_test_carrier->view, diff --git a/applications/main/subghz/views/subghz_test_static.c b/applications/main/subghz/views/subghz_test_static.c index b9e5a8c9c..815d0ff9b 100644 --- a/applications/main/subghz/views/subghz_test_static.c +++ b/applications/main/subghz/views/subghz_test_static.c @@ -11,6 +11,8 @@ #define TAG "SubGhzTestStatic" +// TODO add external module + typedef enum { SubGhzTestStaticStatusIDLE, SubGhzTestStaticStatusTX, @@ -143,9 +145,8 @@ void subghz_test_static_enter(void* context) { furi_hal_subghz_reset(); furi_hal_subghz_load_preset(FuriHalSubGhzPresetOok650Async); - furi_hal_gpio_init( - furi_hal_subghz.cc1101_g0_pin, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); - furi_hal_gpio_write(furi_hal_subghz.cc1101_g0_pin, false); + furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); + furi_hal_gpio_write(&gpio_cc1101_g0, false); instance->status_tx = SubGhzTestStaticStatusIDLE; with_view_model( diff --git a/applications/main/subghz_remote/helpers/subrem_presets.c b/applications/main/subghz_remote/helpers/subrem_presets.c index e5823b721..45da793d7 100644 --- a/applications/main/subghz_remote/helpers/subrem_presets.c +++ b/applications/main/subghz_remote/helpers/subrem_presets.c @@ -124,7 +124,9 @@ SubRemLoadSubState subrem_sub_preset_load( if(!strcmp(furi_string_get_cstr(temp_str), "RAW")) { //if RAW subghz_protocol_raw_gen_fff_data( - fff_data, furi_string_get_cstr(sub_preset->file_path)); + fff_data, + furi_string_get_cstr(sub_preset->file_path), + subghz_txrx_radio_device_get_name(txrx)); } else { stream_copy_full( flipper_format_get_raw_stream(fff_data_file), diff --git a/applications/main/subghz_remote/subghz_remote_app.c b/applications/main/subghz_remote/subghz_remote_app.c index 624a602ae..937025b05 100644 --- a/applications/main/subghz_remote/subghz_remote_app.c +++ b/applications/main/subghz_remote/subghz_remote_app.c @@ -29,14 +29,14 @@ SubGhzRemoteApp* subghz_remote_app_alloc() { } furi_record_close(RECORD_STORAGE); - // Enable power for External CC1101 if it is connected - furi_hal_subghz_enable_ext_power(); - // Auto switch to internal radio if external radio is not available - furi_delay_ms(15); - if(!furi_hal_subghz_check_radio()) { - furi_hal_subghz_select_radio_type(SubGhzRadioInternal); - furi_hal_subghz_init_radio_type(SubGhzRadioInternal); - } + // // Enable power for External CC1101 if it is connected + // furi_hal_subghz_enable_ext_power(); + // // Auto switch to internal radio if external radio is not available + // furi_delay_ms(15); + // if(!furi_hal_subghz_check_radio()) { + // furi_hal_subghz_select_radio_type(SubGhzRadioInternal); + // furi_hal_subghz_init_radio_type(SubGhzRadioInternal); + // } furi_hal_power_suppress_charge_enter(); @@ -105,10 +105,10 @@ void subghz_remote_app_free(SubGhzRemoteApp* app) { furi_hal_power_suppress_charge_exit(); - // Disable power for External CC1101 if it was enabled and module is connected - furi_hal_subghz_disable_ext_power(); - // Reinit SPI handles for internal radio / nfc - furi_hal_subghz_init_radio_type(SubGhzRadioInternal); + // // Disable power for External CC1101 if it was enabled and module is connected + // furi_hal_subghz_disable_ext_power(); + // // Reinit SPI handles for internal radio / nfc + // furi_hal_subghz_init_radio_type(SubGhzRadioInternal); // Submenu view_dispatcher_remove_view(app->view_dispatcher, SubRemViewIDSubmenu);