Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ F:54ceacb8c156f9534fc7ee0a0911f4da:11380:subghz/holtek_ht12x_raw.sub
F:4a9567c1543cf3e7bb5350b635d9076f:31238:subghz/holtek_raw.sub
F:ca86c0d78364d704ff62b0698093d396:162:subghz/honeywell_wdb.sub
F:f606548c935adc8d8bc804326ef67543:38415:subghz/honeywell_wdb_raw.sub
F:14edaac76a69457b795c5c391cf581b1:12281:subghz/honeywell_5834_arm_away.sub
F:a958447531d0ea1a1f6ee3ccb3501842:10041:subghz/honeywell_5834_disarm.sub
F:d8f736cc1c020e9c062bb8ced371dcba:10239:subghz/honeywell_5834_panic.sub
F:f406deee6ecb957cb40a8edcad58f842:13442:subghz/honeywell_5834_stay.sub
F:20bba4b0aec006ced7e82513f9459e31:15532:subghz/hormann_hsm_raw.sub
F:3392f2db6aa7777e937db619b86203bb:10637:subghz/ido_117_111_raw.sub
F:cc5c7968527cc233ef11a08986e31bf2:167:subghz/intertechno_v3.sub
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Filetype: Flipper SubGhz Key File
Version: 1
Frequency: 345000000
Preset: FuriHalSubGhzPresetOok650Async
Protocol: Honeywell5834
Bit: 48
Key: 00 00 AB CD E0 00 04 00
16 changes: 16 additions & 0 deletions applications/debug/unit_tests/tests/subghz/subghz_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,14 @@ MU_TEST(subghz_decoder_honeywell_wdb_test) {
"Test decoder " SUBGHZ_PROTOCOL_HONEYWELL_WDB_NAME " error\r\n");
}

MU_TEST(subghz_decoder_honeywell_5834_test) {
mu_assert(
subghz_decoder_test(
EXT_PATH("unit_tests/subghz/honeywell_5834_raw.sub"),
SUBGHZ_PROTOCOL_HONEYWELL_5834_NAME),
"Test decoder " SUBGHZ_PROTOCOL_HONEYWELL_5834_NAME " error\r\n");
}

MU_TEST(subghz_decoder_magellan_test) {
mu_assert(
subghz_decoder_test(
Expand Down Expand Up @@ -837,6 +845,12 @@ MU_TEST(subghz_encoder_honeywell_wdb_test) {
"Test encoder " SUBGHZ_PROTOCOL_HONEYWELL_WDB_NAME " error\r\n");
}

MU_TEST(subghz_encoder_honeywell_5834_test) {
mu_assert(
subghz_encoder_test(EXT_PATH("unit_tests/subghz/honeywell_5834.sub")),
"Test encoder " SUBGHZ_PROTOCOL_HONEYWELL_5834_NAME " error\r\n");
}

MU_TEST(subghz_encoder_magellan_test) {
mu_assert(
subghz_encoder_test(EXT_PATH("unit_tests/subghz/magellan.sub")),
Expand Down Expand Up @@ -973,6 +987,7 @@ MU_TEST_SUITE(subghz) {
MU_RUN_TEST(subghz_decoder_doitrand_test);
MU_RUN_TEST(subghz_decoder_phoenix_v2_test);
MU_RUN_TEST(subghz_decoder_honeywell_wdb_test);
MU_RUN_TEST(subghz_decoder_honeywell_5834_test);
MU_RUN_TEST(subghz_decoder_magellan_test);
MU_RUN_TEST(subghz_decoder_intertechno_v3_test);
MU_RUN_TEST(subghz_decoder_clemsa_test);
Expand Down Expand Up @@ -1012,6 +1027,7 @@ MU_TEST_SUITE(subghz) {
MU_RUN_TEST(subghz_encoder_doitrand_test);
MU_RUN_TEST(subghz_encoder_phoenix_v2_test);
MU_RUN_TEST(subghz_encoder_honeywell_wdb_test);
MU_RUN_TEST(subghz_encoder_honeywell_5834_test);
MU_RUN_TEST(subghz_encoder_magellan_test);
MU_RUN_TEST(subghz_encoder_intertechno_v3_test);
MU_RUN_TEST(subghz_encoder_clemsa_test);
Expand Down
1 change: 1 addition & 0 deletions applications/main/subghz/helpers/subghz_custom_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ typedef enum {
SubmenuIndexSecPlus_v2_310_00,
SubmenuIndexSecPlus_v2_315_00,
SubmenuIndexSecPlus_v2_390_00,
SubmenuIndexHoneywell5834_345,

//SubGhzCustomEvent
SubGhzCustomEventSceneDeleteSuccess = 100,
Expand Down
16 changes: 16 additions & 0 deletions applications/main/subghz/scenes/subghz_scene_set_type.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,12 @@ void subghz_scene_set_type_on_enter(void* context) {
SubmenuIndexSecPlus_v2_390_00,
subghz_scene_set_type_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"Honeywell5834_345",
SubmenuIndexHoneywell5834_345,
subghz_scene_set_type_submenu_callback,
subghz);

submenu_set_selected_item(
subghz->submenu, scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSetType));
Expand Down Expand Up @@ -212,6 +218,16 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
generated_protocol = subghz_txrx_gen_secplus_v2_protocol(
subghz->txrx, "AM650", 390000000, key, 0x68, 0xE500000);
break;
case SubmenuIndexHoneywell5834_345: {
/* 20-bit random serial in bits [47:28], default Arm Away state */
uint64_t serial_20 = (uint64_t)(key & 0xFFFFF) << 28;
uint64_t state_bits = (uint64_t)0x40 << 4; /* Arm Away in state byte */
uint64_t frame = serial_20 | state_bits;
/* Set parity: bit 0 = popcount parity of bits [47:1] */
frame |= subghz_protocol_blocks_get_parity(frame >> 1, 47);
generated_protocol = subghz_txrx_gen_data_protocol(
subghz->txrx, "AM650", 345000000, SUBGHZ_PROTOCOL_HONEYWELL_5834_NAME, frame, 48);
} break;
default:
return false;
break;
Expand Down
Loading