diff --git a/applications/main/subghz/scenes/subghz_scene_config.h b/applications/main/subghz/scenes/subghz_scene_config.h index f265644b7..1ad41a8b5 100644 --- a/applications/main/subghz/scenes/subghz_scene_config.h +++ b/applications/main/subghz/scenes/subghz_scene_config.h @@ -19,12 +19,9 @@ ADD_SCENE(subghz, test_static, TestStatic) ADD_SCENE(subghz, test_packet, TestPacket) #endif ADD_SCENE(subghz, set_type, SetType) -ADD_SCENE(subghz, set_fix_faac_868, SetFixFaac868) -ADD_SCENE(subghz, set_cnt_faac_868, SetCntFaac868) -ADD_SCENE(subghz, set_seed_faac_868, SetSeedFaac868) -ADD_SCENE(subghz, set_fix_faac_433, SetFixFaac433) -ADD_SCENE(subghz, set_cnt_faac_433, SetCntFaac433) -ADD_SCENE(subghz, set_seed_faac_433, SetSeedFaac433) +ADD_SCENE(subghz, set_fix_faac, SetFixFaac) +ADD_SCENE(subghz, set_cnt_faac, SetCntFaac) +ADD_SCENE(subghz, set_seed_faac, SetSeedFaac) ADD_SCENE(subghz, set_fix_bft, SetFixBft) ADD_SCENE(subghz, set_cnt_bft, SetCntBft) ADD_SCENE(subghz, set_seed_bft, SetSeedBft) diff --git a/applications/main/subghz/scenes/subghz_scene_set_cnt_faac_433.c b/applications/main/subghz/scenes/subghz_scene_set_cnt_faac.c similarity index 72% rename from applications/main/subghz/scenes/subghz_scene_set_cnt_faac_433.c rename to applications/main/subghz/scenes/subghz_scene_set_cnt_faac.c index 4bb551db8..6002dea74 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_cnt_faac_433.c +++ b/applications/main/subghz/scenes/subghz_scene_set_cnt_faac.c @@ -1,14 +1,14 @@ #include "../subghz_i.h" -#define TAG "SubGhzSetCntFaac433" +#define TAG "SubGhzSetCntFaac" -void subghz_scene_set_cnt_faac_433_byte_input_callback(void* context) { +void subghz_scene_set_cnt_faac_byte_input_callback(void* context) { SubGhz* subghz = context; view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); } -void subghz_scene_set_cnt_faac_433_on_enter(void* context) { +void subghz_scene_set_cnt_faac_on_enter(void* context) { SubGhz* subghz = context; // Setup view @@ -16,7 +16,7 @@ void subghz_scene_set_cnt_faac_433_on_enter(void* context) { byte_input_set_header_text(byte_input, "Enter COUNTER in hex, 20bits"); byte_input_set_result_callback( byte_input, - subghz_scene_set_cnt_faac_433_byte_input_callback, + subghz_scene_set_cnt_faac_byte_input_callback, NULL, subghz, subghz->txrx->secure_data->cnt, @@ -24,20 +24,20 @@ void subghz_scene_set_cnt_faac_433_on_enter(void* context) { view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); } -bool subghz_scene_set_cnt_faac_433_on_event(void* context, SceneManagerEvent event) { +bool subghz_scene_set_cnt_faac_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; bool consumed = false; if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubGhzCustomEventByteInputDone) { - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetSeedFaac433); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetSeedFaac); consumed = true; } } return consumed; } -void subghz_scene_set_cnt_faac_433_on_exit(void* context) { +void subghz_scene_set_cnt_faac_on_exit(void* context) { SubGhz* subghz = context; // Clear view diff --git a/applications/main/subghz/scenes/subghz_scene_set_cnt_faac_868.c b/applications/main/subghz/scenes/subghz_scene_set_cnt_faac_868.c deleted file mode 100644 index f4908f865..000000000 --- a/applications/main/subghz/scenes/subghz_scene_set_cnt_faac_868.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "../subghz_i.h" - -#define TAG "SubGhzSetCntFaac868" - -void subghz_scene_set_cnt_faac_868_byte_input_callback(void* context) { - SubGhz* subghz = context; - - view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); -} - -void subghz_scene_set_cnt_faac_868_on_enter(void* context) { - SubGhz* subghz = context; - - // Setup view - ByteInput* byte_input = subghz->byte_input; - byte_input_set_header_text(byte_input, "Enter COUNTER in hex, 20bits"); - byte_input_set_result_callback( - byte_input, - subghz_scene_set_cnt_faac_868_byte_input_callback, - NULL, - subghz, - subghz->txrx->secure_data->cnt, - 3); - view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); -} - -bool subghz_scene_set_cnt_faac_868_on_event(void* context, SceneManagerEvent event) { - SubGhz* subghz = context; - bool consumed = false; - - if(event.type == SceneManagerEventTypeCustom) { - if(event.event == SubGhzCustomEventByteInputDone) { - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetSeedFaac868); - consumed = true; - } - } - return consumed; -} - -void subghz_scene_set_cnt_faac_868_on_exit(void* context) { - SubGhz* subghz = context; - - // Clear view - byte_input_set_result_callback(subghz->byte_input, NULL, NULL, NULL, NULL, 0); - byte_input_set_header_text(subghz->byte_input, ""); -} diff --git a/applications/main/subghz/scenes/subghz_scene_set_fix_faac_433.c b/applications/main/subghz/scenes/subghz_scene_set_fix_faac.c similarity index 72% rename from applications/main/subghz/scenes/subghz_scene_set_fix_faac_433.c rename to applications/main/subghz/scenes/subghz_scene_set_fix_faac.c index 62af59e2c..333062c38 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_fix_faac_433.c +++ b/applications/main/subghz/scenes/subghz_scene_set_fix_faac.c @@ -1,14 +1,14 @@ #include "../subghz_i.h" -#define TAG "SubGhzSetFixFaac433" +#define TAG "SubGhzSetFixFaac" -void subghz_scene_set_fix_faac_433_byte_input_callback(void* context) { +void subghz_scene_set_fix_faac_byte_input_callback(void* context) { SubGhz* subghz = context; view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); } -void subghz_scene_set_fix_faac_433_on_enter(void* context) { +void subghz_scene_set_fix_faac_on_enter(void* context) { SubGhz* subghz = context; // Setup view @@ -16,7 +16,7 @@ void subghz_scene_set_fix_faac_433_on_enter(void* context) { byte_input_set_header_text(byte_input, "Enter FIX in hex"); byte_input_set_result_callback( byte_input, - subghz_scene_set_fix_faac_433_byte_input_callback, + subghz_scene_set_fix_faac_byte_input_callback, NULL, subghz, subghz->txrx->secure_data->fix, @@ -24,20 +24,20 @@ void subghz_scene_set_fix_faac_433_on_enter(void* context) { view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); } -bool subghz_scene_set_fix_faac_433_on_event(void* context, SceneManagerEvent event) { +bool subghz_scene_set_fix_faac_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; bool consumed = false; if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubGhzCustomEventByteInputDone) { - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetCntFaac433); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetCntFaac); consumed = true; } } return consumed; } -void subghz_scene_set_fix_faac_433_on_exit(void* context) { +void subghz_scene_set_fix_faac_on_exit(void* context) { SubGhz* subghz = context; // Clear view diff --git a/applications/main/subghz/scenes/subghz_scene_set_fix_faac_868.c b/applications/main/subghz/scenes/subghz_scene_set_fix_faac_868.c deleted file mode 100644 index ea9759a4a..000000000 --- a/applications/main/subghz/scenes/subghz_scene_set_fix_faac_868.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "../subghz_i.h" - -#define TAG "SubGhzSetFixFaac868" - -void subghz_scene_set_fix_faac_868_byte_input_callback(void* context) { - SubGhz* subghz = context; - - view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); -} - -void subghz_scene_set_fix_faac_868_on_enter(void* context) { - SubGhz* subghz = context; - - // Setup view - ByteInput* byte_input = subghz->byte_input; - byte_input_set_header_text(byte_input, "Enter FIX in hex"); - byte_input_set_result_callback( - byte_input, - subghz_scene_set_fix_faac_868_byte_input_callback, - NULL, - subghz, - subghz->txrx->secure_data->fix, - 4); - view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); -} - -bool subghz_scene_set_fix_faac_868_on_event(void* context, SceneManagerEvent event) { - SubGhz* subghz = context; - bool consumed = false; - - if(event.type == SceneManagerEventTypeCustom) { - if(event.event == SubGhzCustomEventByteInputDone) { - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetCntFaac868); - consumed = true; - } - } - return consumed; -} - -void subghz_scene_set_fix_faac_868_on_exit(void* context) { - SubGhz* subghz = context; - - // Clear view - byte_input_set_result_callback(subghz->byte_input, NULL, NULL, NULL, NULL, 0); - byte_input_set_header_text(subghz->byte_input, ""); -} diff --git a/applications/main/subghz/scenes/subghz_scene_set_seed_faac_433.c b/applications/main/subghz/scenes/subghz_scene_set_seed_faac.c similarity index 82% rename from applications/main/subghz/scenes/subghz_scene_set_seed_faac_433.c rename to applications/main/subghz/scenes/subghz_scene_set_seed_faac.c index efe16f0b3..8e955e4b7 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_seed_faac_433.c +++ b/applications/main/subghz/scenes/subghz_scene_set_seed_faac.c @@ -2,15 +2,15 @@ #include #include -#define TAG "SubGhzSetSeedFaac433" +#define TAG "SubGhzSetSeedFaac" -void subghz_scene_set_seed_faac_433_byte_input_callback(void* context) { +void subghz_scene_set_seed_faac_byte_input_callback(void* context) { SubGhz* subghz = context; view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); } -void subghz_scene_set_seed_faac_433_on_enter(void* context) { +void subghz_scene_set_seed_faac_on_enter(void* context) { SubGhz* subghz = context; // Setup view @@ -18,7 +18,7 @@ void subghz_scene_set_seed_faac_433_on_enter(void* context) { byte_input_set_header_text(byte_input, "Enter SEED in hex"); byte_input_set_result_callback( byte_input, - subghz_scene_set_seed_faac_433_byte_input_callback, + subghz_scene_set_seed_faac_byte_input_callback, NULL, subghz, subghz->txrx->secure_data->seed, @@ -26,7 +26,7 @@ void subghz_scene_set_seed_faac_433_on_enter(void* context) { view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); } -bool subghz_scene_set_seed_faac_433_on_event(void* context, SceneManagerEvent event) { +bool subghz_scene_set_seed_faac_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; bool consumed = false; bool generated_protocol = false; @@ -48,7 +48,14 @@ bool subghz_scene_set_seed_faac_433_on_event(void* context, SceneManagerEvent ev subghz->txrx->transmitter = subghz_transmitter_alloc_init(subghz->txrx->environment, "Faac SLH"); if(subghz->txrx->transmitter) { - subghz_preset_init(subghz, "AM650", 433920000, NULL, 0); + SubGhzCustomEvent state = + scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSetType); + + if(state == SubmenuIndexFaacSLH_433) { + subghz_preset_init(subghz, "AM650", 433920000, NULL, 0); + } else if(state == SubmenuIndexFaacSLH_868) { + subghz_preset_init(subghz, "AM650", 868350000, NULL, 0); + } subghz_protocol_faac_slh_create_data( subghz_transmitter_get_protocol_instance(subghz->txrx->transmitter), subghz->txrx->fff_data, @@ -94,7 +101,7 @@ bool subghz_scene_set_seed_faac_433_on_event(void* context, SceneManagerEvent ev return consumed; } -void subghz_scene_set_seed_faac_433_on_exit(void* context) { +void subghz_scene_set_seed_faac_on_exit(void* context) { SubGhz* subghz = context; // Clear view diff --git a/applications/main/subghz/scenes/subghz_scene_set_seed_faac_868.c b/applications/main/subghz/scenes/subghz_scene_set_seed_faac_868.c deleted file mode 100644 index dd9f45652..000000000 --- a/applications/main/subghz/scenes/subghz_scene_set_seed_faac_868.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "../subghz_i.h" -#include -#include - -#define TAG "SubGhzSetSeedFaac868" - -void subghz_scene_set_seed_faac_868_byte_input_callback(void* context) { - SubGhz* subghz = context; - - view_dispatcher_send_custom_event(subghz->view_dispatcher, SubGhzCustomEventByteInputDone); -} - -void subghz_scene_set_seed_faac_868_on_enter(void* context) { - SubGhz* subghz = context; - - // Setup view - ByteInput* byte_input = subghz->byte_input; - byte_input_set_header_text(byte_input, "Enter SEED in hex"); - byte_input_set_result_callback( - byte_input, - subghz_scene_set_seed_faac_868_byte_input_callback, - NULL, - subghz, - subghz->txrx->secure_data->seed, - 4); - view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdByteInput); -} - -bool subghz_scene_set_seed_faac_868_on_event(void* context, SceneManagerEvent event) { - SubGhz* subghz = context; - bool consumed = false; - bool generated_protocol = false; - if(event.type == SceneManagerEventTypeCustom) { - if(event.event == SubGhzCustomEventByteInputDone) { - uint32_t fix_part = - subghz->txrx->secure_data->fix[0] << 24 | subghz->txrx->secure_data->fix[1] << 16 | - subghz->txrx->secure_data->fix[2] << 8 | subghz->txrx->secure_data->fix[3]; - - uint32_t cnt = subghz->txrx->secure_data->cnt[0] << 16 | - subghz->txrx->secure_data->cnt[1] << 8 | - subghz->txrx->secure_data->cnt[2]; - - uint32_t seed = subghz->txrx->secure_data->seed[0] << 24 | - subghz->txrx->secure_data->seed[1] << 16 | - subghz->txrx->secure_data->seed[2] << 8 | - subghz->txrx->secure_data->seed[3]; - - subghz->txrx->transmitter = - subghz_transmitter_alloc_init(subghz->txrx->environment, "Faac SLH"); - if(subghz->txrx->transmitter) { - subghz_preset_init(subghz, "AM650", 868350000, NULL, 0); - subghz_protocol_faac_slh_create_data( - subghz_transmitter_get_protocol_instance(subghz->txrx->transmitter), - subghz->txrx->fff_data, - fix_part >> 4, - fix_part & 0xf, - (cnt & 0xFFFFF), - seed, - "FAAC_SLH", - subghz->txrx->preset); - // roguemastter dont steal!! - uint8_t seed_data[sizeof(uint32_t)] = {0}; - for(size_t i = 0; i < sizeof(uint32_t); i++) { - seed_data[sizeof(uint32_t) - i - 1] = (seed >> i * 8) & 0xFF; - } - - flipper_format_write_hex( - subghz->txrx->fff_data, "Seed", seed_data, sizeof(uint32_t)); - - generated_protocol = true; - } else { - generated_protocol = false; - } - - subghz_transmitter_free(subghz->txrx->transmitter); - - if(!generated_protocol) { - furi_string_set( - subghz->error_str, "Function requires\nan SD card with\nfresh databases."); - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); - } - consumed = true; - } - - if(generated_protocol) { - subghz_file_name_clear(subghz); - DOLPHIN_DEED(DolphinDeedSubGhzAddManually); - scene_manager_set_scene_state( - subghz->scene_manager, SubGhzSceneSetType, SubGhzCustomEventManagerSet); - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); - return true; - } - } - return consumed; -} - -void subghz_scene_set_seed_faac_868_on_exit(void* context) { - SubGhz* subghz = context; - - // Clear view - byte_input_set_result_callback(subghz->byte_input, NULL, NULL, NULL, NULL, 0); - byte_input_set_header_text(subghz->byte_input, ""); -} diff --git a/applications/main/subghz/scenes/subghz_scene_set_type.c b/applications/main/subghz/scenes/subghz_scene_set_type.c index 3ee823997..c4d8c0a24 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_type.c +++ b/applications/main/subghz/scenes/subghz_scene_set_type.c @@ -212,10 +212,10 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { uint32_t key = subghz_random_serial(); switch(event.event) { case SubmenuIndexFaacSLH_868: - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetFixFaac868); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetFixFaac); break; case SubmenuIndexFaacSLH_433: - scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetFixFaac433); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetFixFaac); break; case SubmenuIndexBFT: scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetFixBft);