优化cywee chipinfo转mac密钥激活
authorpenglei <1624952103@qq.com>
Thu, 12 Sep 2024 10:28:32 +0000 (18:28 +0800)
committerpenglei <1624952103@qq.com>
Thu, 12 Sep 2024 10:28:32 +0000 (18:28 +0800)
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/utils/custom_utils.c

index 40ec79d..d596327 100644 (file)
@@ -84,8 +84,7 @@ static uint32_t abs_static_timestampe = 0;
 static uint32_t asleep_timestampe = 0;
 
 #ifdef CYWEE_MAC_ACTIVE
-int cm__hs1__mac_c0_init(void);
-int cm__hs1__mac_c0r_init(void);
+int cm__hs1__mac_c1_init(void);
 int cm__hs1__deinit(void);
 
 uint8_t SEC_FILE_ADDR[78] = {0};
@@ -1106,8 +1105,21 @@ int cywee_main_dml(void)
     cywee_installized = 1;
 
 #ifdef CYWEE_MAC_ACTIVE
+    // /******************获取chipinfo 找到对应的btmac 并配置进去*************************/
+    // int chipinfolen = strlen((char*)chipInfo);
+    // if (chipinfolen >= 4)
+    // {
+        //uint32_t chipinfo_num= *(uint32_t*)(&chipInfo[chipinfolen - 4]);
+        //change_mac_from_chipinfo_map(chipinfo_num);
+    //}    
+
+    change_mac_from_chipinfo_map();
     uint16_t len = 78;
     uapi_cywee_get_mac_key(SEC_FILE_ADDR,&len);
+    // printf("SEC_FILE_ADDR : ");
+    // for(int i = 0 ; i < 78 ; i++)
+    //     printf("0x%2x, ",SEC_FILE_ADDR[i]);
+    // printf("\n");
 #endif
     int i;
     memset(&scl, 0, sizeof(scl));
@@ -1176,18 +1188,7 @@ int cywee_main_dml(void)
     uint32_t irqMask = 0;
     irqMask = osal_irq_lock();
 #ifdef CYWEE_MAC_ACTIVE
-
-    // /******************获取chipinfo 找到对应的btmac 并配置进去*************************/
-    // int chipinfolen = strlen((char*)chipInfo);
-    // if (chipinfolen >= 4)
-    // {
-        //uint32_t chipinfo_num= *(uint32_t*)(&chipInfo[chipinfolen - 4]);
-        //change_mac_from_chipinfo_map(chipinfo_num);
-    //}    
-
-    change_mac_from_chipinfo_map();
-    //cm__hs1__mac_c0_init();//若mac_address的排列為正相時呼叫的api
-    cm__hs1__mac_c0r_init();//若mac_address的排列為反相時呼叫的api
+    cm__hs1__mac_c1_init();
 #else
     cm__hs1__init();
 #endif
index e26e443..91e1b76 100644 (file)
@@ -3358,20 +3358,21 @@ static chiinfo_mac_pair g_chipinfo_map[]={
 {0x00FD,"d45d9057f5daa16a0a03780fab820100"},
 {0x00FE,"d45d90576bd9a2540a03780f69820100"},
 {0x00FF,"d45d905756362ff20a03780f81820100"},
-{0x0100,"d409441782b5a8ca0a03787507820100"},
-{0x0101,"d40944175563517a0a03787521820100"},
-{0x0102,"d4094417231002070a03787505820100"},
-{0x0103,"d4094417f128ae310a03781d27820100"},
+{0x0100,"7409441782b5a8ca0a03787507820100"},
+{0x0101,"740944175563517a0a03787521820100"},
+{0x0102,"74094417231002070a03787505820100"},
+{0x0103,"74094417f128ae310a03781d27820100"},
 {0x0104,"d45dd617267bc5070a03780f4f830100"},
 {0x0105,"d45dd6178656a6f10a03780f2d830100"},
-{0x0106,"d4094417cf5b57f10a03787521820100"},
-{0x0107,"d4094417ff4014470a0378750d820100"},
-{0x0108,"d4094417b9da89830a03787549820100"},
+{0x0106,"74094417cf5b57f10a03787521820100"},
+{0x0107,"74094417ff4014470a0378750d820100"},
+{0x0108,"74094417b9da89830a03787549820100"},
 };
 
 errcode_t change_mac_from_chipinfo_map(void)
 {
     uint8_t bd_addr[BD_ADDR_LEN]={0};
+    uint32_t len = 6;
     uint8_t soc_id[20]={0};
     uint8_t uid[16]={0};
     char uid_str[33] = {0};
@@ -3384,10 +3385,15 @@ errcode_t change_mac_from_chipinfo_map(void)
         sprintf(uid_str + i * 2, "%02x", uid[i]);
     uid_str[32] = '\0';
 
+    uapi_get_nv_btaddr(bd_addr,&len);
+
     for (int i=0 ; i< sizeof(g_chipinfo_map)/sizeof(chiinfo_mac_pair);i++)
     {
         if(strcmp(uid_str, g_chipinfo_map[i].uid) == 0)
         {
+            if((bd_addr[4] << 8 | bd_addr[5]) == g_chipinfo_map[i].mac)
+                return ERRCODE_SUCC;
+
             uint16_t btmac2 = g_chipinfo_map[i].mac;
             bd_addr[5] = (btmac2&0x00FF) ; 
             bd_addr[4] = (btmac2&0xFF00) >>8 ;
@@ -3395,7 +3401,7 @@ errcode_t change_mac_from_chipinfo_map(void)
             bd_addr[2] = 0x06 ;
             bd_addr[1] = 0x11 ;
             bd_addr[0] = 0x28 ;
-            ret = uapi_set_nv_btaddr(bd_addr, sizeof(bd_addr));
+            ret = uapi_set_nv_btaddr(bd_addr, len);
             if (ret != ERRCODE_SUCC) { 
                 /* ERROR PROCESS */ 
                 // printf("found chipinfo 0x%08X and change btmac to 0xXXXXXX01%04X failed! ret %d\n",