Преглед на файлове

1)add prodate in main soft
2) add mac and serial in service soft

balbekova преди 7 години
родител
ревизия
38ab1030d2

+ 1 - 1
config/common_config.h

@@ -18,7 +18,7 @@
 /**
   * @brief  Маркер ревизии платы для валидации *.bin файла
   */
-#define HW_REV                          "BT6702"
+#define HW_REV                          "BT-6702"
 
 #define HW_REV_LEN                      16
 

+ 4 - 6
modules/HTTP_Server/http_server.c

@@ -12,7 +12,7 @@
 #include "settings_api.h"
 #include "netconf.h"
 #include "common_config.h"
-//#include "testing.h"
+#include "testing.h"
 #include "rtc.h"
 #include "rng.h"
 #include "megatec.h"
@@ -1381,14 +1381,11 @@ void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBuf
   /* Устанавливаем дату производства */
   SETTINGS_SetProDate(value, valueLen);
   
-  /* Устанавливаем дату следующей профилактики +1 год */
-  RTC_SetProfTime(value);
-  
   /* Пока отправляем true */
   strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\nTrue");
   *lenBufOut = strlen(bufOut);
   
- // TEST_SetServerFlag();
+  TEST_SetServerFlag();
 }
 
 /**
@@ -2474,7 +2471,7 @@ void ssl_server(void *pvParameters)
         // Id of currently logged-in user 
         uint8_t user_id;
         
-        if( DataFlag == 0 && DataFlag2 == 0 ) {
+        if( DataFlag == 0 && DataFlag2 == 0) {
         // Level of currently logged-in user 
         seclevel = 0xFF;
         for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
@@ -2492,6 +2489,7 @@ void ssl_server(void *pvParameters)
             Authenticated = true;
         else if(DataFlag2 >= 1)
             Authenticated = true;
+
        
         if ( Authenticated == false && sSettings.sRADIUS.Auth_enable == false)
         {

+ 2 - 0
modules/Makefile

@@ -44,6 +44,7 @@ INCLUDES += -IMegaTec
 INCLUDES += -Icommon
 INCLUDES += -Imonitor
 INCLUDES += -Ilog
+INCLUDES += -Itesting
 CSRC += $(wildcard leds/*.c)
 CSRC += $(wildcard buttons/*.c)
 CSRC += $(wildcard jumper/*.c)
@@ -52,6 +53,7 @@ CSRC += $(wildcard MegaTec/*.c)
 CSRC += $(wildcard common/*.c)
 CSRC += $(wildcard monitor/*.c)
 CSRC += $(wildcard log/*.c)
+CSRC += $(wildcard testing/*.c)
 
 CFLAGS += -DOS_FREERTOS
 CFLAGS += -DHARDWARE_$(shell echo $(HARDWARE) | tr a-z A-Z)

+ 27 - 8
modules/settings_api.c

@@ -73,10 +73,10 @@ void SETTINGS_SetWebParamsDef(void)
   */
 void SETTINGS_SetTempWebParamsDef(void)
 {
-	  strcpy(sSettings.sWebParams.ip, "192.168.1.2");
-	  strcpy(sSettings.sWebParams.gate, "192.168.1.1");
-	  strcpy(sSettings.sWebParams.mask, "255.255.255.0");
-	  sSettings.sWebParams.dhcpEnable = 1;
+	  strcpy(sSettings.sWebTempParams.ip, "192.168.1.8");
+	  strcpy(sSettings.sWebTempParams.gate, "192.168.1.1");
+	  strcpy(sSettings.sWebTempParams.mask, "255.255.255.0");
+	  sSettings.sWebTempParams.dhcpEnable = 1;
 }
 
 /**
@@ -110,6 +110,7 @@ void SETTINGS_SetInfoDef(void)
 	  strcpy(sSettings.sInfo.mac, sSys->mac);
 	  strcpy(sSettings.sInfo.serialNumber, sSys->serial);
 	  strcpy(sSettings.sInfo.productionData, sSys->proddate);
+	  strcpy(sSettings.sFlags.testState, sSys->testState);
 	  vPortFree(sSys);
   }
   else {
@@ -452,8 +453,17 @@ void SETTINGS_GetMac(uint8_t *mac)
   */
 void SETTINGS_SetProDate(char *proDate, uint8_t len)
 {
-  memset(sSettings.sInfo.productionData, 0, 40);
-  memcpy(sSettings.sInfo.productionData, proDate, len); 
+	SYS_t *sSys = NULL;
+
+	sSys = pvPortMalloc(sizeof(*sSys));
+	if (sSys) {
+	  strcpy(sSys->proddate, proDate);
+	  SYS_Save(sSys);
+	  memset(sSettings.sInfo.productionData, 0, 40);
+	  memcpy(sSettings.sInfo.productionData, proDate, len);
+	  vPortFree(sSys);
+	  SETTINGS_Save();
+	}
 }
 
 /**
@@ -461,8 +471,17 @@ void SETTINGS_SetProDate(char *proDate, uint8_t len)
   */
 void SETTINGS_SetT2OK(void)
 {
-  memset(sSettings.sFlags.testState, 0, 16);
-  memcpy(sSettings.sFlags.testState, "T2OK", 4);
+	SYS_t *sSys = NULL;
+
+	sSys = pvPortMalloc(sizeof(*sSys));
+	if (sSys) {
+	  memset(sSettings.sFlags.testState, 0, 16);
+	  memcpy(sSettings.sFlags.testState, "T2OK", 4);
+	  strcpy(sSys->testState, sSettings.sFlags.testState);
+	  SYS_Save(sSys);
+	  vPortFree(sSys);
+	  SETTINGS_Save();
+	}
 }
 
 /**

+ 1 - 0
modules/sys_api.h

@@ -39,6 +39,7 @@ typedef struct
   char  serial[SER_LEN];	// Серийный номер
   char  customer[CUST_LEN];	// Заказчик
   char 	proddate[PROD_LEN];	// Дата производства
+  char 	testState[16];
   uint32_t controlword;
   uint32_t crc;
 } SYS_t;

+ 1 - 1
modules/sys_hal.c

@@ -66,7 +66,7 @@ void SYS_WriteToFlash(uint8_t *data, uint32_t size, uint32_t crc)
 
     /* Проверяем  CRC того что было записано */
     if (checkCrc == crc) {
-      DBG printf("SYS write OK\r\n");
+    //  DBG printf("SYS write OK\r\n");
       break;
     }
     else

+ 159 - 0
modules/testing/testing.c

@@ -0,0 +1,159 @@
+/********************************* (C) РОТЕК ***********************************
+ * @module  testing
+ * @file    testing.c
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   Template
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+   
+#include "stm32f4xx.h"
+#include "testing.h"
+#include "settings_api.h"
+#include "common_config.h"
+#include "stm32_uid.h"
+#include "led.h"
+
+#include "FreeRTOS.h"
+#include "task.h"
+
+#include "lwip/opt.h"
+#include "lwip/arch.h"
+#include "lwip/api.h"
+#include "lwip/tcp.h"
+
+#ifdef PRINTF_STDLIB
+#include <stdio.h>
+#endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
+
+#include <stdbool.h>
+#include <string.h>
+
+#define UDP_PORT 49049
+
+bool fTesting = false;
+bool fServer = false;
+
+
+#define MSG_LEN   300
+char msg[MSG_LEN];
+
+uint8_t ID[33];
+
+extern SETTINGS_t   sSettings;       // Общая структура настроек
+
+/**
+  * @brief  Тестирование
+  */
+// TODO Убрать заглушки
+void vTaskTesting(void *params)
+{
+	uint8_t len;
+  for (;;)
+  {
+	  //printf("Start testing task\r\n");
+  
+	  /* Читаем ID */
+	  GetSTM32IDStr(ID, &len);
+	  
+	  /* Отправляем запрос */
+	  TEST_SendData();
+	  
+	  /* Ждем timeout и высылаем ответ на тестер */
+	  vTaskDelay(2000);
+	  
+	  /* Если все прошло хорошо*/
+	  if (fServer)
+	  {
+        LED_On(LED_INIT_R);
+		/* Устанавливаем статус тестирования "T2OK" и сохраняем настройки */
+		SETTINGS_SetT2OK();
+
+        LED_Off(LED_INIT_R);
+	    fServer = false;
+	    vTaskDelete(NULL);
+      }
+      
+      vTaskDelay(100);	
+  }
+}
+
+/**
+  * @brief  Отправляет строку данных по UDP
+  */
+void TEST_SendData(void)
+{
+  struct netconn *conn;
+  struct netbuf *buf;
+  char *data;
+  err_t err;
+  char str[20] = {0};
+   
+  /* Отправляем сообщение на сервер по UDP */
+  memset(msg, 0, MSG_LEN);
+  
+  conn = netconn_new( NETCONN_UDP );
+  
+  if (conn!= NULL)
+  {
+    err = netconn_bind(conn, IP_ADDR_ANY, UDP_PORT); 
+    
+    if (err == ERR_OK)
+    {
+      netconn_connect(conn, IP_ADDR_BROADCAST, UDP_PORT);
+      
+	  strcpy(msg, sSettings.sSnmp.sysName);
+	  strcat(msg, ";");
+		
+	  /* Заглушка */
+	  //strcat(msg, "KN-03-00001;EC-4C-4D-00-90-01;0.8_DEMO;;;");
+	  strcat(msg, sSettings.sInfo.serialNumber);
+	  strcat(msg, ";");
+	  
+	  strcat(msg, sSettings.sInfo.mac);
+	  strcat(msg, ";");
+       
+	  strcat(msg, VERSION);
+	  strcat(msg, ";;;");
+      
+	  for (uint8_t i = 0; i < 12; i++) 
+	  {
+		 strcat(msg, ID);
+	  }	
+	  
+      strcat(msg, ";;;");
+      
+	  strcat(msg, sSettings.sFlags.testState);
+	  
+	  strcat(msg, ";;");
+
+	  
+	  buf = netbuf_new();
+      data = netbuf_alloc(buf, strlen(msg));
+      memcpy(data, msg, strlen(msg));
+      netconn_send(conn, buf);
+      netbuf_delete(buf); 
+	  
+	  netconn_delete(conn);
+	}
+	else
+      netconn_delete(conn);
+  }	
+}
+
+/**
+  * @brief  
+  */
+void TEST_SetServerFlag(void)
+{
+  fServer = true;
+}
+
+
+/********************************* (C) РОТЕК **********************************/

+ 43 - 0
modules/testing/testing.h

@@ -0,0 +1,43 @@
+/********************************* (C) РОТЕК ***********************************
+ * @module  testing
+ * @file    testing.h
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   led
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef TESTING_H
+#define TESTING_H
+   
+/**
+  * @brief  Тестирование
+  */
+void vTaskTesting(void *params);
+
+/**
+  * @brief  Отправляет строку данных по UDP
+  */
+void TEST_SendData(void);
+
+/**
+  * @brief  
+  */
+void TEST_SetServerFlag(void);
+
+
+// -------------------------------------------------------------------------- //
+// Тесты железа в рамках проекта SmartUPS и дальнейших на его основе
+// -------------------------------------------------------------------------- //
+
+void TEST_InitRS485(void);
+void TEST_IO(void);
+
+
+#endif /* #ifndef TESTING_H */
+
+/********************************* (C) РОТЕК **********************************/

+ 2 - 0
peripheral_modules/inc/stm32_uid.h

@@ -19,5 +19,7 @@
 
 void GetSTM32IDStr(char* str, uint8_t* len);
 
+void GetSTM32IDInt(char* value);
+
 
 #endif /* STM32_UID_H_ */

+ 1 - 1
peripheral_modules/src/spi_flash.c

@@ -362,7 +362,7 @@ bool spi_flash_test(void) {
     if (!spi_flash_init())
 	return false;
     int ret = 0, addr = 0, offset = 0;
-    for(i = 0; i < spi_flash_desc.sector_count; i ++){
+    for(i = 0; i < 1; i ++){//spi_flash_desc.sector_count
 		//spi_flash_read(i*spi_flash_desc.sector_size, rxbuf1, bufsize1, 0);
 		spi_flash_erase_sector(i*spi_flash_desc.sector_size,0);
 		//spi_flash_read(0, rxbuf1, bufsize1, 0);

+ 10 - 0
peripheral_modules/src/stm32_uid.c

@@ -32,4 +32,14 @@ void GetSTM32IDStr(char* str, uint8_t* len)
 	*len = strlen(str);
 }
 
+void GetSTM32IDInt(char* value)
+{
+	uint8_t i;
+
+	for(i = 0; i < 12; i++)
+	{
+		value[i] = STM32_UUID[i];
+	}
+}
+
 

+ 31 - 11
service_hw/Commands/commands_api.c

@@ -22,6 +22,7 @@
 #include "stm32f4x7_eth.h"
 #include "http_server.h"
 #include "config_service.h"
+#include "rtc.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
@@ -63,6 +64,7 @@ bool testSet = false;
 char msg[MSG_LEN];
 
 extern char STM_ID[33];
+extern char STM_ID_HEX[12];
 uint8_t MAC[6];
 
 /**
@@ -73,16 +75,36 @@ void vTestCommands(void *params)
     for (;;)
     {
         if (fUpdatable) {
+
+        	if(RTC_GetUnixTime() <= 946685800)
+        	{
+        		 memset(SETTINGS_GetTestState(), 0, 16);
+        		 SETTINGS_SetTest(SETTINGS_GetTestState());
+        		 LED_On(LED_MAJOR_R);
+        		 //xTaskCreate(vTaskServiceLedBlinkErr, "LED_Blink_Err", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
+        		 xTaskCreate(vTaskServiceLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
+        		 while(1){
+        			 vTaskDelay(10);
+        		 }
+        	}
             //COM_TestEthernet();
+        	COM_SetMAC();
+
             Test_Ethernet();
-            vTaskDelay(4000);
+            vTaskDelay(8000);
 
             /* Стартует таск для опроса кнопки DEF */
             //xTaskCreate(vBootloaderButton, "DEF_Bootloader", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
             xTaskCreate(vTaskButtons, "DEF_Waiting", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
-          //  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
+            xTaskCreate(vTaskServiceLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
             
-            while (!fDefPressed) {}
+            while (!fDefPressed) {
+            	vTaskDelay(10);
+            }
+
+            LED_On(LED_INIT_R);
+            LED_On(LED_MAJOR_R);
+            LED_On(LED_MINOR_R);
 
             //sSettings.bootParams.loadMode = 1;
             SetLoadMode();
@@ -99,7 +121,7 @@ void vTestCommands(void *params)
             case TEST_WAIT :
             break;
               
-            case TEST_U232F :
+            case TEST_U232 :
                 Test_U232();
             break;
           
@@ -196,9 +218,6 @@ void COM_TestSerno(void)
   char str[20] = {0};
   uint8_t len;
 
-  /* Сохраняем настройки чтобы перезаписать новый Serno */
-  SETTINGS_Save();
-
   /* Отправляем сообщение на сервер по UDP */
   memset(msg, 0, MSG_LEN);
 
@@ -278,9 +297,9 @@ void COM_SetMAC(void)
 
   for (uint8_t i = 0; i < 4; i++)
   {
-    octet1 ^= STM_ID[i];
-	octet2 ^= STM_ID[i + 4];
-	octet3 ^= STM_ID[i + 8];
+    octet1 ^= STM_ID_HEX[i];
+	octet2 ^= STM_ID_HEX[i + 4];
+	octet3 ^= STM_ID_HEX[i + 8];
   }
 
   /* Восьмой бит первого октета должен быть равен 0 */
@@ -292,6 +311,7 @@ void COM_SetMAC(void)
   MAC[3] = 0x00;
   MAC[4] = 0x00;
   MAC[5] = 0x00;
+
 }
 
 /**
@@ -334,7 +354,7 @@ void COM_SetTestState(TESTING_STATE_t status)
 	break;
   }
 
-  SETTINGS_Save();
+  SETTINGS_SetTest(SETTINGS_GetTestState());
 }
 
 /********************************* (C) РОТЕК **********************************/

+ 1 - 1
service_hw/Commands/commands_api.h

@@ -23,7 +23,7 @@ typedef enum
 {
     TEST_WAIT = 0,
     TEST_DRY,
-    TEST_U232F,
+    TEST_U232,
     TEST_DEF,
     TEST_SET,
     TEST_RTC,

+ 2 - 1
service_hw/Console/config.h

@@ -74,7 +74,8 @@ Print prompt at 'microrl_init', if enable, prompt will print at startup,
 otherwise first prompt will print after first press Enter in terminal
 NOTE!: Enable it, if you call 'microrl_init' after your communication subsystem 
 already initialize and ready to print message */
-#undef _ENABLE_INIT_PROMPT
+//#undef _ENABLE_INIT_PROMPT
+#define _ENABLE_INIT_PROMPT
 
 /*
 New line symbol */

+ 5 - 0
service_hw/Console/microrl.c

@@ -10,8 +10,13 @@ BUGS and TODO:
 #include <stdlib.h>
 #include "microrl.h"
 #ifdef _USE_LIBC_STDIO
+#ifdef PRINTF_STDLIB
 #include <stdio.h>
 #endif
+#ifdef PRINTF_CUSTOM
+#include "tinystdio.h"
+#endif
+#endif
 
 //#define DBG(...) fprintf(stderr, "\033[33m");fprintf(stderr,__VA_ARGS__);fprintf(stderr,"\033[0m");
 

+ 5 - 3
service_hw/Console/port_microrl.c

@@ -80,6 +80,7 @@
 #define _CMD_RST         "reset"
 
 #define _CMD_SPIFLASH    "SPIFLASH"
+#define _CMD_U232        "U232"
 
 // arguments for set/clear
 #define _SCMD_PB  "port_b"
@@ -136,7 +137,8 @@ char * keyworld [] = {
   
   _CMD_RST,
 
-  _CMD_SPIFLASH
+  _CMD_SPIFLASH,
+  _CMD_U232
 };
 
 // 'set/clear' command argements
@@ -293,10 +295,10 @@ int execute (int argc, const char * const * argv)
       }
       
       /* Тест дополнительных пинов RS232 */
-	  else if (strcmp (argv[i], _CMD_U232F) == 0) 
+	  else if (strcmp (argv[i], _CMD_U232) == 0)
       {
 		//testSet = true;
-        TEST_SetTest(TEST_U232F);
+        TEST_SetTest(TEST_U232);
 		print ("\n\r");
 		return 0;
       }

+ 2 - 2
service_hw/Ethernet/netconf.c

@@ -54,9 +54,9 @@ void LwIP_Init(void)
   netif_set_up(&xnetif); 
     	  
   /* Проверяем наличие линка */
-  reg = ETH_ReadPHYRegister(0, 1);
+ // reg = ETH_ReadPHYRegister(0, 1);
 
- // if (reg & 4)
+//  if (reg & 4)
     xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
                 tskIDLE_PRIORITY + 2, &xHandleDHCP);
 }

+ 8 - 0
service_hw/Hardware/hw_init.c

@@ -35,6 +35,7 @@
 #endif
 
 char STM_ID[33];
+char STM_ID_HEX[12];
 
 void service_com_task(void* params)
 {
@@ -49,6 +50,8 @@ void service_com_task(void* params)
 
 }
 
+uint32_t time_test =0;
+
 /**
   * @brief  Инициализация необходимых модулей
   */
@@ -64,17 +67,22 @@ void BT_6702_Init(void)
 	MICRORL_Init();
   
     SETTINGS_Load();
+    /*SETTINGS_SetTempWebParamsDef();
+    SETTINGS_Save();*/
     
     COM_ReadTestState();
     
     memset(STM_ID, 0, 33);
     GetSTM32IDStr(STM_ID, &len);    // Уникальный ID чипа
+    GetSTM32IDInt(STM_ID_HEX);
     
     BUTTON_Init();  // Кнопки
     LED_Init();
     
     TM_RTC_Init(TM_RTC_ClockSource_External);
 
+    time_test = RTC_GetUnixTime();
+
     xTaskCreate(service_com_task, ( char * ) "service_com_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);
     // Создает таски для выполнения команд тестера 
     xTaskCreate(vTestCommands, "TestProcessing", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);

+ 37 - 2
service_hw/Settings/bt_6701_settings.c

@@ -15,6 +15,7 @@
 #include "bt_6701_settings.h"
 #include "settings_api.h"
 #include "common_config.h"
+#include "sys_api.h"
 
 #include "FreeRTOS.h"
 #include "task.h"
@@ -33,12 +34,37 @@ char * SETTINGS_GetTestState(void)
 	return sSettings.sFlags.testState;
 }
 
+/**
+  * @brief
+  */
+void SETTINGS_SetTest(char *state)
+{
+	SYS_t *sSys = NULL;
+
+	sSys = pvPortMalloc(sizeof(*sSys));
+	if (sSys) {
+	  strcpy(sSys->testState, state);
+	  SYS_Save(sSys);
+	  vPortFree(sSys);
+	  SETTINGS_Save();
+	}
+}
+
 /**
   * @brief  Устанавливает Serno, но не сохраняет новые настройки во флеш
   */
 void SETTINGS_SetSerno(char *serno)
 {
-    strcpy(sSettings.sInfo.serialNumber, serno);
+	SYS_t *sSys = NULL;
+
+	sSys = pvPortMalloc(sizeof(*sSys));
+	if (sSys) {
+	  strcpy(sSys->serial, serno);
+	  strcpy(sSettings.sInfo.serialNumber, sSys->serial);
+	  SYS_Save(sSys);
+	  vPortFree(sSys);
+	  SETTINGS_Save();
+	}
 }
 
 /**
@@ -46,7 +72,16 @@ void SETTINGS_SetSerno(char *serno)
   */
 void SETTINGS_SetMac(char *mac)
 {
-    strcpy(sSettings.sInfo.mac, mac);
+	SYS_t *sSys = NULL;
+
+	sSys = pvPortMalloc(sizeof(*sSys));
+	if (sSys) {
+	  strcpy(sSys->mac, mac);
+	  strcpy(sSettings.sInfo.mac, sSys->mac);
+	  SYS_Save(sSys);
+	  vPortFree(sSys);
+	  SETTINGS_Save();
+	}
 }
 
 

+ 5 - 0
service_hw/Settings/bt_6701_settings.h

@@ -24,6 +24,11 @@ char * SETTINGS_GetTestState(void);
   */
 void BT_6701_SetBootParamsDef(void);
 
+/**
+  * @brief
+  */
+void SETTINGS_SetTest(char *state);
+
 /**
   * @brief  Устанавливает Serno, но не сохраняет новые настройки во флеш
   */

+ 2 - 2
service_hw/buttons/buttons.c

@@ -180,9 +180,9 @@ void BUTTON_DEF_UpHandler(void)
   */
 void BUTTON_DEF_DownHandler(void)
 {
-	LED_On(LED_INIT_R);
+/*	LED_On(LED_INIT_R);
 	LED_On(LED_MAJOR_R);
-	LED_On(LED_MINOR_R);
+	LED_On(LED_MINOR_R);*/
 
     fDefPressed = true;
 }

+ 22 - 0
service_hw/leds/led.c

@@ -35,6 +35,28 @@ void LED_Init(void)
   LED_Off(LED_MINOR_R);
 }
 
+void vTaskServiceLedBlink(void *arg)
+{
+  for (;;)
+  {
+	/* Просто отражает состояние контроллера - "живой" */
+    LED_Toggle(LED_INIT_G);
+    LED_Toggle(LED_INIT_R);
+
+    vTaskDelay(statusLedFreq / 4);
+  }
+}
+
+void vTaskServiceLedBlinkErr(void *arg)
+{
+  for (;;)
+  {
+	/* Просто отражает состояние контроллера - "живой" */
+    LED_Toggle(LED_INIT_R);
+
+    vTaskDelay(statusLedFreq);
+  }
+}
 /**
   * @brief  
   */

+ 3 - 1
service_hw/leds/led.h

@@ -54,7 +54,9 @@ void LED_Init(void);
 /**
   * @brief  Задача простой мигалки
   */
-void vTaskLedBlink(void *pvParameters);
+void vTaskServiceLedBlink(void *arg);
+
+void vTaskServiceLedBlinkErr(void *arg);
 
 /**
   * @brief  

+ 10 - 2
thirdparty/lwip/port/FreeRTOS/ethernetif.c

@@ -91,7 +91,7 @@ extern ETH_DMADESCTypeDef  *DMARxDescToGet;
 /* Global pointer for last received frame infos */
 extern ETH_DMA_Rx_Frame_infos *DMA_RX_FRAME_infos;
 
-
+extern uint8_t MAC[6];
 
 
 static void ethernetif_input( void * pvParameters );
@@ -114,7 +114,14 @@ static void low_level_init(struct netif *netif)
   netif->hwaddr_len = ETHARP_HWADDR_LEN;
 	
   /* set netif MAC hardware address */
-  
+#ifdef BT6702_SERVICE
+  netif->hwaddr[0] =  MAC[0];
+  netif->hwaddr[1] =  MAC[1];
+  netif->hwaddr[2] =  MAC[2];
+  netif->hwaddr[3] =  MAC[3];
+  netif->hwaddr[4] =  MAC[4];
+  netif->hwaddr[5] =  MAC[5];
+#else
   SETTINGS_GetMac(mac);
 
   netif->hwaddr[0] =  mac[0];
@@ -123,6 +130,7 @@ static void low_level_init(struct netif *netif)
   netif->hwaddr[3] =  mac[3];
   netif->hwaddr[4] =  mac[4];
   netif->hwaddr[5] =  mac[5];
+#endif
 
   /* set netif maximum transfer unit */
   netif->mtu = 1500;

BIN
tracefile.bin


+ 6 - 4
user/init_task.c

@@ -30,7 +30,7 @@
 #include "main.h"
 #include "trap_api.h"
 #include "megatec.h"
-//#include "testing.h"
+#include "testing.h"
 #include "ups_monitor.h"
 //#include "ups_params.h"
 //#include "ups_monitor.h"
@@ -176,9 +176,11 @@ void InitTask(void *params)
 #endif  
 // -----------------------------------------------------------------------------      
 
- /* xTaskCreate(vTaskTesting, "Testing", configMINIMAL_STACK_SIZE,
-              NULL, tskIDLE_PRIORITY, NULL);*/
-  
+  if(strncmp(sSettings.sFlags.testState, "T2OK", 4)){
+	  xTaskCreate(vTaskTesting, "Testing", configMINIMAL_STACK_SIZE,
+              NULL, tskIDLE_PRIORITY, NULL);
+  }
+
   //TEST_InitRS485();
   //TEST_IO();