소스 검색

SubGhz: add frequencies and add DoorHan 315.00 (#1028)

* SubGhz: add frequencies and add DoorHan 315.00
* SubGhz: fix syntax

Co-authored-by: あく <alleteam@gmail.com>
Skorpionm 3 년 전
부모
커밋
b86a400a82
3개의 변경된 파일63개의 추가작업 그리고 6개의 파일을 삭제
  1. 34 3
      applications/subghz/scenes/subghz_scene_set_type.c
  2. 28 3
      applications/subghz/subghz.c
  3. 1 0
      applications/subghz/subghz_i.h

+ 34 - 3
applications/subghz/scenes/subghz_scene_set_type.c

@@ -17,7 +17,8 @@ enum SubmenuIndex {
     SubmenuIndexNeroSketch,
     SubmenuIndexNeroRadio,
     SubmenuIndexGateTX,
-    SubmenuIndexDoorHan,
+    SubmenuIndexDoorHan_315_00,
+    SubmenuIndexDoorHan_433_92,
 };
 
 bool subghz_scene_set_type_submenu_gen_data_protocol(
@@ -122,10 +123,16 @@ void subghz_scene_set_type_on_enter(void* context) {
         SubmenuIndexGateTX,
         subghz_scene_set_type_submenu_callback,
         subghz);
+    submenu_add_item(
+        subghz->submenu,
+        "DoorHan_315",
+        SubmenuIndexDoorHan_315_00,
+        subghz_scene_set_type_submenu_callback,
+        subghz);
     submenu_add_item(
         subghz->submenu,
         "DoorHan_433",
-        SubmenuIndexDoorHan,
+        SubmenuIndexDoorHan_433_92,
         subghz_scene_set_type_submenu_callback,
         subghz);
 
@@ -195,7 +202,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
                 generated_protocol = true;
             }
             break;
-        case SubmenuIndexDoorHan:
+        case SubmenuIndexDoorHan_433_92:
             subghz->txrx->transmitter =
                 subghz_transmitter_alloc_init(subghz->txrx->environment, "KeeLoq");
             if(subghz->txrx->transmitter) {
@@ -219,6 +226,30 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) {
                 scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
             }
             break;
+        case SubmenuIndexDoorHan_315_00:
+            subghz->txrx->transmitter =
+                subghz_transmitter_alloc_init(subghz->txrx->environment, "KeeLoq");
+            if(subghz->txrx->transmitter) {
+                subghz_protocol_keeloq_create_data(
+                    subghz->txrx->transmitter->protocol_instance,
+                    subghz->txrx->fff_data,
+                    key & 0x0FFFFFFF,
+                    0x2,
+                    0x0003,
+                    "DoorHan",
+                    subghz_frequencies[subghz_frequencies_315_00],
+                    FuriHalSubGhzPresetOok650Async);
+                generated_protocol = true;
+            } else {
+                generated_protocol = false;
+            }
+            subghz_transmitter_free(subghz->txrx->transmitter);
+            if(!generated_protocol) {
+                string_set(
+                    subghz->error_str, "Function requires\nan SD card with\nfresh databases.");
+                scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError);
+            }
+            break;
         default:
             return false;
             break;

+ 28 - 3
applications/subghz/subghz.c

@@ -4,33 +4,57 @@
 #include <lib/toolbox/path.h>
 
 const char* const subghz_frequencies_text[] = {
+
+    "300.00",
+    "303.88",
+    "304.25",
     "315.00",
+    "318.00",
+
+    "390.00",
+    "418.00",
     "433.08",
     "433.42",
     "433.92",
     "434.42",
+    "434.78",
+    "438.90",
+
     "868.35",
     "915.00",
+    "925.00",
 };
 
 const uint32_t subghz_frequencies[] = {
+
     /* 300 - 348 */
+    300000000,
+    303875000,
+    304250000,
     315000000,
+    318000000,
 
     /* 387 - 464 */
-
+    390000000,
+    418000000,
     433075000, /* LPD433 first */
     433420000,
     433920000, /* LPD433 mid */
     434420000,
-    /* 779 - 928 */
+    434775000, /* LPD433 last channels */
+    438900000,
 
+    /* 779 - 928 */
     868350000,
     915000000,
+    925000000,
+
 };
 
 const uint32_t subghz_hopper_frequencies[] = {
     315000000,
+    318000000,
+    390000000,
     433920000,
     868350000,
 };
@@ -38,7 +62,8 @@ const uint32_t subghz_hopper_frequencies[] = {
 const uint32_t subghz_frequencies_count = sizeof(subghz_frequencies) / sizeof(uint32_t);
 const uint32_t subghz_hopper_frequencies_count =
     sizeof(subghz_hopper_frequencies) / sizeof(uint32_t);
-const uint32_t subghz_frequencies_433_92 = 3;
+const uint32_t subghz_frequencies_433_92 = 9;
+const uint32_t subghz_frequencies_315_00 = 3;
 
 bool subghz_custom_event_callback(void* context, uint32_t event) {
     furi_assert(context);

+ 1 - 0
applications/subghz/subghz_i.h

@@ -41,6 +41,7 @@ extern const uint32_t subghz_hopper_frequencies[];
 extern const uint32_t subghz_frequencies_count;
 extern const uint32_t subghz_hopper_frequencies_count;
 extern const uint32_t subghz_frequencies_433_92;
+extern const uint32_t subghz_frequencies_315_00;
 
 /** SubGhzNotification state */
 typedef enum {