From 04d7b46ce9eaca1d70d35347c27283e73f523735 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 9 Mar 2026 18:15:14 +0300 Subject: [PATCH] add came twee support for TOP44FGN --- CHANGELOG.md | 1 + documentation/SubGHzSupportedSystems.md | 2 +- lib/subghz/protocols/came_twee.c | 10 +++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdfa1d12d..530fd147f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Main changes - Current API: 87.6 +* SubGHz: Add **CAME TOP44FGN** support in CAME TWEE protocol * NFC: Add Mifare Ultralight C Write Support (by @haw8411) * Apps: Build tag (**9mar2026p3**) - **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes diff --git a/documentation/SubGHzSupportedSystems.md b/documentation/SubGHzSupportedSystems.md index 12f409eb4..5b6e427c8 100644 --- a/documentation/SubGHzSupportedSystems.md +++ b/documentation/SubGHzSupportedSystems.md @@ -23,7 +23,7 @@ That list is only for default SubGHz app, apps like *Weather Station* have their - Beninca ARC (TOGO2VA) `433.92MHz` `AM650` (128 bits, Dynamic AES128) (button code `0` emulates `hidden button` option on the remote) - BFT Mitto `433.92MHz` `AM650` (64 bits, Dynamic, KeeLoq based with Seed taken from serial) - CAME Atomo `433.92MHz, 868MHz` `AM650` (62 bits, Dynamic) -- CAME TWEE `433.92MHz` `AM650` (54 bits, Static) +- CAME TWEE `433.92MHz` `AM650` (54 bits, Pseudo-Dynamic) (+ TOP44FGN) (aka New Fixed Code) - CAME `433.92MHz, 868MHz` `AM650` (12, 24 bits, Static) - Ditec GOL4 `433.92MHz` `AM650` (54 bits, Dynamic) (should be compatible with BIXLG4, BIXLS2, BIXLP2) - (right arrow emulates button `0` (hidden button)) - Prastel `433.92MHz, 868MHz` `AM650` (25, 42 bits, Static) diff --git a/lib/subghz/protocols/came_twee.c b/lib/subghz/protocols/came_twee.c index d6b656a57..55947efbf 100644 --- a/lib/subghz/protocols/came_twee.c +++ b/lib/subghz/protocols/came_twee.c @@ -322,9 +322,13 @@ void subghz_protocol_decoder_came_twee_feed(void* context, bool level, uint32_t ManchesterEvent event = ManchesterEventReset; switch(instance->decoder.parser_step) { case CameTweeDecoderStepReset: - if((!level) && (DURATION_DIFF(duration, subghz_protocol_came_twee_const.te_long * 51) < - subghz_protocol_came_twee_const.te_delta * 20)) { - //Found header CAME + if((!level) && ((DURATION_DIFF(duration, subghz_protocol_came_twee_const.te_long * 51) < + subghz_protocol_came_twee_const.te_delta * 20) || + (DURATION_DIFF(duration, subghz_protocol_came_twee_const.te_long * 12) < + subghz_protocol_came_twee_const.te_delta * 10))) { + // Found header CAME + // Original TWEE uses 51k us delay + // TOP44FGN uses 12k us delay instance->decoder.parser_step = CameTweeDecoderStepDecoderData; instance->decoder.decode_data = 0; instance->decoder.decode_count_bit = 0;