Merge remote-tracking branch 'ul/dev' into mntm-dev

This commit is contained in:
Willy-JL
2024-07-08 21:20:01 +01:00
9 changed files with 132 additions and 76 deletions

View File

@@ -6,6 +6,8 @@
### Added: ### Added:
- Sub-GHz: - Sub-GHz:
- New Legrand doorbell protocol (by @user890104) - New Legrand doorbell protocol (by @user890104)
- UL: Novoferm remotes full support (by @xMasterX)
- UL: Add manually Hormann EcoStar, also Sommer FM238 option when default won't work (by @xMasterX)
- OFW: Princeton protocol add custom guard time (by @Skorpionm & @xMasterX) - OFW: Princeton protocol add custom guard time (by @Skorpionm & @xMasterX)
- NFC: - NFC:
- OFW: Mifare Plus detection support (by @Astrrra) - OFW: Mifare Plus detection support (by @Astrrra)
@@ -82,8 +84,10 @@
### Fixed: ### Fixed:
- OFW: USB: IRQ, CDC and EP fixes, no more "Operation timeout (generic)" updating from OFW (by @skotopes) - OFW: USB: IRQ, CDC and EP fixes, no more "Operation timeout (generic)" updating from OFW (by @skotopes)
- Sub-GHz: - Sub-GHz:
- UL: Fix add manually princeton (by @xMasterX) - UL: Fix Add Manually for Princeton, Normstahl, Sommer, MHouse, Aprimatic (by @xMasterX)
- UL: Fix decode raw signals showing up in read menu (by @xMasterX) - UL: Improve custom buttons for MHouse, Novoferm, Nice Smilo (by @xMasterX)
- UL: Fix various Decode RAW bugs (by @xMasterX)
- UL: Fix Hormann HSM 44bit static button code decoding (by @xMasterX)
- UL: Sync signal delete scene with OFW (by @xMasterX) - UL: Sync signal delete scene with OFW (by @xMasterX)
- UL: Fix incorrect rx key state when opening Read menu (by @xMasterX) - UL: Fix incorrect rx key state when opening Read menu (by @xMasterX)
- OFW: Fixed transition to Saved menu after Delete RAW (by @Skorpionm) - OFW: Fixed transition to Saved menu after Delete RAW (by @Skorpionm)
@@ -113,4 +117,5 @@
- API: - API:
- Removed unused `Rgb565Color` and `rgb565cmp()` since VGM colors use normal RGB colors now - Removed unused `Rgb565Color` and `rgb565cmp()` since VGM colors use normal RGB colors now
- Removed unused `furi_hal_usb_get_config_context()` function since BadKB doesn't use it anymore - Removed unused `furi_hal_usb_get_config_context()` function since BadKB doesn't use it anymore
- UL: Sub-GHz: Removed broken HND_1 modulation
- OFW: CLI: Removed `ps` command, replaced by `top` - OFW: CLI: Removed `ps` command, replaced by `top`

View File

@@ -91,6 +91,8 @@ typedef enum {
SetTypeCenturion433, SetTypeCenturion433,
SetTypeSommer_FM_434, SetTypeSommer_FM_434,
SetTypeSommer_FM_868, SetTypeSommer_FM_868,
SetTypeSommer_FM238_434,
SetTypeSommer_FM238_868,
SetTypeStilmatic, SetTypeStilmatic,
SetTypeIronLogic, SetTypeIronLogic,
SetTypeDeaMio433, SetTypeDeaMio433,
@@ -101,6 +103,8 @@ typedef enum {
SetTypeElmesElectronic, SetTypeElmesElectronic,
SetTypeNormstahl_433_92, SetTypeNormstahl_433_92,
SetTypeJCM_433_92, SetTypeJCM_433_92,
SetTypeNovoferm_433_92,
SetTypeHormannEcoStar_433_92,
SetTypeFAACRCXT_433_92, SetTypeFAACRCXT_433_92,
SetTypeFAACRCXT_868, SetTypeFAACRCXT_868,
SetTypeGeniusBravo433, SetTypeGeniusBravo433,

View File

@@ -1,59 +1,60 @@
Filetype: Flipper SubGhz Keystore File Filetype: Flipper SubGhz Keystore File
Version: 0 Version: 0
Encryption: 1 Encryption: 1
IV: AD 0B A4 A1 51 C0 C0 41 36 78 26 82 17 24 9D 62 IV: 41 72 65 20 79 6F 75 20 61 20 46 75 72 72 79 3F
0D18FF475E57A67CC5C0B430664E8EF6E07CB6AF72454995F17DE84E2E876D87 8B441920A9F30EA40001F37E0F3C0D72161467678511928D219A7DBC42F8D9B7
C9BC55E1E3A9B312E341D7E2663C66C2479D5C51AE2EB83BAE47D8C6C79DB8A0 1ADE5B8541491C46674EECC05A1C4297CB28259954FD7C6DA0EAADE8D57773FC
776E01A7B4FCB929FA59CFE1F16D2D600F6FD9FD8BE1E9E41667144E61E023E4 0497A50135FA4468B49694974DAADEF2A9CC2B7BAFC8465E0AA58E940C085850
C354F854F14AAC08C6A51606582CD73EECEED54779927DC1E04A0D72C4E6A58E 4BC77520AE09B4F6A5A5365B6B9C16CA53566E096159A98EF0AB6E7FE5C2DD1C
09BA4DC551CDB0141F4A053133DBF9B7B99CBAA402C7B6B2AC8ADB516CA2FCB29FF9744DD95FB009BED6A09AE3303317 B674AC1674312E74471E44917F6FC049DAB48BBB65B84F14A4CD64223A49E93DC0C507B8E17BFFDCBB67B55F1B4091C6
675777F65042358100A9A2BE142C42E10CC5CF98CA6BFF82284FFD9BF7E7FB11 FBBE4E4F703A9C1F17268F73EC00A3F76517A4470783363102D2B7647F0F2E7F
4739972DCC08EFF0E8547694A67E116F3EC8638F286E333E7D89F2D61218F65D 21BE8A51F32CE62DA6B5E207E627D224639877860C71933C4F54AC7BD742B265
FE8D5A0A9ED36545004CEE70D3C1FE477F34212364CF7C9EBA0FDD4F6B8F1D3E 74E3EA89CC7AA99855C1BC87734506413B882CF36D68C3329022415EB29D1360
453D5C6FE0EA7FD779B54696E66DE6BD6AEF3B1EE347142A3DB7505609077219 567937E84052F230610B3A2FC26CA1BE32B9617F7554EF5E6E7CB35A76718ADA
A52339EE40D046E7DF6C130CEC7F9F686753A73A5F72EF344E01B00C3A3CF5F2 4C34F7FE5D6EAE40B0EB6BAB7DE4F0D059C32E4F312F9C62F2C50C54C5486276
94029CE386CC0403984F7C9D80B40FF12BE6E50412891FD45B347742340D1E6E679102DEC6F7D36C36863701A2BBDA7B 74C8656F8EA033C60F3183FA0923C9AF1EB6689FAACC39E6548ECE16E3312D39DCF45AC6EC70A70421FBFFA43D91E19E
793633A3D97D704779E2E841A5F616ED0BB0BD50740C0B196D72C6C6453124183CA93ADCAC1A5042EBD579AC238B9DBC 275903678A81B6E62CD2BB4C50E93CB3E4B092E2894EBAA04AC4E0244E4D5BA9FCDFC6BCF845EA41DF0691BF2AEDF300
B1C6EBB7320CAE97E28A244228B288BEEA44C9FD262E2C448219DAC6E194CB14 BFE52324D666ADEB3D33D94331376B33A3D31566331DE0F372548FE7255F8085
A6C374B3FB7E8BB6F3052ED9DB67E5BCFA6CCC42F5A0D7F20BEDB7C0B58592A5 8E1B2E82B4C78360B3174741FB8031EE0DFEB479859BE8708F8AF40C5228BFDF
DF4FCBDCA3414B7551797A856048625186B2EC7B836EB35B4B080CEE4A72C39F 6014A4A9D9703DAC11DA6B93FB7A0E0E0856E9379148F3CC125D77BA4C3D4931
4127F58BDEB18D79EA8317B1858F7575CF4B648E3C53338975B4A093FA9730C0 B8C22EA72B35E60A7A3DD02956D2375EE7C07E243F17F413CA4AC3A1445AA250
294659EBD39D7CC01DC4E0E3B0B90A3555704E736D3BE4485BAAACBC58A84652CF3A7DA3C271E3198C72561332F2A141 B545037B8798370A8638B7ADCBE9EEF748F73C89EB5E04B460057BAFA52B1D7DF29B009FBB3FA07CE87247D185BE4926
9E2CC77756BE7AB3D500C0B4A91271C0A4DED5BCB78484217EA922B7878AA8F5 09AEA3223E4FFB06333425BA977403E7C2F9B5F121FDA8313E73FE98D0041425
BF13D9949C783CF6B2F0E489A6912E56DDD9183D651D7F36FD0342981596A85C E7A97F65883E4D3CDA02483738219E219EED0681C2BB140EF3E5D02230433D42
8441C62006E1334FC31F53DAFF5281260C463AF3E92B1E797CB67882C49566846825606804C14C49FFD440F4E05CE692 4AE67B9EA288183047A9498F58978E7C41BB8905533F42FF5B94E41AFEFF0EB4907A8C472B9E32F6D659CFA6C391179B
BE7E62E9CFA1C703CCB971F2B0C6C0F339C78A951CA8DB287B40C3BA76EA7179E8B62C29EAC8293FD218CF981BB84BEF 1F9752FBA7A7A00D518D91BA8A8C1ADEF2EDF6282A5AFB2E4332B4351CF67F18317D2BCFF2DA6B5216EA138A4CCBDB81
DA53C52101FAC8FD8F9545768CF1DB59F3B31C9249A2FC64B66DB259C721ABE1 EDC508FE0D0E894B529C5E4AB82A7188072592BE9D4D9A3D2485822A9F4C5A67
C9842AD0A8A8E94FCE94F46BDE89DAA8D11C41F9C83A7F6394D595028829AB92 780582645A71D3A9841B0E8F5E84A2285F783872102AA1A98A956B98AEA19421
904A94542BCD85F72D470640A220FD28EBC337C0673C189C96BFB8CE373B4F84 37E2858B90868BCAA6B3198C3B205DC1413A9D378AF1671BEA3B8F47FCE1C5CE
EEEE187B03FE77B955F22214707017DB8A60B2E3979D5C2F6BED61D0623D4D50 229719C5AFE1E567B8BD5F07EFF89C30B11CB79C9C841FFE7B53404CA5422EDB
CEF91BE6EBD8F331E2422B6B948053E8DA143F3DD907C922E0328D49B0ADA8A6 CDA16E59B8C24DBE95ABF978CAD4D04A4F124DED1965124F92AACA4C5AEB8721
A6F0F8A4F03B45062CEA86B291E80EE15906C0B226ABDB77E222EB95B026952D 5C61D5C655DD9EB78C4F8E965101F98D7899155D2379EF6553FA9DEA0302A232
62280870E48A2E8B8A18AD5DFF0089E927BEACE1F81A8BB1A8A2BE8EB0E92BFD 7D3DCFDE942398244624C7ABFE08363404BA688EDA39D45A05BB6FB982BB9042
C9A3DE8165D47D1D41715F00192313755226C1B0A3D04BCD7A121B1CB4999FBD ECCB10BCB2A8CF2093C61634E9AFEE9B69EB4A7C8B7139061730B5FA869F65BF
3CAEEB62FCF601F34D3320E3EACE9EFC5D627BF69FEE965F8B84A258A765B6FE 7AE6C19ED3C97F45D1167FC9EF52CCE321EA002D31D8AEA94106A2F711626551
8D83CC36514CE5CC46B181AE28089BE5BC99CE3096C569751B4E07A7D956AFA3 793A984F6EBD35253C319FAB671348A4C6843AEA7CCCD5A52ACA9BBE96484B5E
0F81DDB18F60E238C7FF751E70431AA5328EFDBBDFF03D5F360A524AA968CEE9 BB3ADBB5FD60F0FB01E5A8B1610D30A24975DC67ED1B70472E509218E213393E
1F1E498A279E9BA15CB6BB836E90FEE522F2BE16572A4D057DF9C2B104487458 BB971C6304723B9928F50FA2E5C30A48ED5527556EE1BA5A7EA75AB7A4ED4137
68C60FF95056BE4D814CE9B8A4175625DB3E365712C2D3E42CEEBA2E0977CDB9 489579673025F7A351072EB8D5C7FC1DBF651AA6233FB01D99DAC4BDC0A60F2F
D95FB21943FCAD5A21F157E629314986D92F568FD3067B65911135E6335FB7E8 ACA000B78B091A9B2621A9FA1A50FA6A3B63DDDF7D966224837028F93D570C08
17908EF142C4B6740CBE7DCA43DA3C23C7912739299786473A994E5752E7E9459B23653EE0D7775FCECB7B7608CB0495 C1EB4EA179EC0437D5B0E72C47AAD06803F7619C53D3D2FEF38DD3C068118766B73202B75C534C6249312245218C9285
6D17B6BA17DBFFAA4E90953CE6A73AB967076B8FBC14A9361D93A01C0850CC38 639C6F53600C0F01410361164FEF715DB8E08C68D68B8AE76CF2D09A0C6C4CA1
8723740BCC0A5CCEE52B6EF73DD441672FB6728965CC588044C78D495AB0675F F5F2D77DD3AF60489312055EBA3B511F7D9E312F02465639FFF3E71A862BB9EB
CA548FA44A444C8F45490A11DBC8FB24E6DB38F910EC60520A3890C8B45664FE 3EC1F7B2C43646249C4D14B4B1B85B3416B8D3B0B8DA9E87BD6199DC27BD45C2
591356440344AAFEC21FAA0C85B6A8F354D45074932E37E0972F851E08937469 AA24DB7345317FE980C917909F364EAA13591A664E0893271E9DBCC250782EA5
DE3A54CAAC8014625EE502F547A93754AFAD0A7EB6028599D03CCB0473BC8D5C 32C18DBA479AD57BFF9FE7B7BD1022D4969D8E2EC99BC0799148809796E227D5
B2C2F6F971034E1591AD374793D6D17A595D6544DF5A9585780C6B2E3505BCFF 494B44697DACDFDBBFEB0FDBEF6E9B5D7291B6CB43B4C93088F3ED8632AF23B5
54447BE6C626D1CA37FD799B76B35ED266D12757B5DA1AB9277F671BBF7F07B461D0CE26593F1372354979E836972F85 B79CC1A90C7AC36DA2F318BF69E6BB1FAC32C178453663069C0CF2C4AE77B211
45FBD88AA7C26B967BC3638F6083A6B83AA82D5B974B37DF1C3F52839DDA020C A059D006EF98446BDF9E1F5E09641A641CA88348E79499D79BCFDE6646C716A0BE2253421858D327E796EB5237B6E2C4
33B9890FBE46FDB7AEE404B71C893DC20059F96224CF48F284A66D3A8D91918E 9E90AE6138A3676E3E5058FF277331032CD6BBF114768104A33D684B0825C5A5
CCEA5BC148BC84DB4825320A2B8D39A30BAB4641FFEE33BD4B8700339F15892D 7477B55332666FC6B1279F5FDF84DCA01176498984809B74E17AB726F888000F
4BC4E0D1263E9B02DA401C884923778D1A6FACACFFE7F660381ECD64CCA5CCD2 6A0300B90BC11127A031E62537468A1CA7A0775BE85ED12069074E26181FBA50
0284EA911FB1B37F623F92B1662E10D79AEBD0009C107A9C554D417F7553B28E 4DAF986F9A850EB18F0FE3B88B9796D80EEC3984C92F4F8B32D513A176CCAA9A
FE48F26C44FA4C3EB3B2F3497FE99AC30A0A7BF9FF261740E177D7A2A5BD7880 EB84517DCAA7D10A6E7C4D0A7995AE278AAF3FDE52DAE30C7FD3FB853C799369
1EA96FEBB62543A8731D19BBDD1C7FE323CADBAB7242E5A8F4B1D706964B4C32 0941FB8965604ABC852B94F29396783783632E4C80AEE665E42C233B6E7AA7D0
4AB7EEF02FD59EA5D16837A50282A6254B93A34F31FE9335DA9FABEF76EA714591029C64967506B99860358E5CBF4EDA 71FEF69734589BE3C0893A1584FC1C0A75A5D4BF88CFF323C8C68E0EEC06993C
A0F25C5387FE9B871E246F33FE64396A5DC0A9BC9AD9DF9E219F3482ADD6497E 790A26B77912EE07BABCDF478D8E492422B73465DC209E5DBC8E31F43AA2DA7448EAB6312AC1DC4FE3F20D7A2EC93968
0130F99FA395F4364491E6718B53E9D6983B68E29A70035B158CA7629C31C33E CE0AA966F33B7AC9E9982D2241524F2FC7613DAAC6C5C768AAAE29A630B414CE
3CDAEDA88534C2E31D1235C99DEC466221C89F63E1F8F59C9CE224573E39E2D4 93FA632D945E18DE6358D4F443CB6F023C640407B7FAD6E8AF6EF15139B044E3
F5ED2863D8B51DA620484CDE23D590F4A208DA6D155E645FCD6BCF5FEB39EE551EAE9C0366F7FFD4CBF1DCA063D154E1 059ABA7A866A865159D4E0B3E30FA1900BAB2BAB82A1D1F9D74CAEC11FA95393
9C5A4CF1D49E0F741577BAB868575739AEBBDC15D7178C87A46EA3B3E7E856EFD815AD5F998778E8FBAA2832F387B967

View File

@@ -256,8 +256,6 @@ bool subghz_scene_decode_raw_on_event(void* context, SceneManagerEvent event) {
subghz_txrx_set_rx_callback(subghz->txrx, NULL, subghz); subghz_txrx_set_rx_callback(subghz->txrx, NULL, subghz);
subghz_rx_key_state_set(subghz, SubGhzRxKeyStateIDLE);
if(subghz_file_encoder_worker_is_running(subghz->decode_raw_file_worker_encoder)) { if(subghz_file_encoder_worker_is_running(subghz->decode_raw_file_worker_encoder)) {
subghz_file_encoder_worker_stop(subghz->decode_raw_file_worker_encoder); subghz_file_encoder_worker_stop(subghz->decode_raw_file_worker_encoder);
} }

View File

@@ -50,6 +50,8 @@ bool subghz_scene_save_success_on_event(void* context, SceneManagerEvent event)
subghz_file_encoder_worker_free(subghz->decode_raw_file_worker_encoder); subghz_file_encoder_worker_free(subghz->decode_raw_file_worker_encoder);
subghz->state_notifications = SubGhzNotificationStateIDLE; subghz->state_notifications = SubGhzNotificationStateIDLE;
subghz_rx_key_state_set(subghz, SubGhzRxKeyStateIDLE);
scene_manager_set_scene_state( scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerNoSet); subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerNoSet);
if(!scene_manager_search_and_switch_to_previous_scene( if(!scene_manager_search_and_switch_to_previous_scene(

View File

@@ -30,6 +30,8 @@ static const char* submenu_names[SetTypeMAX] = {
[SetTypeCenturion433] = "KL: Centurion 433MHz", [SetTypeCenturion433] = "KL: Centurion 433MHz",
[SetTypeSommer_FM_434] = "KL: Sommer 434MHz", [SetTypeSommer_FM_434] = "KL: Sommer 434MHz",
[SetTypeSommer_FM_868] = "KL: Sommer 868MHz", [SetTypeSommer_FM_868] = "KL: Sommer 868MHz",
[SetTypeSommer_FM238_434] = "KL: Sommer fm2 434Mhz",
[SetTypeSommer_FM238_868] = "KL: Sommer fm2 868Mhz",
[SetTypeStilmatic] = "KL: Stilmatic 433MHz", [SetTypeStilmatic] = "KL: Stilmatic 433MHz",
[SetTypeIronLogic] = "KL: IronLogic 433MHz", [SetTypeIronLogic] = "KL: IronLogic 433MHz",
[SetTypeDeaMio433] = "KL: DEA Mio 433MHz", [SetTypeDeaMio433] = "KL: DEA Mio 433MHz",
@@ -40,10 +42,12 @@ static const char* submenu_names[SetTypeMAX] = {
[SetTypeElmesElectronic] = "KL: Elmes (PL) 433MHz", [SetTypeElmesElectronic] = "KL: Elmes (PL) 433MHz",
[SetTypeNormstahl_433_92] = "KL: Normstahl 433MHz", [SetTypeNormstahl_433_92] = "KL: Normstahl 433MHz",
[SetTypeJCM_433_92] = "KL: JCM Tech 433MHz", [SetTypeJCM_433_92] = "KL: JCM Tech 433MHz",
[SetTypeNovoferm_433_92] = "KL: Novoferm 433MHz",
[SetTypeHormannEcoStar_433_92] = "KL: Hor. EcoStar 433MHz",
[SetTypeFAACRCXT_433_92] = "KL: FAAC RC,XT 433MHz", [SetTypeFAACRCXT_433_92] = "KL: FAAC RC,XT 433MHz",
[SetTypeFAACRCXT_868] = "KL: FAAC RC,XT 868MHz", [SetTypeFAACRCXT_868] = "KL: FAAC RC,XT 868MHz",
[SetTypeGeniusBravo433] = "KL: Genius Bravo 433MHz", [SetTypeGeniusBravo433] = "KL: Genius Bravo 433MHz",
[SetTypeNiceMHouse_433_92] = "KL: Nice Mhouse 433MHz", [SetTypeNiceMHouse_433_92] = "KL: Mhouse 433MHz",
[SetTypeNiceSmilo_433_92] = "KL: Nice Smilo 433MHz", [SetTypeNiceSmilo_433_92] = "KL: Nice Smilo 433MHz",
[SetTypeNiceFlorS_433_92] = "Nice FloR-S 433MHz", [SetTypeNiceFlorS_433_92] = "Nice FloR-S 433MHz",
[SetTypeNiceOne_433_92] = "Nice One 433MHz", [SetTypeNiceOne_433_92] = "Nice One 433MHz",
@@ -396,7 +400,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.mod = "AM650", .mod = "AM650",
.freq = 433920000, .freq = 433920000,
.keeloq.serial = (key & 0x000FFFFF) | 0x00600000, .keeloq.serial = (key & 0x000FFFFF) | 0x00600000,
.keeloq.btn = 0x04, .keeloq.btn = 0x08,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "Aprimatic"}; .keeloq.manuf = "Aprimatic"};
break; break;
@@ -445,7 +449,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.type = GenKeeloq, .type = GenKeeloq,
.mod = "FM476", .mod = "FM476",
.freq = 434420000, .freq = 434420000,
.keeloq.serial = (key & 0x0000FFFF) | 0x07150000, .keeloq.serial = (key & 0x0000FFFF) | 0x01700000,
.keeloq.btn = 0x02, .keeloq.btn = 0x02,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "Sommer(fsk476)"}; .keeloq.manuf = "Sommer(fsk476)"};
@@ -455,7 +459,27 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.type = GenKeeloq, .type = GenKeeloq,
.mod = "FM476", .mod = "FM476",
.freq = 868800000, .freq = 868800000,
.keeloq.serial = (key & 0x0000FFFF) | 0x07150000, .keeloq.serial = (key & 0x0000FFFF) | 0x01700000,
.keeloq.btn = 0x02,
.keeloq.cnt = 0x03,
.keeloq.manuf = "Sommer(fsk476)"};
break;
case SetTypeSommer_FM238_434:
gen_info = (GenInfo){
.type = GenKeeloq,
.mod = "FM238",
.freq = 434420000,
.keeloq.serial = key & 0x0000FFFF,
.keeloq.btn = 0x02,
.keeloq.cnt = 0x03,
.keeloq.manuf = "Sommer(fsk476)"};
break;
case SetTypeSommer_FM238_868:
gen_info = (GenInfo){
.type = GenKeeloq,
.mod = "FM238",
.freq = 868800000,
.keeloq.serial = key & 0x0000FFFF,
.keeloq.btn = 0x02, .keeloq.btn = 0x02,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "Sommer(fsk476)"}; .keeloq.manuf = "Sommer(fsk476)"};
@@ -476,7 +500,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.mod = "AM650", .mod = "AM650",
.freq = 433920000, .freq = 433920000,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.btn = 0x02, .keeloq.btn = 0x04,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "Came_Space"}; .keeloq.manuf = "Came_Space"};
break; break;
@@ -581,7 +605,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.mod = "AM650", .mod = "AM650",
.freq = 433920000, .freq = 433920000,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.btn = 0x02, .keeloq.btn = 0x09,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "NICE_MHOUSE"}; .keeloq.manuf = "NICE_MHOUSE"};
break; break;
@@ -615,6 +639,26 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "JCM_Tech"}; .keeloq.manuf = "JCM_Tech"};
break; break;
case SetTypeNovoferm_433_92:
gen_info = (GenInfo){
.type = GenKeeloq,
.mod = "AM650",
.freq = 433920000,
.keeloq.serial = (key & 0x0000FFFF) | 0x018F0000,
.keeloq.btn = 0x01,
.keeloq.cnt = 0x03,
.keeloq.manuf = "Novoferm"};
break;
case SetTypeHormannEcoStar_433_92:
gen_info = (GenInfo){
.type = GenKeeloq,
.mod = "AM650",
.freq = 433920000,
.keeloq.serial = (key & 0x000FFFFF) | 0x02200000,
.keeloq.btn = 0x04,
.keeloq.cnt = 0x03,
.keeloq.manuf = "EcoStar"};
break;
case SetTypeFAACRCXT_433_92: case SetTypeFAACRCXT_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){
.type = GenKeeloq, .type = GenKeeloq,
@@ -640,8 +684,8 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.type = GenKeeloq, .type = GenKeeloq,
.mod = "AM650", .mod = "AM650",
.freq = 433920000, .freq = 433920000,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.serial = key & 0x0000FFFF,
.keeloq.btn = 0x02, .keeloq.btn = 0x04,
.keeloq.cnt = 0x03, .keeloq.cnt = 0x03,
.keeloq.manuf = "Normstahl"}; .keeloq.manuf = "Normstahl"};
break; break;

View File

@@ -73,10 +73,6 @@ static void subghz_load_custom_presets(SubGhzSetting* setting) {
// Pagers // Pagers
{"Pagers", {"Pagers",
"02 0D 07 04 08 32 0B 06 10 64 11 93 12 0C 13 02 14 00 15 15 18 18 19 16 1B 07 1C 00 1D 91 20 FB 21 56 22 10 00 00 C0 00 00 00 00 00 00 00"}, "02 0D 07 04 08 32 0B 06 10 64 11 93 12 0C 13 02 14 00 15 15 18 18 19 16 1B 07 1C 00 1D 91 20 FB 21 56 22 10 00 00 C0 00 00 00 00 00 00 00"},
// # HND - FM preset
{"HND_1",
"02 0D 0B 06 08 32 07 04 14 00 13 02 12 04 11 36 10 69 15 32 18 18 19 16 1D 91 1C 00 1B 07 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00"},
}; };
FlipperFormat* fff_temp = flipper_format_string_alloc(); FlipperFormat* fff_temp = flipper_format_string_alloc();

View File

@@ -287,7 +287,7 @@ void subghz_protocol_decoder_hormann_feed(void* context, bool level, uint32_t du
* @param instance Pointer to a SubGhzBlockGeneric* instance * @param instance Pointer to a SubGhzBlockGeneric* instance
*/ */
static void subghz_protocol_hormann_check_remote_controller(SubGhzBlockGeneric* instance) { static void subghz_protocol_hormann_check_remote_controller(SubGhzBlockGeneric* instance) {
instance->btn = (instance->data >> 4) & 0xF; instance->btn = (instance->data >> 8) & 0xF;
} }
uint32_t subghz_protocol_decoder_hormann_get_hash_data(void* context) { uint32_t subghz_protocol_decoder_hormann_get_hash_data(void* context) {

View File

@@ -427,11 +427,17 @@ static bool
uint8_t klq_last_custom_btn = 0xA; uint8_t klq_last_custom_btn = 0xA;
if((strcmp(instance->manufacture_name, "BFT") == 0) || if((strcmp(instance->manufacture_name, "BFT") == 0) ||
(strcmp(instance->manufacture_name, "Aprimatic") == 0) || (strcmp(instance->manufacture_name, "Aprimatic") == 0) ||
(strcmp(instance->manufacture_name, "Dea_Mio") == 0)) { (strcmp(instance->manufacture_name, "Dea_Mio") == 0) ||
(strcmp(instance->manufacture_name, "NICE_MHOUSE") == 0)) {
klq_last_custom_btn = 0xF; klq_last_custom_btn = 0xF;
} } else if((strcmp(instance->manufacture_name, "FAAC_RC,XT") == 0)) {
if((strcmp(instance->manufacture_name, "FAAC_RC,XT") == 0)) {
klq_last_custom_btn = 0xB; klq_last_custom_btn = 0xB;
} else if((strcmp(instance->manufacture_name, "Novoferm") == 0)) {
klq_last_custom_btn = 0x9;
} else if((strcmp(instance->manufacture_name, "NICE_Smilo") == 0)) {
klq_last_custom_btn = 0xB;
} else if((strcmp(instance->manufacture_name, "EcoStar") == 0)) {
klq_last_custom_btn = 0x6;
} }
btn = subghz_protocol_keeloq_get_btn_code(klq_last_custom_btn); btn = subghz_protocol_keeloq_get_btn_code(klq_last_custom_btn);