fix twice button press in manual mode

This commit is contained in:
derskythe
2022-09-26 21:10:41 +04:00
parent a0bcbf731d
commit 633145495c
4 changed files with 12 additions and 6 deletions
@@ -157,10 +157,16 @@ bool subbrute_worker_can_transmit(SubBruteWorker* instance) {
return (furi_get_tick() - instance->last_time_tx_data) > SUBBRUTE_SEND_DELAY;
}
bool subbrute_worker_can_manual_transmit(SubBruteWorker* instance) {
bool subbrute_worker_can_manual_transmit(SubBruteWorker* instance, bool is_button_pressed) {
furi_assert(instance);
return !instance->worker_manual_mode;
if(is_button_pressed) {
// It's human pressed, trying to reset twice pressing
return !instance->worker_manual_mode &&
(furi_get_tick() - instance->last_time_tx_data) > 500;
} else {
return !instance->worker_manual_mode;
}
}
bool subbrute_worker_transmit(SubBruteWorker* instance, const char* payload) {
@@ -204,7 +210,7 @@ bool subbrute_worker_init_manual_transmit(
frequency,
protocol_name);
#endif
if(instance->worker_manual_mode || !subbrute_worker_can_manual_transmit(instance) ||
if(instance->worker_manual_mode || !subbrute_worker_can_manual_transmit(instance, false) ||
instance->worker_running) {
#ifdef FURI_DEBUG
FURI_LOG_D(TAG, "cannot transmit");
@@ -28,7 +28,7 @@ void subbrute_worker_set_continuous_worker(SubBruteWorker* instance, bool is_con
//bool subbrute_worker_write(SubBruteWorker* instance, uint8_t* data, size_t size);
bool subbrute_worker_is_running(SubBruteWorker* instance);
bool subbrute_worker_can_transmit(SubBruteWorker* instance);
bool subbrute_worker_can_manual_transmit(SubBruteWorker* instance);
bool subbrute_worker_can_manual_transmit(SubBruteWorker* instance, bool is_button_pressed);
bool subbrute_worker_transmit(SubBruteWorker* instance, const char* payload);
bool subbrute_worker_init_manual_transmit(
SubBruteWorker* instance,
@@ -161,7 +161,7 @@ bool subbrute_scene_run_attack_on_event(void* context, SceneManagerEvent event)
notification_message(instance->notifications, &sequence_blink_stop);
}
} else {
if(subbrute_worker_can_manual_transmit(instance->worker)) {
if(subbrute_worker_can_manual_transmit(instance->worker, false)) {
// Blink
notification_message(instance->notifications, &sequence_blink_yellow_100);
@@ -135,7 +135,7 @@ bool subbrute_scene_setup_attack_on_event(void* context, SceneManagerEvent event
}
subbrute_attack_view_set_current_step(view, instance->device->key_index);
} else if(event.event == SubBruteCustomEventTypeTransmitCustom) {
if(subbrute_worker_can_manual_transmit(instance->worker)) {
if(subbrute_worker_can_manual_transmit(instance->worker, true)) {
// Blink
notification_message(instance->notifications, &sequence_blink_green_100);