Compare commits

...

1 Commits

Author SHA1 Message Date
d4rks1d33 6507bed882 Kia V0/V1/V2 now fully working 2026-03-10 13:36:26 -03:00
5 changed files with 17 additions and 13 deletions
+12 -6
View File
@@ -1,6 +1,13 @@
#include "kia_v0.h" #include "kia_v0.h"
#include "../blocks/custom_btn_i.h" #include "../blocks/custom_btn_i.h"
static const char* kia_v0_btn_name(uint8_t btn) {
if(btn == 0x01) return "Lock";
if(btn == 0x02) return "Unlock";
if(btn == 0x03) return "Boot";
return "?";
}
static uint8_t kia_v0_get_btn_code() { static uint8_t kia_v0_get_btn_code() {
uint8_t custom_btn = subghz_custom_btn_get(); uint8_t custom_btn = subghz_custom_btn_get();
uint8_t original_btn = subghz_custom_btn_get_original(); uint8_t original_btn = subghz_custom_btn_get_original();
@@ -259,6 +266,7 @@ SubGhzProtocolStatus
furi_check(context); furi_check(context);
SubGhzProtocolEncoderKIA* instance = context; SubGhzProtocolEncoderKIA* instance = context;
flipper_format_rewind(flipper_format);
instance->encoder.is_running = false; instance->encoder.is_running = false;
instance->encoder.front = 0; instance->encoder.front = 0;
instance->encoder.repeat = 10; instance->encoder.repeat = 10;
@@ -370,8 +378,7 @@ SubGhzProtocolStatus
} else { } else {
instance->button = (key >> 8) & 0x0F; instance->button = (key >> 8) & 0x0F;
} }
if(subghz_custom_btn_get_original() == 0) subghz_custom_btn_set_original(instance->button);
subghz_custom_btn_set_original(instance->button);
subghz_custom_btn_set_max(4); subghz_custom_btn_set_max(4);
instance->button = kia_v0_get_btn_code(); instance->button = kia_v0_get_btn_code();
@@ -726,8 +733,7 @@ void subghz_protocol_decoder_kia_get_string(void* context, FuriString* output) {
SubGhzProtocolDecoderKIA* instance = context; SubGhzProtocolDecoderKIA* instance = context;
subghz_protocol_kia_check_remote_controller(&instance->generic); subghz_protocol_kia_check_remote_controller(&instance->generic);
if(subghz_custom_btn_get_original() == 0) subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_max(4); subghz_custom_btn_set_max(4);
uint32_t code_found_hi = instance->generic.data >> 32; uint32_t code_found_hi = instance->generic.data >> 32;
uint32_t code_found_lo = instance->generic.data & 0x00000000ffffffff; uint32_t code_found_lo = instance->generic.data & 0x00000000ffffffff;
@@ -740,14 +746,14 @@ void subghz_protocol_decoder_kia_get_string(void* context, FuriString* output) {
output, output,
"%s %dbit\r\n" "%s %dbit\r\n"
"Key:%08lX%08lX\r\n" "Key:%08lX%08lX\r\n"
"Sn:%07lX Btn:%X Cnt:%04lX\r\n" "Sn:%07lX Btn:[%s] Cnt:%04lX\r\n"
"CRC:%02X %s\r\n", "CRC:%02X %s\r\n",
instance->generic.protocol_name, instance->generic.protocol_name,
instance->generic.data_count_bit, instance->generic.data_count_bit,
code_found_hi, code_found_hi,
code_found_lo, code_found_lo,
instance->generic.serial, instance->generic.serial,
kia_v0_get_btn_code(), kia_v0_btn_name(kia_v0_get_btn_code()),
instance->generic.cnt, instance->generic.cnt,
received_crc, received_crc,
crc_valid ? "(OK)" : "(FAIL)"); crc_valid ? "(OK)" : "(FAIL)");
+1 -1
View File
@@ -3,7 +3,7 @@
#include "kia_generic.h" #include "kia_generic.h"
#define KIA_PROTOCOL_V0_NAME "Kia V0" #define KIA_PROTOCOL_V0_NAME "KIA/HYU V0"
typedef struct SubGhzProtocolDecoderKIA SubGhzProtocolDecoderKIA; typedef struct SubGhzProtocolDecoderKIA SubGhzProtocolDecoderKIA;
typedef struct SubGhzProtocolEncoderKIA SubGhzProtocolEncoderKIA; typedef struct SubGhzProtocolEncoderKIA SubGhzProtocolEncoderKIA;
+1 -1
View File
@@ -3,7 +3,7 @@
#include "kia_generic.h" #include "kia_generic.h"
#define KIA_PROTOCOL_V1_NAME "Kia V1" #define KIA_PROTOCOL_V1_NAME "KIA/HYU V1"
typedef struct SubGhzProtocolDecoderKiaV1 SubGhzProtocolDecoderKiaV1; typedef struct SubGhzProtocolDecoderKiaV1 SubGhzProtocolDecoderKiaV1;
typedef struct SubGhzProtocolEncoderKiaV1 SubGhzProtocolEncoderKiaV1; typedef struct SubGhzProtocolEncoderKiaV1 SubGhzProtocolEncoderKiaV1;
+2 -4
View File
@@ -265,8 +265,7 @@ SubGhzProtocolStatus
} else { } else {
instance->generic.btn = (uint8_t)((instance->generic.data >> 16) & 0x0F); instance->generic.btn = (uint8_t)((instance->generic.data >> 16) & 0x0F);
} }
if(subghz_custom_btn_get_original() == 0) subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_max(4); subghz_custom_btn_set_max(4);
instance->generic.btn = kia_v2_get_btn_code(); instance->generic.btn = kia_v2_get_btn_code();
@@ -538,8 +537,7 @@ SubGhzProtocolStatus
void kia_protocol_decoder_v2_get_string(void* context, FuriString* output) { void kia_protocol_decoder_v2_get_string(void* context, FuriString* output) {
furi_check(context); furi_check(context);
SubGhzProtocolDecoderKiaV2* instance = context; SubGhzProtocolDecoderKiaV2* instance = context;
if(subghz_custom_btn_get_original() == 0) subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_original(instance->generic.btn);
subghz_custom_btn_set_max(4); subghz_custom_btn_set_max(4);
uint8_t crc = instance->generic.data & 0x0F; uint8_t crc = instance->generic.data & 0x0F;
+1 -1
View File
@@ -4,7 +4,7 @@
#include <lib/toolbox/manchester_decoder.h> #include <lib/toolbox/manchester_decoder.h>
#define KIA_PROTOCOL_V2_NAME "Kia V2" #define KIA_PROTOCOL_V2_NAME "KIA/HYU V2"
typedef struct SubGhzProtocolDecoderKiaV2 SubGhzProtocolDecoderKiaV2; typedef struct SubGhzProtocolDecoderKiaV2 SubGhzProtocolDecoderKiaV2;
typedef struct SubGhzProtocolEncoderKiaV2 SubGhzProtocolEncoderKiaV2; typedef struct SubGhzProtocolEncoderKiaV2 SubGhzProtocolEncoderKiaV2;