From 432782344aa7fac787837988e76b134074968bdb Mon Sep 17 00:00:00 2001
From: Daniel <71837281+darmiel@users.noreply.github.com>
Date: Wed, 24 Aug 2022 14:28:27 +0200
Subject: [PATCH] feat[unirf]: blinking on send * fixed a HardFault when trying
to `subghz_protocol_decoder_base_get_string` * don't enter
`power_suppress_charge` for each sending individually
---
applications/unirfremix/unirfremix_app.c | 33 +++++++++++++-----------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/applications/unirfremix/unirfremix_app.c b/applications/unirfremix/unirfremix_app.c
index 08c0ee145..81c5fd380 100644
--- a/applications/unirfremix/unirfremix_app.c
+++ b/applications/unirfremix/unirfremix_app.c
@@ -4,6 +4,8 @@
#include
#include
#include
+
+#include
#include
#include
@@ -34,6 +36,7 @@ typedef struct {
SubGhzSetting* setting;
SubGhzEnvironment* environment;
SubGhzReceiver* subghz_receiver;
+ NotificationApp* notification;
string_t up_file;
string_t down_file;
@@ -477,7 +480,7 @@ bool unirfremix_key_load(
//
if(!flipper_format_rewind(fff_file)) {
FURI_LOG_E(TAG, "Rewind error");
- return NULL;
+ return false;
}
string_t temp_str;
@@ -572,7 +575,7 @@ bool unirfremix_save_protocol_to_file(FlipperFormat* fff_file, const char* dev_f
FURI_LOG_E(TAG, "(save) Cannot remove");
break;
}
- //ToDo check Write
+
stream_seek(flipper_format_stream, 0, StreamOffsetFromStart);
stream_save_to_file(flipper_format_stream, storage, dev_file_name, FSOM_CREATE_ALWAYS);
@@ -643,13 +646,13 @@ static bool unirfremix_send_sub(
furi_hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow);
furi_hal_gpio_write(&gpio_cc1101_g0, true);
- furi_hal_power_suppress_charge_enter();
-
if(!furi_hal_subghz_tx()) {
FURI_LOG_E(TAG, "Sending not allowed");
+ break;
}
FURI_LOG_I(TAG, "Sending...");
+ notification_message(app->notification, &sequence_blink_start_green);
furi_hal_subghz_start_async_tx(subghz_transmitter_yield, transmitter);
while(!furi_hal_subghz_is_async_tx_complete()) {
@@ -658,27 +661,20 @@ static bool unirfremix_send_sub(
furi_hal_subghz_stop_async_tx();
FURI_LOG_I(TAG, " Done!");
+ notification_message(app->notification, &sequence_blink_stop);
subghz_transmitter_stop(transmitter);
- // display decoded data
- {
- string_t temp_str;
- string_init(temp_str);
- subghz_protocol_decoder_base_deserialize(preset->decoder, fff_data);
- subghz_protocol_decoder_base_get_string(preset->decoder, temp_str);
- FURI_LOG_D(TAG, "Decoded: %s", string_get_cstr(temp_str));
- string_clear(temp_str);
- }
-
res = true;
FURI_LOG_D(TAG, "Checking if protocol is dynamic");
const SubGhzProtocol* registry =
subghz_protocol_registry_get_by_name(string_get_cstr(preset->protocol));
FURI_LOG_D(TAG, "Protocol-TYPE %d", registry->type);
+ FURI_LOG_I(TAG, "3");
if(registry && registry->type == SubGhzProtocolTypeDynamic) {
FURI_LOG_D(TAG, " Protocol is dynamic. Updating Repeat");
+ FURI_LOG_I(TAG, "4");
unirfremix_save_protocol_to_file(fff_data, path);
keeloq_reset_mfname();
@@ -691,7 +687,6 @@ static bool unirfremix_send_sub(
furi_hal_subghz_idle();
furi_hal_subghz_sleep();
- furi_hal_power_suppress_charge_exit();
} while(0);
unirfremix_preset_free(preset);
@@ -864,6 +859,8 @@ UniRFRemix* unirfremix_alloc(void) {
app->subghz_receiver = subghz_receiver_alloc_init(app->environment);
+ app->notification = furi_record_open(RECORD_NOTIFICATION);
+
return app;
}
@@ -896,6 +893,8 @@ void unirfremix_free(UniRFRemix* app) {
subghz_receiver_free(app->subghz_receiver);
subghz_environment_free(app->environment);
+ furi_record_close(RECORD_NOTIFICATION);
+
free(app);
}
@@ -964,6 +963,8 @@ int32_t unirfremix_app(void* p) {
furi_mutex_release(app->model_mutex);
view_port_update(app->view_port);
+ furi_hal_power_suppress_charge_enter();
+
//input detect loop start
InputEvent input;
while(1) {
@@ -1144,5 +1145,7 @@ int32_t unirfremix_app(void* p) {
// remove & free all stuff created by app
unirfremix_free(app);
+ furi_hal_power_suppress_charge_exit();
+
return 0;
}
\ No newline at end of file