mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-16 04:24:45 -07:00
Update subbrute
This commit is contained in:
@@ -28,6 +28,7 @@ SubBruteWorker* subbrute_worker_alloc() {
|
||||
instance->context = NULL;
|
||||
instance->callback = NULL;
|
||||
|
||||
instance->tx_timeout_ms = SUBBRUTE_TX_TIMEOUT;
|
||||
instance->decoder_result = NULL;
|
||||
instance->transmitter = NULL;
|
||||
instance->environment = subghz_environment_alloc();
|
||||
@@ -206,6 +207,7 @@ void subbrute_worker_stop(SubBruteWorker* instance) {
|
||||
furi_thread_join(instance->thread);
|
||||
|
||||
furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate);
|
||||
furi_hal_subghz_idle();
|
||||
furi_hal_subghz_sleep();
|
||||
}
|
||||
|
||||
@@ -306,8 +308,9 @@ void subbrute_worker_set_callback(
|
||||
}
|
||||
|
||||
void subbrute_worker_subghz_transmit(SubBruteWorker* instance, FlipperFormat* flipper_format) {
|
||||
const uint8_t timeout = instance->tx_timeout_ms;
|
||||
while(instance->transmit_mode) {
|
||||
furi_delay_ms(SUBBRUTE_TX_TIMEOUT);
|
||||
furi_delay_ms(timeout);
|
||||
}
|
||||
instance->transmit_mode = true;
|
||||
if(instance->transmitter != NULL) {
|
||||
@@ -318,17 +321,20 @@ void subbrute_worker_subghz_transmit(SubBruteWorker* instance, FlipperFormat* fl
|
||||
subghz_transmitter_alloc_init(instance->environment, instance->protocol_name);
|
||||
subghz_transmitter_deserialize(instance->transmitter, flipper_format);
|
||||
furi_hal_subghz_reset();
|
||||
furi_hal_subghz_idle();
|
||||
furi_hal_subghz_load_preset(instance->preset);
|
||||
furi_hal_subghz_set_frequency_and_path(instance->frequency);
|
||||
furi_hal_subghz_start_async_tx(subghz_transmitter_yield, instance->transmitter);
|
||||
|
||||
while(!furi_hal_subghz_is_async_tx_complete()) {
|
||||
furi_delay_ms(SUBBRUTE_TX_TIMEOUT);
|
||||
furi_delay_ms(timeout);
|
||||
}
|
||||
furi_hal_subghz_stop_async_tx();
|
||||
|
||||
furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate);
|
||||
furi_hal_subghz_sleep();
|
||||
//furi_hal_subghz_set_path(FuriHalSubGhzPathIsolate);
|
||||
furi_hal_subghz_idle();
|
||||
//furi_hal_subghz_sleep();
|
||||
subghz_transmitter_stop(instance->transmitter);
|
||||
subghz_transmitter_free(instance->transmitter);
|
||||
instance->transmitter = NULL;
|
||||
|
||||
@@ -420,7 +426,7 @@ int32_t subbrute_worker_thread(void* context) {
|
||||
instance->step++;
|
||||
|
||||
// furi_string_free(payload);
|
||||
furi_delay_ms(SUBBRUTE_TX_TIMEOUT);
|
||||
furi_delay_ms(instance->tx_timeout_ms);
|
||||
}
|
||||
|
||||
flipper_format_free(flipper_format);
|
||||
@@ -435,3 +441,19 @@ int32_t subbrute_worker_thread(void* context) {
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t subbrute_worker_get_timeout(SubBruteWorker* instance) {
|
||||
return instance->tx_timeout_ms;
|
||||
}
|
||||
|
||||
void subbrute_worker_timeout_inc(SubBruteWorker* instance) {
|
||||
if(instance->tx_timeout_ms < 255) {
|
||||
instance->tx_timeout_ms++;
|
||||
}
|
||||
}
|
||||
|
||||
void subbrute_worker_timeout_dec(SubBruteWorker* instance) {
|
||||
if(instance->tx_timeout_ms > 0) {
|
||||
instance->tx_timeout_ms--;
|
||||
}
|
||||
}
|
||||
@@ -39,4 +39,10 @@ bool subbrute_worker_can_manual_transmit(SubBruteWorker* instance);
|
||||
void subbrute_worker_set_callback(
|
||||
SubBruteWorker* instance,
|
||||
SubBruteWorkerCallback callback,
|
||||
void* context);
|
||||
void* context);
|
||||
|
||||
uint8_t subbrute_worker_get_timeout(SubBruteWorker* instance);
|
||||
|
||||
void subbrute_worker_timeout_inc(SubBruteWorker* instance);
|
||||
|
||||
void subbrute_worker_timeout_dec(SubBruteWorker* instance);
|
||||
|
||||
@@ -21,6 +21,7 @@ struct SubBruteWorker {
|
||||
SubGhzEnvironment* environment;
|
||||
SubGhzTransmitter* transmitter;
|
||||
const char* protocol_name;
|
||||
uint8_t tx_timeout_ms;
|
||||
|
||||
// Initiated values
|
||||
SubBruteAttacks attack; // Attack state
|
||||
|
||||
Reference in New Issue
Block a user