Explorar el Código

[service_sw]change algorithm of getting rnd MAC

balbekova hace 5 años
padre
commit
a8df5de3a3
Se han modificado 1 ficheros con 12 adiciones y 19 borrados
  1. 12 19
      service_hw/Commands/commands_api.c

+ 12 - 19
service_hw/Commands/commands_api.c

@@ -26,6 +26,7 @@
 #include "config_service.h"
 #include "rtc.h"
 #include "port_microrl.h"
+#include "hash.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
@@ -68,7 +69,6 @@ char msg[MSG_LEN];
 
 extern char STM_ID[33];
 extern char STM_ID_HEX[12];
-uint8_t MAC[6];
 
 /**
   * @brief  Общая структура настроек
@@ -316,27 +316,20 @@ void COM_SetMAC(void)
   uint8_t octet1 = 0;
   uint8_t octet2 = 0;
   uint8_t octet3 = 0;
+  uint8_t octet4 = 0;
+  uint8_t octet5 = 0;
+  uint8_t len;
+  uint8_t hash[16];
 
-  for (uint8_t i = 0; i < 4; i++)
-  {
-    octet1 ^= STM_ID_HEX[i];
-	octet2 ^= STM_ID_HEX[i + 4];
-	octet3 ^= STM_ID_HEX[i + 8];
-  }
-
-  /* Восьмой бит первого октета должен быть равен 0 */
-
-/*  MAC[0] = octet1 & 0xFE;
-  MAC[1] = octet2;
-  MAC[2] = octet3;
-
-  MAC[3] = 0x00;
-  MAC[4] = 0x00;
-  MAC[5] = 0x00;*/
+  md5hash(hash, STM_ID_HEX, sizeof(STM_ID_HEX));
 
+  octet1 = hash[0];
+  octet2 = hash[1];
+  octet3 = hash[2];
+  octet4 = hash[3];
+  octet5 = hash[4];
   /* Устанавливаем MAC, но не сохраняем */
-  snprintf(sSettings.sInfo.mac, MAC_LEN, "%02X-%02X-%02X-00-00-00", octet1 & 0xFE, octet2, octet3);
-
+  snprintf(sSettings.sInfo.mac, MAC_LEN, "EC-%02X-%02X-%02X-%02X-%02X", octet1, octet2, octet3, octet4, octet5);
 }
 
 /**