mirror of
https://github.com/D4C1-Labs/Flipper-ARF.git
synced 2026-07-21 06:30:55 +00:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b34a73b08a | ||
|
|
069a42d697 |
@@ -34,7 +34,7 @@ typedef struct {
|
|||||||
bool stop_pending; /* stop requested before MIN_TX_TICKS elapsed */
|
bool stop_pending; /* stop requested before MIN_TX_TICKS elapsed */
|
||||||
uint32_t tx_start_tick;
|
uint32_t tx_start_tick;
|
||||||
|
|
||||||
/* Pending button key (InputKey) decoded from the packed custom event */
|
/* Resolved custom button repeated while the physical key is held */
|
||||||
uint8_t pending_button;
|
uint8_t pending_button;
|
||||||
} CarEmulateState;
|
} CarEmulateState;
|
||||||
|
|
||||||
@@ -252,12 +252,34 @@ static bool car_emulate_start_tx(SubGhz* subghz, uint8_t custom_btn_id) {
|
|||||||
|
|
||||||
/** Stop an active transmission. */
|
/** Stop an active transmission. */
|
||||||
static void car_emulate_stop_tx(SubGhz* subghz) {
|
static void car_emulate_stop_tx(SubGhz* subghz) {
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
subghz_txrx_stop(subghz->txrx);
|
subghz_txrx_stop(subghz->txrx);
|
||||||
subghz->state_notifications = SubGhzNotificationStateIDLE;
|
subghz->state_notifications = SubGhzNotificationStateIDLE;
|
||||||
notification_message(subghz->notifications, &sequence_blink_stop);
|
notification_message(subghz->notifications, &sequence_blink_stop);
|
||||||
FURI_LOG_I(TAG, "TX stopped");
|
FURI_LOG_I(TAG, "TX stopped");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool car_emulate_restart_tx(SubGhz* subghz) {
|
||||||
|
furi_assert(s_state);
|
||||||
|
|
||||||
|
car_emulate_update_fff(subghz, s_state->current_counter);
|
||||||
|
subghz_block_generic_global.endless_tx = true;
|
||||||
|
|
||||||
|
if(car_emulate_start_tx(subghz, s_state->pending_button)) {
|
||||||
|
s_state->is_transmitting = true;
|
||||||
|
subghz->state_notifications = SubGhzNotificationStateTx;
|
||||||
|
notification_message(subghz->notifications, &sequence_blink_magenta_10);
|
||||||
|
FURI_LOG_D(TAG, "TX restarted while button is held");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
|
s_state->is_transmitting = false;
|
||||||
|
s_state->stop_pending = false;
|
||||||
|
notification_message(subghz->notifications, &sequence_error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* ═══════════════════════════════════════════════════════════════════════════
|
/* ═══════════════════════════════════════════════════════════════════════════
|
||||||
* View callback (fired from the View's input handler)
|
* View callback (fired from the View's input handler)
|
||||||
* ═════════════════════════════════════════════════════════════════════════*/
|
* ═════════════════════════════════════════════════════════════════════════*/
|
||||||
@@ -293,6 +315,7 @@ void subghz_scene_car_emulate_on_enter(void* context) {
|
|||||||
s_state = malloc(sizeof(CarEmulateState));
|
s_state = malloc(sizeof(CarEmulateState));
|
||||||
furi_check(s_state);
|
furi_check(s_state);
|
||||||
memset(s_state, 0, sizeof(CarEmulateState));
|
memset(s_state, 0, sizeof(CarEmulateState));
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
|
|
||||||
/* ── Read metadata from the loaded fff_data ── */
|
/* ── Read metadata from the loaded fff_data ── */
|
||||||
FlipperFormat* fff = subghz_txrx_get_fff_data(subghz->txrx);
|
FlipperFormat* fff = subghz_txrx_get_fff_data(subghz->txrx);
|
||||||
@@ -401,8 +424,11 @@ bool subghz_scene_car_emulate_on_event(void* context, SceneManagerEvent event) {
|
|||||||
s_state->tx_start_tick = (uint32_t)furi_get_tick();
|
s_state->tx_start_tick = (uint32_t)furi_get_tick();
|
||||||
|
|
||||||
uint8_t cur_btn = subghz_custom_btn_get();
|
uint8_t cur_btn = subghz_custom_btn_get();
|
||||||
|
s_state->pending_button = cur_btn;
|
||||||
|
subghz_block_generic_global.endless_tx = true;
|
||||||
if(!car_emulate_start_tx(subghz, cur_btn)) {
|
if(!car_emulate_start_tx(subghz, cur_btn)) {
|
||||||
s_state->is_transmitting = false;
|
s_state->is_transmitting = false;
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
notification_message(subghz->notifications, &sequence_error);
|
notification_message(subghz->notifications, &sequence_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,11 +437,13 @@ bool subghz_scene_car_emulate_on_event(void* context, SceneManagerEvent event) {
|
|||||||
|
|
||||||
/* ── Stop ── */
|
/* ── Stop ── */
|
||||||
} else if(event.event == SubGhzCustomEventCarEmulateStop) {
|
} else if(event.event == SubGhzCustomEventCarEmulateStop) {
|
||||||
if(s_state->is_transmitting &&
|
if(s_state->is_transmitting) {
|
||||||
subghz->state_notifications == SubGhzNotificationStateTx) {
|
subghz_block_generic_global.endless_tx = false;
|
||||||
|
|
||||||
uint32_t elapsed = (uint32_t)furi_get_tick() - s_state->tx_start_tick;
|
uint32_t elapsed = (uint32_t)furi_get_tick() - s_state->tx_start_tick;
|
||||||
if(elapsed >= MIN_TX_TICKS) {
|
if(
|
||||||
|
elapsed >= MIN_TX_TICKS &&
|
||||||
|
subghz->state_notifications == SubGhzNotificationStateTx) {
|
||||||
car_emulate_stop_tx(subghz);
|
car_emulate_stop_tx(subghz);
|
||||||
s_state->is_transmitting = false;
|
s_state->is_transmitting = false;
|
||||||
s_state->stop_pending = false;
|
s_state->stop_pending = false;
|
||||||
@@ -431,6 +459,7 @@ bool subghz_scene_car_emulate_on_event(void* context, SceneManagerEvent event) {
|
|||||||
if(subghz->state_notifications == SubGhzNotificationStateTx) {
|
if(subghz->state_notifications == SubGhzNotificationStateTx) {
|
||||||
car_emulate_stop_tx(subghz);
|
car_emulate_stop_tx(subghz);
|
||||||
}
|
}
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
scene_manager_search_and_switch_to_previous_scene(
|
scene_manager_search_and_switch_to_previous_scene(
|
||||||
subghz->scene_manager, SubGhzSceneSavedMenu);
|
subghz->scene_manager, SubGhzSceneSavedMenu);
|
||||||
consumed = true;
|
consumed = true;
|
||||||
@@ -450,6 +479,8 @@ bool subghz_scene_car_emulate_on_event(void* context, SceneManagerEvent event) {
|
|||||||
s_state->is_transmitting = false;
|
s_state->is_transmitting = false;
|
||||||
s_state->stop_pending = false;
|
s_state->stop_pending = false;
|
||||||
notification_message(subghz->notifications, &sequence_blink_stop);
|
notification_message(subghz->notifications, &sequence_blink_stop);
|
||||||
|
} else {
|
||||||
|
car_emulate_restart_tx(subghz);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Still transmitting – blink LED */
|
/* Still transmitting – blink LED */
|
||||||
@@ -485,6 +516,7 @@ void subghz_scene_car_emulate_on_exit(void* context) {
|
|||||||
car_emulate_stop_tx(subghz);
|
car_emulate_stop_tx(subghz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subghz_block_generic_global.endless_tx = false;
|
||||||
subghz->state_notifications = SubGhzNotificationStateIDLE;
|
subghz->state_notifications = SubGhzNotificationStateIDLE;
|
||||||
notification_message(subghz->notifications, &sequence_blink_stop);
|
notification_message(subghz->notifications, &sequence_blink_stop);
|
||||||
|
|
||||||
|
|||||||
@@ -407,7 +407,7 @@ LevelDuration subghz_protocol_encoder_fiat_spa_yield(void* context) {
|
|||||||
}
|
}
|
||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ LevelDuration subghz_protocol_encoder_ford_v0_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1278,8 +1278,9 @@ LevelDuration subghz_protocol_encoder_ford_v1_yield(void* context) {
|
|||||||
"Encoder yield: finished one full %lu-word frame (all %u bursts); repeats_left=%u",
|
"Encoder yield: finished one full %lu-word frame (all %u bursts); repeats_left=%u",
|
||||||
(unsigned long)instance->encoder.size_upload,
|
(unsigned long)instance->encoder.size_upload,
|
||||||
(unsigned)FORD_V1_ENC_BURST_COUNT,
|
(unsigned)FORD_V1_ENC_BURST_COUNT,
|
||||||
(unsigned)instance->encoder.repeat - 1U);
|
subghz_block_generic_global.endless_tx ? (unsigned)instance->encoder.repeat :
|
||||||
instance->encoder.repeat--;
|
(unsigned)instance->encoder.repeat - 1U);
|
||||||
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
} else if(instance->encoder.front <= 4U) {
|
} else if(instance->encoder.front <= 4U) {
|
||||||
uint32_t raw_word;
|
uint32_t raw_word;
|
||||||
|
|||||||
@@ -615,7 +615,7 @@ LevelDuration subghz_protocol_encoder_ford_v2_yield(void* context) {
|
|||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.front = 0U;
|
instance->encoder.front = 0U;
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ LevelDuration subghz_protocol_encoder_kia_yield(void* context) {
|
|||||||
|
|
||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,4 +594,3 @@ void subghz_protocol_decoder_kia_get_string(void* context, FuriString* output) {
|
|||||||
received_crc,
|
received_crc,
|
||||||
crc_valid ? "(OK)" : "(FAIL)");
|
crc_valid ? "(OK)" : "(FAIL)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ LevelDuration subghz_protocol_encoder_kia_v1_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ LevelDuration subghz_protocol_encoder_kia_v2_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -648,7 +648,7 @@ LevelDuration subghz_protocol_encoder_kia_v3_v4_yield(void* context) {
|
|||||||
instance->crc_iter = (uint8_t)((instance->crc_iter + 1U) & 0x0FU);
|
instance->crc_iter = (uint8_t)((instance->crc_iter + 1U) & 0x0FU);
|
||||||
subghz_protocol_encoder_kia_v3_v4_patch_crc(instance);
|
subghz_protocol_encoder_kia_v3_v4_patch_crc(instance);
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
if(instance->bursts_sent < 16U) {
|
if(instance->bursts_sent < 16U) {
|
||||||
instance->bursts_sent++;
|
instance->bursts_sent++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ LevelDuration subghz_protocol_encoder_kia_v5_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -791,7 +791,7 @@ LevelDuration subghz_protocol_encoder_kia_v6_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
instance->encoder.front++;
|
instance->encoder.front++;
|
||||||
if(instance->encoder.front >= instance->encoder.size_upload) {
|
if(instance->encoder.front >= instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ LevelDuration kia_protocol_encoder_v7_yield(void* context) {
|
|||||||
LevelDuration duration = instance->encoder.upload[instance->encoder.front];
|
LevelDuration duration = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -969,7 +969,7 @@ LevelDuration subghz_protocol_encoder_land_rover_v0_yield(void* context) {
|
|||||||
|
|
||||||
if(instance->encoder.front >= instance->encoder.size_upload) {
|
if(instance->encoder.front >= instance->encoder.size_upload) {
|
||||||
/* One full repetition done; count it down */
|
/* One full repetition done; count it down */
|
||||||
if(instance->encoder.repeat > 0) {
|
if(instance->encoder.repeat > 0 && !subghz_block_generic_global.endless_tx) {
|
||||||
instance->encoder.repeat--;
|
instance->encoder.repeat--;
|
||||||
}
|
}
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
|
|||||||
@@ -499,7 +499,7 @@ LevelDuration subghz_protocol_encoder_mazda_v0_yield(void* context) {
|
|||||||
LevelDuration out = instance->encoder.upload[instance->encoder.front];
|
LevelDuration out = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ LevelDuration subghz_protocol_encoder_mitsubishi_v0_yield(void* context) {
|
|||||||
if(!instance->encoder.is_running || instance->encoder.repeat == 0) return level_duration_reset();
|
if(!instance->encoder.is_running || instance->encoder.repeat == 0) return level_duration_reset();
|
||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -621,7 +621,7 @@ LevelDuration subghz_protocol_encoder_porsche_cayenne_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1932,7 +1932,7 @@ LevelDuration subghz_protocol_encoder_psa_yield(void* context) {
|
|||||||
instance->encoder.front++;
|
instance->encoder.front++;
|
||||||
if(instance->encoder.front >= instance->encoder.size_upload) {
|
if(instance->encoder.front >= instance->encoder.size_upload) {
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
if(instance->encoder.repeat <= 0) instance->is_running = false;
|
if(instance->encoder.repeat <= 0) instance->is_running = false;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -622,7 +622,7 @@ LevelDuration subghz_protocol_encoder_scher_khan_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -418,7 +418,7 @@ LevelDuration subghz_protocol_encoder_sheriff_cfm_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -556,7 +556,7 @@ LevelDuration subghz_protocol_encoder_star_line_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -527,7 +527,7 @@ LevelDuration subghz_protocol_encoder_subaru_yield(void* context) {
|
|||||||
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
LevelDuration ret = instance->encoder.upload[instance->encoder.front];
|
||||||
|
|
||||||
if(++instance->encoder.front == instance->encoder.size_upload) {
|
if(++instance->encoder.front == instance->encoder.size_upload) {
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -494,7 +494,7 @@ LevelDuration subghz_protocol_encoder_suzuki_yield(void *context)
|
|||||||
|
|
||||||
if (++instance->encoder.front == instance->encoder.size_upload)
|
if (++instance->encoder.front == instance->encoder.size_upload)
|
||||||
{
|
{
|
||||||
instance->encoder.repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->encoder.repeat--;
|
||||||
instance->encoder.front = 0;
|
instance->encoder.front = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1358,7 +1358,7 @@ LevelDuration subghz_protocol_encoder_vag_yield(void* context) {
|
|||||||
|
|
||||||
if(instance->front >= instance->size_upload) {
|
if(instance->front >= instance->size_upload) {
|
||||||
instance->front = 0;
|
instance->front = 0;
|
||||||
instance->repeat--;
|
if(!subghz_block_generic_global.endless_tx) instance->repeat--;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
Reference in New Issue
Block a user