From c6e30a1ed9d0839628b29fce11552f69f9b76567 Mon Sep 17 00:00:00 2001 From: assasinfil Date: Thu, 19 Jan 2023 18:04:03 +0300 Subject: [PATCH] Inter-frame timeout fix --- lib/subghz/protocols/somfy_keytis.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/subghz/protocols/somfy_keytis.c b/lib/subghz/protocols/somfy_keytis.c index def8cc45f..ab9202cc3 100644 --- a/lib/subghz/protocols/somfy_keytis.c +++ b/lib/subghz/protocols/somfy_keytis.c @@ -284,6 +284,15 @@ static bool subghz_protocol_encoder_somfy_keytis_get_upload( } } + //Inter-frame silence + if(instance->encoder.upload[index - 1].level == LEVEL_DURATION_LEVEL_LOW) { + instance->encoder.upload[index - 1].duration += + (uint32_t)subghz_protocol_somfy_keytis_const.te_short * 3; + } else { + instance->encoder.upload[index++] = + level_duration_make(false, (uint32_t)subghz_protocol_somfy_keytis_const.te_short * 3); + } + for(uint8_t i = 0; i < 2; ++i) { //Hardware sync for(uint8_t i = 0; i < 6; ++i) { @@ -353,13 +362,18 @@ static bool subghz_protocol_encoder_somfy_keytis_get_upload( } } //Inter-frame silence - instance->encoder.upload[index++] = - level_duration_make(false, (uint32_t)subghz_protocol_somfy_keytis_const.te_short); + if(instance->encoder.upload[index - 1].level == LEVEL_DURATION_LEVEL_LOW) { + instance->encoder.upload[index - 1].duration += + (uint32_t)subghz_protocol_somfy_keytis_const.te_short * 3; + } else { + instance->encoder.upload[index++] = level_duration_make( + false, (uint32_t)subghz_protocol_somfy_keytis_const.te_short * 3); + } } //Inter-frame silence - instance->encoder.upload[index++] = - level_duration_make(false, (uint32_t)subghz_protocol_somfy_keytis_const.te_long); + instance->encoder.upload[index - 1].duration += + (uint32_t)30415 - (uint32_t)subghz_protocol_somfy_keytis_const.te_short * 3; size_t size_upload = index;