Compare commits

...

3 Commits

Author SHA1 Message Date
d4rks1d33
0ebf26eff4 Update Honda, should be less false positives
All checks were successful
Build Dev Firmware / build (push) Successful in 6m32s
2026-04-05 20:12:04 -03:00
Andrea Santaniello
ac620e2b0e Fix rolling increment on upload
All checks were successful
Build Dev Firmware / build (push) Successful in 6m30s
2026-04-05 18:42:44 +02:00
Andrea Santaniello
46115cdf6c Updated Readme and set flag for 315Mhz 2026-04-05 18:40:05 +02:00
4 changed files with 791 additions and 531 deletions

View File

@@ -66,6 +66,7 @@ This project may incorporate, adapt, or build upon **other open-source projects*
| Scher-Khan | Scher-Khan | 433 MHz | FM | Yes | Yes | No |
| Scher-Khan | Magic Code PRO1/PRO2 | 433 MHz | FM | Yes | Yes | Yes |
| Sheriff | Sheriff CFM (ZX-750/930) | 433 MHz | AM | Yes | Yes | No |
| Chrysler/Dodge/Jeep | FOBIK GQ43VT | 315/433 MHz | AM | Yes | Yes | No |
### Gate / Access Protocols

View File

@@ -97,7 +97,7 @@ const SubGhzProtocolEncoder subghz_protocol_chrysler_encoder = {
const SubGhzProtocol subghz_protocol_chrysler = {
.name = CHRYSLER_PROTOCOL_NAME,
.type = SubGhzProtocolTypeDynamic,
.flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM |
.flag = SubGhzProtocolFlag_315 | SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM |
SubGhzProtocolFlag_Decodable |
SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send,
.decoder = &subghz_protocol_chrysler_decoder,
@@ -333,6 +333,9 @@ LevelDuration subghz_protocol_encoder_chrysler_yield(void* context) {
instance->encoder.repeat--;
}
instance->encoder.front = 0;
chrysler_advance_rolling(instance->raw_data);
chrysler_encoder_rebuild(instance);
chrysler_encoder_get_upload(instance);
}
return ret;

File diff suppressed because it is too large Load Diff

View File

@@ -7,27 +7,56 @@
#include <lib/subghz/blocks/generic.h>
#include <lib/subghz/blocks/math.h>
/* ── Protocol name ─────────────────────────────────────────────────────── */
#define SUBGHZ_PROTOCOL_HONDA_NAME "Honda"
#define HONDA_TE_SHORT 63u
#define HONDA_TE_LONG 126u
#define HONDA_TE_DELTA 35u
#define HONDA_GUARD_TIME_US 700u
#define HONDA_TE_SHORT 250u
#define HONDA_TE_LONG 480u
#define HONDA_TE_DELTA 62u
#define HONDA_MIN_PREAMBLE_COUNT 20u
#define HONDA_PREAMBLE_CYCLES 312u
/* ── FSK adaptive decoder parameters ──────────────────────────────────── */
#define HONDA_FRAME_BITS 64u
#define HONDA_FRAME_BITS_B 68u
#define HONDA_MIN_BITS HONDA_FRAME_BITS
#define HONDA_FSK_DUR_MIN_US 35u
#define HONDA_FSK_DUR_MAX_US 2000u
#define HONDA_BTN_LOCK 0x01u
#define HONDA_BTN_UNLOCK 0x02u
#define HONDA_BTN_TRUNK 0x04u
#define HONDA_BTN_PANIC 0x08u
#define HONDA_BTN_RSTART 0x05u
#define HONDA_BTN_LOCK2PRESS 0x09u
//#define HONDA_FSK_GAP_US 3000u
#define HONDA_FSK_GAP_US 400u
#define HONDA_FSK_COLLECT_N 32u
#define HONDA_FSK_TOL_PCT 40u
#define HONDA_RAW_EDGE_BUF 512u
#define HONDA_MAN_BIT_BUF 256u
#define HONDA_FSK_MIN_PREAMBLE_BITS 16u
#define HONDA_FRAME_BITS_M1 88u
#define HONDA_FRAME_BITS_M2 66u
#define HONDA_MIN_BITS HONDA_FRAME_BITS_M2
/* ── Mode 2 OOK parameters ────────────────────── */
#define HONDA_TE_M2 400u
#define HONDA_TE_M2_DELTA 100u
#define HONDA_MIN_PREAMBLE_PULSES_M1 280u
#define HONDA_MIN_PREAMBLE_PULSES_M2 18u
#define HONDA_PREAMBLE_CYCLES_M1 312u
#define HONDA_PREAMBLE_CYCLES_M2 23u
#define HONDA_GAP_M1_MIN_US 500u
#define HONDA_GAP_M1_MAX_US 1100u
#define HONDA_GAP_M2_MIN_US 3000u
#define HONDA_GAP_M2_MAX_US 5500u
#define HONDA_GUARD_TIME_US 1000u
/* ── Button codes ──────────────────────────────────────────────────────── */
#define HONDA_BTN_LOCK 0x01u
#define HONDA_BTN_UNLOCK 0x02u
#define HONDA_BTN_TRUNK 0x04u
#define HONDA_BTN_PANIC 0x08u
#define HONDA_BTN_RSTART 0x05u
#define HONDA_BTN_LOCK2PRESS 0x09u
#define HONDA_CUSTOM_BTN_MAX 5u
/* ── Lookup tables ─────────────────────────────────────────── */
#define HONDA_TABLE_A \
{0x02,0x06,0x00,0x04,0x0B,0x0F,0x09,0x0D,0x06,0x02,0x04,0x00,0x0F,0x0B,0x0D,0x09}, \
{0x08,0x0C,0x0A,0x0E,0x01,0x05,0x03,0x07,0x0C,0x08,0x0E,0x0A,0x05,0x01,0x07,0x03}, \
@@ -118,6 +147,7 @@
{0x08,0x09,0x0C,0x0D,0x02,0x0A,0x06,0x07,0x0D,0x0C,0x09,0x08,0x07,0x06,0x03,0x02}, \
{0x06,0x07,0x02,0x03,0x0C,0x0D,0x08,0x09,0x03,0x02,0x07,0x06,0x09,0x08,0x0D,0x0C}
/* ── CC1101 FSK preset ──────────────────────────────────────────────────── */
#define HONDA_CC1101_PRESET_DATA \
0x02, 0x0D, \
0x0B, 0x06, \
@@ -140,16 +170,15 @@
0x00, 0x00, \
0xC0, 0x00
#define HONDA_CUSTOM_BTN_MAX 5
/* ── External declarations ──────────────────────────────────────────────── */
extern const SubGhzProtocolDecoder subghz_protocol_honda_decoder;
extern const SubGhzProtocolEncoder subghz_protocol_honda_encoder;
extern const SubGhzProtocol subghz_protocol_honda;
extern const SubGhzProtocol subghz_protocol_honda;
void* subghz_protocol_decoder_honda_alloc(SubGhzEnvironment* environment);
void subghz_protocol_decoder_honda_free(void* context);
void subghz_protocol_decoder_honda_reset(void* context);
void subghz_protocol_decoder_honda_feed(void* context, bool level, uint32_t duration);
void* subghz_protocol_decoder_honda_alloc(SubGhzEnvironment* environment);
void subghz_protocol_decoder_honda_free(void* context);
void subghz_protocol_decoder_honda_reset(void* context);
void subghz_protocol_decoder_honda_feed(void* context, bool level, uint32_t duration);
uint8_t subghz_protocol_decoder_honda_get_hash_data(void* context);
SubGhzProtocolStatus subghz_protocol_decoder_honda_serialize(
void* context, FlipperFormat* flipper_format, SubGhzRadioPreset* preset);
@@ -157,9 +186,9 @@ SubGhzProtocolStatus subghz_protocol_decoder_honda_deserialize(
void* context, FlipperFormat* flipper_format);
void subghz_protocol_decoder_honda_get_string(void* context, FuriString* output);
void* subghz_protocol_encoder_honda_alloc(SubGhzEnvironment* environment);
void subghz_protocol_encoder_honda_free(void* context);
void subghz_protocol_encoder_honda_stop(void* context);
void* subghz_protocol_encoder_honda_alloc(SubGhzEnvironment* environment);
void subghz_protocol_encoder_honda_free(void* context);
void subghz_protocol_encoder_honda_stop(void* context);
LevelDuration subghz_protocol_encoder_honda_yield(void* context);
SubGhzProtocolStatus subghz_protocol_encoder_honda_deserialize(
void* context, FlipperFormat* flipper_format);