Update subbrute

This commit is contained in:
Willy-JL
2023-07-04 23:30:32 +02:00
parent 4556a5e47a
commit 02943dd1db
11 changed files with 124 additions and 11 deletions

View File

@@ -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--;
}
}

View File

@@ -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);

View File

@@ -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