Beninca / Allmatic support

This commit is contained in:
MX 2023-04-01 21:36:59 +03:00
parent f0d94e2757
commit 7b1d7904c1
No known key found for this signature in database
GPG key ID: 7CCC66B7DBDD1C83
5 changed files with 55 additions and 6 deletions

View file

@ -1,4 +1,6 @@
### New changes
* SubGHz: Support for Allmatic(reads as Beninca), also fix Beninca protocol
* SubGHz: Allmatic -> Add Manually
* Plugins: Show External CC1101 module status in Weather Station and in POCSAG Pager plugins
* Plugins: Update **TOTP (Authenticator)** [(by akopachov)](https://github.com/akopachov/flipper-zero_authenticator) (Fixes BT issues)
* SubGHz: Fix false detections of StarLine 72bit, flipper can decode only 64bit

View file

@ -69,9 +69,9 @@ Also check the changelog in releases for latest updates!
### Current modified and new Sub-GHz protocols list:
Thanks to Official team (to their SubGHz Developer, Skorp) for implementing decoders for these protocols.
Encoders/sending made by Eng1n33r & @xMasterX:
Keeloq [Not ALL systems supported for decode or emulation yet!] - [Supported manufacturers list](https://0bin.net/paste/VwR2lNJY#WH9vnPgvcp7w6zVKucFCuNREKAcOij8KsJ6vqLfMn3b)
- Keeloq [Not ALL systems supported for decode or emulation yet!] - [Supported manufacturers list](https://0bin.net/paste/VwR2lNJY#WH9vnPgvcp7w6zVKucFCuNREKAcOij8KsJ6vqLfMn3b)
Encoders or sending made by @xMasterX:
- Keeloq: HCS101
- Keeloq: AN-Motors
- Keeloq: JCM Tech
@ -81,16 +81,18 @@ Encoders/sending made by Eng1n33r & @xMasterX:
- Keeloq: FAAC RC,XT
- Keeloq: Mutancode
- Keeloq: Normstahl
- Keeloq: Beninca
- Keeloq: Beninca + Allmatic
- Keeloq: Stilmatic / Schellenberg
- Keeloq: CAME Space
- Keeloq: Aprimatic (model TR and similar)
Encoders/sending made by @Eng1n33r & @xMasterX:
- CAME Atomo
- Nice Flor S
- FAAC SLH (Spa) [External seed calculation required (For info contact me in Discord: Nano#8998)]
- Keeloq: BFT Mitto [External seed calculation required (For info contact me in Discord: Nano#8998)] -> Update! check out new [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- Security+ v1 & v2
- Star Line
- Security+ v1 & v2
Encoders made by @assasinfil & @xMasterX:
- Somfy Telis

View file

@ -13,6 +13,8 @@ typedef enum {
SubmenuIndexSomfyTelis,
SubmenuIndexBeninca433,
SubmenuIndexBeninca868,
SubmenuIndexAllmatic433,
SubmenuIndexAllmatic868,
SubmenuIndexIronLogic,
SubmenuIndexElmesElectronic,
SubmenuIndexSommer_FM_434,

View file

@ -171,6 +171,18 @@ void subghz_scene_set_type_on_enter(void* context) {
SubmenuIndexBeninca868,
subghz_scene_set_type_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"KL: Allmatic 433MHz",
SubmenuIndexAllmatic433,
subghz_scene_set_type_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"KL: Allmatic 868MHz",
SubmenuIndexAllmatic868,
subghz_scene_set_type_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"KL: Sommer 434MHz",
@ -505,6 +517,30 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
generated_protocol = true;
}
break;
case SubmenuIndexAllmatic433:
if(subghz_scene_set_type_submenu_gen_data_keeloq(
subghz,
"AM650",
433920000,
(key & 0x00FFFF00) | 0x01000011,
0xC,
0x0005,
"Beninca")) {
generated_protocol = true;
}
break;
case SubmenuIndexAllmatic868:
if(subghz_scene_set_type_submenu_gen_data_keeloq(
subghz,
"AM650",
868350000,
(key & 0x00FFFF00) | 0x01000011,
0xC,
0x0005,
"Beninca")) {
generated_protocol = true;
}
break;
case SubmenuIndexElmesElectronic:
if(subghz_scene_set_type_submenu_gen_data_keeloq(
subghz,

View file

@ -243,9 +243,9 @@ static bool subghz_protocol_keeloq_gen_data(
decrypt = btn << 28 | (instance->generic.serial & 0xFF) << 16 | instance->generic.cnt;
}
// Beninca -> 4bit serial - simple XOR
// Beninca / Allmatic -> no serial - simple XOR
if(strcmp(instance->manufacture_name, "Beninca") == 0) {
decrypt = btn << 28 | (instance->generic.serial & 0xF) << 16 | instance->generic.cnt;
decrypt = btn << 28 | (0x000) << 16 | instance->generic.cnt;
}
if(strcmp(instance->manufacture_name, "Unknown") == 0) {
@ -812,6 +812,13 @@ static inline bool subghz_protocol_keeloq_check_decrypt(
if((decrypt >> 28 == btn) && (((((uint16_t)(decrypt >> 16)) & 0xFF) == end_serial) ||
((((uint16_t)(decrypt >> 16)) & 0xFF) == 0))) {
instance->cnt = decrypt & 0x0000FFFF;
FURI_LOG_I(
"DED",
"btn: %d, decrypt: %lx, end_serial: %lx, serial: %lx",
btn,
decrypt,
end_serial,
instance->serial);
return true;
}
return false;