1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 12:42:30 +04:00

add manually

This commit is contained in:
MX
2025-02-24 11:12:45 +03:00
parent 326eff734d
commit 6579b4195e
2 changed files with 405 additions and 449 deletions

View File

@@ -122,6 +122,7 @@ typedef enum {
SetTypeBETT_433, SetTypeBETT_433,
SetTypeGangQi_433, SetTypeGangQi_433,
SetTypeHollarm_433, SetTypeHollarm_433,
SetTypeReversRB2_433,
SetTypeMarantec24_868, SetTypeMarantec24_868,
SetTypeLinear_300_00, SetTypeLinear_300_00,
// SetTypeNeroSketch, //Deleted in OFW // SetTypeNeroSketch, //Deleted in OFW

View File

@@ -67,6 +67,7 @@ static const char* submenu_names[SetTypeMAX] = {
[SetTypePricenton433] = "Princeton 433MHz", [SetTypePricenton433] = "Princeton 433MHz",
[SetTypeGangQi_433] = "GangQi 433MHz", [SetTypeGangQi_433] = "GangQi 433MHz",
[SetTypeHollarm_433] = "Hollarm 433MHz", [SetTypeHollarm_433] = "Hollarm 433MHz",
[SetTypeReversRB2_433] = "Revers RB2 433MHz",
[SetTypeMarantec24_868] = "Marantec24 868MHz", [SetTypeMarantec24_868] = "Marantec24 868MHz",
[SetTypeBETT_433] = "BETT 433MHz", [SetTypeBETT_433] = "BETT 433MHz",
[SetTypeLinear_300_00] = "Linear 300MHz", [SetTypeLinear_300_00] = "Linear 300MHz",
@@ -192,114 +193,104 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
GenInfo gen_info = {0}; GenInfo gen_info = {0};
switch(event.event) { switch(event.event) {
case SetTypePricenton433: case SetTypePricenton433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_PRINCETON_NAME,
.data.name = SUBGHZ_PROTOCOL_PRINCETON_NAME, .data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8
.data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8 .data.bits = 24,
.data.bits = 24, .data.te = 400};
.data.te = 400};
break; break;
case SetTypePricenton315: case SetTypePricenton315:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 315000000,
.freq = 315000000, .data.name = SUBGHZ_PROTOCOL_PRINCETON_NAME,
.data.name = SUBGHZ_PROTOCOL_PRINCETON_NAME, .data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8
.data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8 .data.bits = 24,
.data.bits = 24, .data.te = 400};
.data.te = 400};
break; break;
case SetTypeNiceFlo12bit: case SetTypeNiceFlo12bit:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_NICE_FLO_NAME,
.data.name = SUBGHZ_PROTOCOL_NICE_FLO_NAME, .data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4
.data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4 .data.bits = 12,
.data.bits = 12, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeNiceFlo24bit: case SetTypeNiceFlo24bit:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_NICE_FLO_NAME,
.data.name = SUBGHZ_PROTOCOL_NICE_FLO_NAME, .data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8
.data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8 .data.bits = 24,
.data.bits = 24, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeCAME12bit: case SetTypeCAME12bit:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_CAME_NAME,
.data.name = SUBGHZ_PROTOCOL_CAME_NAME, .data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4
.data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4 .data.bits = 12,
.data.bits = 12, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeCAME24bit: case SetTypeCAME24bit:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_CAME_NAME,
.data.name = SUBGHZ_PROTOCOL_CAME_NAME, .data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8
.data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8 .data.bits = 24,
.data.bits = 24, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeCAME12bit868: case SetTypeCAME12bit868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .data.name = SUBGHZ_PROTOCOL_CAME_NAME,
.data.name = SUBGHZ_PROTOCOL_CAME_NAME, .data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4
.data.key = (key & 0x00000FF0) | 0x1, // btn 0x1, 0x2, 0x4 .data.bits = 12,
.data.bits = 12, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeCAME24bit868: case SetTypeCAME24bit868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .data.name = SUBGHZ_PROTOCOL_CAME_NAME,
.data.name = SUBGHZ_PROTOCOL_CAME_NAME, .data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8
.data.key = (key & 0x00FFFFF0) | 0x4, // btn 0x1, 0x2, 0x4, 0x8 .data.bits = 24,
.data.bits = 24, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeLinear_300_00: case SetTypeLinear_300_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 300000000,
.freq = 300000000, .data.name = SUBGHZ_PROTOCOL_LINEAR_NAME,
.data.name = SUBGHZ_PROTOCOL_LINEAR_NAME, .data.key = (key & 0x3FF),
.data.key = (key & 0x3FF), .data.bits = 10,
.data.bits = 10, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeBETT_433: case SetTypeBETT_433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_BETT_NAME,
.data.name = SUBGHZ_PROTOCOL_BETT_NAME, .data.key = (key & 0x0000FFF0),
.data.key = (key & 0x0000FFF0), .data.bits = 18,
.data.bits = 18, .data.te = 0};
.data.te = 0};
break; break;
case SetTypeCAMETwee: case SetTypeCAMETwee:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenData,
.type = GenData, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .data.name = SUBGHZ_PROTOCOL_CAME_TWEE_NAME,
.data.name = SUBGHZ_PROTOCOL_CAME_TWEE_NAME, .data.key = 0x003FFF7200000000 |
.data.key = 0x003FFF7200000000 | ((key & 0x0FFFFFF0) ^ 0xE0E0E0EE), // ???? ((key & 0x0FFFFFF0) ^ 0xE0E0E0EE), // ????
.data.bits = 54, .data.bits = 54,
.data.te = 0}; .data.te = 0};
break; break;
case SetTypeGateTX: case SetTypeGateTX:
gen_info = (GenInfo){ gen_info = (GenInfo){
@@ -337,6 +328,16 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.data.bits = 42, .data.bits = 42,
.data.te = 0}; .data.te = 0};
break; break;
case SetTypeReversRB2_433:
gen_info = (GenInfo){.type = GenData,
.mod = "AM650",
.freq = 433920000,
.data.name = SUBGHZ_PROTOCOL_REVERSRB2_NAME, // 64bits no buttons
.data.key = (key & 0x00000FFFFFFFF000) | 0xFFFFF00000000000 |
0x0000000000000A00,
.data.bits = 64,
.data.te = 0};
break;
case SetTypeMarantec24_868: case SetTypeMarantec24_868:
gen_info = (GenInfo){ gen_info = (GenInfo){
.type = GenData, .type = GenData,
@@ -348,421 +349,379 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
.data.te = 0}; .data.te = 0};
break; break;
case SetTypeFaacSLH_433: case SetTypeFaacSLH_433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenFaacSLH,
.type = GenFaacSLH, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .faac_slh.serial = ((key & 0x00FFFFF0) | 0xA0000006) >> 4,
.faac_slh.serial = ((key & 0x00FFFFF0) | 0xA0000006) >> 4, .faac_slh.btn = 0x06,
.faac_slh.btn = 0x06, .faac_slh.cnt = 0x02,
.faac_slh.cnt = 0x02, .faac_slh.seed = key,
.faac_slh.seed = key, .faac_slh.manuf = "FAAC_SLH"};
.faac_slh.manuf = "FAAC_SLH"};
break; break;
case SetTypeFaacSLH_868: case SetTypeFaacSLH_868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenFaacSLH,
.type = GenFaacSLH, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .faac_slh.serial = ((key & 0x00FFFFF0) | 0xA0000006) >> 4,
.faac_slh.serial = ((key & 0x00FFFFF0) | 0xA0000006) >> 4, .faac_slh.btn = 0x06,
.faac_slh.btn = 0x06, .faac_slh.cnt = 0x02,
.faac_slh.cnt = 0x02, .faac_slh.seed = (key & 0x0FFFFFFF),
.faac_slh.seed = (key & 0x0FFFFFFF), .faac_slh.manuf = "FAAC_SLH"};
.faac_slh.manuf = "FAAC_SLH"};
break; break;
case SetTypeBeninca433: case SetTypeBeninca433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x000FFF00) | 0x00800080,
.keeloq.serial = (key & 0x000FFF00) | 0x00800080, .keeloq.btn = 0x01,
.keeloq.btn = 0x01, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "Beninca"};
.keeloq.manuf = "Beninca"};
break; break;
case SetTypeBeninca868: case SetTypeBeninca868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .keeloq.serial = (key & 0x000FFF00) | 0x00800080,
.keeloq.serial = (key & 0x000FFF00) | 0x00800080, .keeloq.btn = 0x01,
.keeloq.btn = 0x01, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "Beninca"};
.keeloq.manuf = "Beninca"};
break; break;
case SetTypeAllmatic433: case SetTypeAllmatic433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x00FFFF00) | 0x01000011,
.keeloq.serial = (key & 0x00FFFF00) | 0x01000011, .keeloq.btn = 0x0C,
.keeloq.btn = 0x0C, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "Beninca"};
.keeloq.manuf = "Beninca"};
break; break;
case SetTypeAllmatic868: case SetTypeAllmatic868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .keeloq.serial = (key & 0x00FFFF00) | 0x01000011,
.keeloq.serial = (key & 0x00FFFF00) | 0x01000011, .keeloq.btn = 0x0C,
.keeloq.btn = 0x0C, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "Beninca"};
.keeloq.manuf = "Beninca"};
break; break;
case SetTypeCenturion433: case SetTypeCenturion433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0000FFFF),
.keeloq.serial = (key & 0x0000FFFF), .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Centurion"};
.keeloq.manuf = "Centurion"};
break; break;
case SetTypeMonarch433: case SetTypeMonarch433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0000FFFF),
.keeloq.serial = (key & 0x0000FFFF), .keeloq.btn = 0x0A,
.keeloq.btn = 0x0A, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Monarch"};
.keeloq.manuf = "Monarch"};
break; break;
case SetTypeJollyMotors433: case SetTypeJollyMotors433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x000FFFFF),
.keeloq.serial = (key & 0x000FFFFF), .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Jolly_Motors"};
.keeloq.manuf = "Jolly_Motors"};
break; break;
case SetTypeElmesElectronic: case SetTypeElmesElectronic:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x00FFFFFF) | 0x02000000,
.keeloq.serial = (key & 0x00FFFFFF) | 0x02000000, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Elmes_Poland"};
.keeloq.manuf = "Elmes_Poland"};
break; break;
case SetTypeANMotorsAT4: case SetTypeANMotorsAT4:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x000FFFFF) | 0x04700000,
.keeloq.serial = (key & 0x000FFFFF) | 0x04700000, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x21,
.keeloq.cnt = 0x21, .keeloq.manuf = "AN-Motors"};
.keeloq.manuf = "AN-Motors"};
break; break;
case SetTypeAprimatic: case SetTypeAprimatic:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x000FFFFF) | 0x00600000,
.keeloq.serial = (key & 0x000FFFFF) | 0x00600000, .keeloq.btn = 0x08,
.keeloq.btn = 0x08, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Aprimatic"};
.keeloq.manuf = "Aprimatic"};
break; break;
case SetTypeGibidi433: case SetTypeGibidi433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Gibidi"};
.keeloq.manuf = "Gibidi"};
break; break;
case SetTypeGSN: case SetTypeGSN:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x0FFFFFFF,
.keeloq.serial = key & 0x0FFFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "GSN"};
.keeloq.manuf = "GSN"};
break; break;
case SetTypeIronLogic: case SetTypeIronLogic:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFF0,
.keeloq.serial = key & 0x00FFFFF0, .keeloq.btn = 0x04,
.keeloq.btn = 0x04, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "IronLogic"};
.keeloq.manuf = "IronLogic"};
break; break;
case SetTypeStilmatic: case SetTypeStilmatic:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x0FFFFFFF,
.keeloq.serial = key & 0x0FFFFFFF, .keeloq.btn = 0x01,
.keeloq.btn = 0x01, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Stilmatic"};
.keeloq.manuf = "Stilmatic"};
break; break;
case SetTypeSommer_FM_434: case SetTypeSommer_FM_434:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "FM476",
.mod = "FM476", .freq = 434420000,
.freq = 434420000, .keeloq.serial = (key & 0x0000FFFF) | 0x01700000,
.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)"};
break; break;
case SetTypeSommer_FM_868: case SetTypeSommer_FM_868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "FM476",
.mod = "FM476", .freq = 868800000,
.freq = 868800000, .keeloq.serial = (key & 0x0000FFFF) | 0x01700000,
.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)"};
break; break;
case SetTypeSommer_FM238_434: case SetTypeSommer_FM238_434:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "FM238",
.mod = "FM238", .freq = 434420000,
.freq = 434420000, .keeloq.serial = key & 0x0000FFFF,
.keeloq.serial = key & 0x0000FFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Sommer(fsk476)"};
.keeloq.manuf = "Sommer(fsk476)"};
break; break;
case SetTypeSommer_FM238_868: case SetTypeSommer_FM238_868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "FM238",
.mod = "FM238", .freq = 868800000,
.freq = 868800000, .keeloq.serial = key & 0x0000FFFF,
.keeloq.serial = key & 0x0000FFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Sommer(fsk476)"};
.keeloq.manuf = "Sommer(fsk476)"};
break; break;
case SetTypeDTMNeo433: case SetTypeDTMNeo433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x000FFFFF,
.keeloq.serial = key & 0x000FFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x05,
.keeloq.cnt = 0x05, .keeloq.manuf = "DTM_Neo"};
.keeloq.manuf = "DTM_Neo"};
break; break;
case SetTypeCAMESpace: case SetTypeCAMESpace:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x04,
.keeloq.btn = 0x04, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Came_Space"};
.keeloq.manuf = "Came_Space"};
break; break;
case SetTypeCameAtomo433: case SetTypeCameAtomo433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenCameAtomo,
.type = GenCameAtomo, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0FFFFFFF) | 0x10000000,
.keeloq.serial = (key & 0x0FFFFFFF) | 0x10000000, .keeloq.cnt = 0x03};
.keeloq.cnt = 0x03};
break; break;
case SetTypeCameAtomo868: case SetTypeCameAtomo868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenCameAtomo,
.type = GenCameAtomo, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .keeloq.serial = (key & 0x0FFFFFFF) | 0x10000000,
.keeloq.serial = (key & 0x0FFFFFFF) | 0x10000000, .keeloq.cnt = 0x03};
.keeloq.cnt = 0x03};
break; break;
case SetTypeBFTMitto: case SetTypeBFTMitto:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloqBFT,
.type = GenKeeloqBFT, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq_bft.serial = key & 0x000FFFFF,
.keeloq_bft.serial = key & 0x000FFFFF, .keeloq_bft.btn = 0x02,
.keeloq_bft.btn = 0x02, .keeloq_bft.cnt = 0x02,
.keeloq_bft.cnt = 0x02, .keeloq_bft.seed = key & 0x000FFFFF,
.keeloq_bft.seed = key & 0x000FFFFF, .keeloq_bft.manuf = "BFT"};
.keeloq_bft.manuf = "BFT"};
break; break;
case SetTypeAlutechAT4N: case SetTypeAlutechAT4N:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenAlutechAt4n,
.type = GenAlutechAt4n, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .alutech_at_4n.serial = (key & 0x000FFFFF) | 0x00100000,
.alutech_at_4n.serial = (key & 0x000FFFFF) | 0x00100000, .alutech_at_4n.btn = 0x44,
.alutech_at_4n.btn = 0x44, .alutech_at_4n.cnt = 0x03};
.alutech_at_4n.cnt = 0x03};
break; break;
case SetTypeSomfyTelis: case SetTypeSomfyTelis:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenSomfyTelis,
.type = GenSomfyTelis, .mod = "AM650",
.mod = "AM650", .freq = 433420000,
.freq = 433420000, .somfy_telis.serial = key & 0x00FFFFFF,
.somfy_telis.serial = key & 0x00FFFFFF, .somfy_telis.btn = 0x02,
.somfy_telis.btn = 0x02, .somfy_telis.cnt = 0x03};
.somfy_telis.cnt = 0x03};
break; break;
case SetTypeDoorHan_433_92: case SetTypeDoorHan_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x0FFFFFFF,
.keeloq.serial = key & 0x0FFFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "DoorHan"};
.keeloq.manuf = "DoorHan"};
break; break;
case SetTypeDoorHan_315_00: case SetTypeDoorHan_315_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 315000000,
.freq = 315000000, .keeloq.serial = key & 0x0FFFFFFF,
.keeloq.serial = key & 0x0FFFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "DoorHan"};
.keeloq.manuf = "DoorHan"};
break; break;
case SetTypeNiceFlorS_433_92: case SetTypeNiceFlorS_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenNiceFlorS,
.type = GenNiceFlorS, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .nice_flor_s.serial = key & 0x0FFFFFFF,
.nice_flor_s.serial = key & 0x0FFFFFFF, .nice_flor_s.btn = 0x01,
.nice_flor_s.btn = 0x01, .nice_flor_s.cnt = 0x03,
.nice_flor_s.cnt = 0x03, .nice_flor_s.nice_one = false};
.nice_flor_s.nice_one = false};
break; break;
case SetTypeNiceOne_433_92: case SetTypeNiceOne_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenNiceFlorS,
.type = GenNiceFlorS, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .nice_flor_s.serial = key & 0x0FFFFFFF,
.nice_flor_s.serial = key & 0x0FFFFFFF, .nice_flor_s.btn = 0x01,
.nice_flor_s.btn = 0x01, .nice_flor_s.cnt = 0x03,
.nice_flor_s.cnt = 0x03, .nice_flor_s.nice_one = true};
.nice_flor_s.nice_one = true};
break; break;
case SetTypeNiceSmilo_433_92: case SetTypeNiceSmilo_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "NICE_Smilo"};
.keeloq.manuf = "NICE_Smilo"};
break; break;
case SetTypeNiceMHouse_433_92: case SetTypeNiceMHouse_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x09,
.keeloq.btn = 0x09, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "NICE_MHOUSE"};
.keeloq.manuf = "NICE_MHOUSE"};
break; break;
case SetTypeDeaMio433: case SetTypeDeaMio433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0FFFF000) | 0x00000869,
.keeloq.serial = (key & 0x0FFFF000) | 0x00000869, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Dea_Mio"};
.keeloq.manuf = "Dea_Mio"};
break; break;
case SetTypeGeniusBravo433: case SetTypeGeniusBravo433:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x06,
.keeloq.btn = 0x06, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Genius_Bravo"};
.keeloq.manuf = "Genius_Bravo"};
break; break;
case SetTypeJCM_433_92: case SetTypeJCM_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x00FFFFFF,
.keeloq.serial = key & 0x00FFFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "JCM_Tech"};
.keeloq.manuf = "JCM_Tech"};
break; break;
case SetTypeNovoferm_433_92: case SetTypeNovoferm_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0000FFFF) | 0x018F0000,
.keeloq.serial = (key & 0x0000FFFF) | 0x018F0000, .keeloq.btn = 0x01,
.keeloq.btn = 0x01, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Novoferm"};
.keeloq.manuf = "Novoferm"};
break; break;
case SetTypeHormannEcoStar_433_92: case SetTypeHormannEcoStar_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x000FFFFF) | 0x02200000,
.keeloq.serial = (key & 0x000FFFFF) | 0x02200000, .keeloq.btn = 0x04,
.keeloq.btn = 0x04, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "EcoStar"};
.keeloq.manuf = "EcoStar"};
break; break;
case SetTypeFAACRCXT_433_92: case SetTypeFAACRCXT_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = (key & 0x0000FFFF) | 0x00100000,
.keeloq.serial = (key & 0x0000FFFF) | 0x00100000, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "FAAC_RC,XT"};
.keeloq.manuf = "FAAC_RC,XT"};
break; break;
case SetTypeFAACRCXT_868: case SetTypeFAACRCXT_868:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 868350000,
.freq = 868350000, .keeloq.serial = (key & 0x0000FFFF) | 0x00100000,
.keeloq.serial = (key & 0x0000FFFF) | 0x00100000, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "FAAC_RC,XT"};
.keeloq.manuf = "FAAC_RC,XT"};
break; break;
case SetTypeNormstahl_433_92: case SetTypeNormstahl_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x0000FFFF,
.keeloq.serial = key & 0x0000FFFF, .keeloq.btn = 0x04,
.keeloq.btn = 0x04, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "Normstahl"};
.keeloq.manuf = "Normstahl"};
break; break;
case SetTypeHCS101_433_92: case SetTypeHCS101_433_92:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenKeeloq,
.type = GenKeeloq, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .keeloq.serial = key & 0x000FFFFF,
.keeloq.serial = key & 0x000FFFFF, .keeloq.btn = 0x02,
.keeloq.btn = 0x02, .keeloq.cnt = 0x03,
.keeloq.cnt = 0x03, .keeloq.manuf = "HCS101"};
.keeloq.manuf = "HCS101"};
break; break;
case SetTypeSecPlus_v1_315_00: case SetTypeSecPlus_v1_315_00:
gen_info = (GenInfo){.type = GenSecPlus1, .mod = "AM650", .freq = 315000000}; gen_info = (GenInfo){.type = GenSecPlus1, .mod = "AM650", .freq = 315000000};
@@ -774,40 +733,36 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
gen_info = (GenInfo){.type = GenSecPlus1, .mod = "AM650", .freq = 433920000}; gen_info = (GenInfo){.type = GenSecPlus1, .mod = "AM650", .freq = 433920000};
break; break;
case SetTypeSecPlus_v2_310_00: case SetTypeSecPlus_v2_310_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenSecPlus2,
.type = GenSecPlus2, .mod = "AM650",
.mod = "AM650", .freq = 310000000,
.freq = 310000000, .sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing
.sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing .sec_plus_2.btn = 0x68,
.sec_plus_2.btn = 0x68, .sec_plus_2.cnt = 0xE500000};
.sec_plus_2.cnt = 0xE500000};
break; break;
case SetTypeSecPlus_v2_315_00: case SetTypeSecPlus_v2_315_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenSecPlus2,
.type = GenSecPlus2, .mod = "AM650",
.mod = "AM650", .freq = 315000000,
.freq = 315000000, .sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing
.sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing .sec_plus_2.btn = 0x68,
.sec_plus_2.btn = 0x68, .sec_plus_2.cnt = 0xE500000};
.sec_plus_2.cnt = 0xE500000};
break; break;
case SetTypeSecPlus_v2_390_00: case SetTypeSecPlus_v2_390_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenSecPlus2,
.type = GenSecPlus2, .mod = "AM650",
.mod = "AM650", .freq = 390000000,
.freq = 390000000, .sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing
.sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing .sec_plus_2.btn = 0x68,
.sec_plus_2.btn = 0x68, .sec_plus_2.cnt = 0xE500000};
.sec_plus_2.cnt = 0xE500000};
break; break;
case SetTypeSecPlus_v2_433_00: case SetTypeSecPlus_v2_433_00:
gen_info = (GenInfo){ gen_info = (GenInfo){.type = GenSecPlus2,
.type = GenSecPlus2, .mod = "AM650",
.mod = "AM650", .freq = 433920000,
.freq = 433920000, .sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing
.sec_plus_2.serial = (key & 0x7FFFF3FC), // 850LM pairing .sec_plus_2.btn = 0x68,
.sec_plus_2.btn = 0x68, .sec_plus_2.cnt = 0xE500000};
.sec_plus_2.cnt = 0xE500000};
break; break;
default: default:
furi_crash("Not implemented"); furi_crash("Not implemented");