|  | @@ -10,7 +10,7 @@
 | 
	
		
			
				|  |  |   *******************************************************************************
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  #include "init_task.h"
 | 
	
		
			
				|  |  | -#include "common_config.h"   
 | 
	
		
			
				|  |  | +#include "common_config.h"
 | 
	
		
			
				|  |  |  #include "wdg.h"
 | 
	
		
			
				|  |  |  #include "usart.h"
 | 
	
		
			
				|  |  |  //#include "port_microrl.h"
 | 
	
	
		
			
				|  | @@ -68,9 +68,9 @@
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "FreeRTOS.h"
 | 
	
		
			
				|  |  | -#include "task.h" 
 | 
	
		
			
				|  |  | +#include "task.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -extern bool dhcp;	
 | 
	
		
			
				|  |  | +extern bool dhcp;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Общая структура настроек
 | 
	
	
		
			
				|  | @@ -89,168 +89,166 @@ TaskHandle_t xHandleSntpOnceSinhro = NULL;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Задача инициализации. Запускает основные задачи девайса и умирает.
 | 
	
		
			
				|  |  | -  * @retval 
 | 
	
		
			
				|  |  | +  * @retval
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  |  void InitTask(void *params)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -  InitUSART();
 | 
	
		
			
				|  |  | -  log_init(false);
 | 
	
		
			
				|  |  | -  ups_megatec_init();
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -  //SETTINGS_SetAllDefault();
 | 
	
		
			
				|  |  | -  //SETTINGS_Save();
 | 
	
		
			
				|  |  | -  SETTINGS_Load();
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +    InitUSART();
 | 
	
		
			
				|  |  | +    log_init(false);
 | 
	
		
			
				|  |  | +    ups_megatec_init();
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +    //SETTINGS_SetAllDefault();
 | 
	
		
			
				|  |  | +    //SETTINGS_Save();
 | 
	
		
			
				|  |  | +    SETTINGS_Load();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if(set_mode_jumper()){
 | 
	
		
			
				|  |  | -    SETTINGS_SetServiceDef();
 | 
	
		
			
				|  |  | -    SETTINGS_Save();
 | 
	
		
			
				|  |  | -    log_event_data(LOG_PSW_CHANGE, "Сброс к заводскому");
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +    if (set_mode_jumper()) {
 | 
	
		
			
				|  |  | +        SETTINGS_SetServiceDef();
 | 
	
		
			
				|  |  | +        SETTINGS_Save();
 | 
	
		
			
				|  |  | +        log_event_data(LOG_PSW_CHANGE, "Сброс к заводскому");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef USART_DEBUG_ENABLE
 | 
	
		
			
				|  |  | -  InitUSART();
 | 
	
		
			
				|  |  | - // MICRORL_Init();
 | 
	
		
			
				|  |  | -#endif  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | +    InitUSART();
 | 
	
		
			
				|  |  | +    // MICRORL_Init();
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef LED_ENABLE
 | 
	
		
			
				|  |  | -  LED_Init();
 | 
	
		
			
				|  |  | -  /* Простая мигалка для подтверждения живучести контроллера */
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -#endif  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | -#ifdef BUTTON_ENABLE  
 | 
	
		
			
				|  |  | -  BUTTON_Init();
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +    LED_Init();
 | 
	
		
			
				|  |  | +    /* Простая мигалка для подтверждения живучести контроллера */
 | 
	
		
			
				|  |  | +    xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | -#ifdef RTC_ENABLE  
 | 
	
		
			
				|  |  | -  TM_RTC_Init(TM_RTC_ClockSource_External);  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +#ifdef BUTTON_ENABLE
 | 
	
		
			
				|  |  | +    BUTTON_Init();
 | 
	
		
			
				|  |  | +    xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +#ifdef RTC_ENABLE
 | 
	
		
			
				|  |  | +    TM_RTC_Init(TM_RTC_ClockSource_External);
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------      
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef UPS_ENABLE
 | 
	
		
			
				|  |  | -  xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +    xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef DALLAS_SENSOR_ENABLE
 | 
	
		
			
				|  |  |      OW_Init();
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------    
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  /* Random number generator */
 | 
	
		
			
				|  |  | -  RNG_Init();
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +    RNG_Init();
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef NET_ENABLE
 | 
	
		
			
				|  |  | -  ETH_BSP_Config();
 | 
	
		
			
				|  |  | -  LwIP_Init();
 | 
	
		
			
				|  |  | +    ETH_BSP_Config();
 | 
	
		
			
				|  |  | +    LwIP_Init();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #ifdef HTTP_SERVER_ENABLE
 | 
	
		
			
				|  |  | -	  HTTP_Init();
 | 
	
		
			
				|  |  | +    HTTP_Init();
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #ifdef SSL_SERVER_ENABLE
 | 
	
		
			
				|  |  |      HTTP_Init();
 | 
	
		
			
				|  |  | -	  HTTPS_Init();
 | 
	
		
			
				|  |  | -//#define SSL_TASK_PRIO   ( configMAX_PRIORITIES - 3 )
 | 
	
		
			
				|  |  | -	   xTaskCreate(ssl_server, "SSL", 24*configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);
 | 
	
		
			
				|  |  | +    HTTPS_Init();
 | 
	
		
			
				|  |  | +    //#define SSL_TASK_PRIO   ( configMAX_PRIORITIES - 3 )
 | 
	
		
			
				|  |  | +    xTaskCreate(ssl_server, "SSL", 24 * configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -	   // UDP for net settings 
 | 
	
		
			
				|  |  | -	   if(strncmp(sSettings.sFlags.testState, "T2OK", 4)){
 | 
	
		
			
				|  |  | -		   xTaskCreate(vTaskTesting, "Testing", 2*configMINIMAL_STACK_SIZE,
 | 
	
		
			
				|  |  | -                NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -	   }
 | 
	
		
			
				|  |  | -	   else{
 | 
	
		
			
				|  |  | -		   UDP_netsetting_init();
 | 
	
		
			
				|  |  | -	   }
 | 
	
		
			
				|  |  | +// UDP for net settings
 | 
	
		
			
				|  |  | +    if (strncmp(sSettings.sFlags.testState, "T2OK", 4)) {
 | 
	
		
			
				|  |  | +        xTaskCreate(vTaskTesting, "Testing", 2 * configMINIMAL_STACK_SIZE,
 | 
	
		
			
				|  |  | +            NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +        UDP_netsetting_init();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  #ifdef CLI_ENABLE
 | 
	
		
			
				|  |  |      cli_init();
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #if defined TELNET_ENABLE
 | 
	
		
			
				|  |  | -	   telnet_server_init();
 | 
	
		
			
				|  |  | +    telnet_server_init();
 | 
	
		
			
				|  |  |  #ifdef SSH_ENABLE
 | 
	
		
			
				|  |  | -	   ssh_server_init();
 | 
	
		
			
				|  |  | +    ssh_server_init();
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +    /* SNTP */
 | 
	
		
			
				|  |  | +    SNTP_Init();
 | 
	
		
			
				|  |  | +    xTaskCreate(vTaskOnceSynchro, "sntpOnceSinhro", 2 * configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY,
 | 
	
		
			
				|  |  | +        &xHandleSntpOnceSinhro);
 | 
	
		
			
				|  |  | +    xTaskCreate(vTaskPeriodicSynchro, "sntpPeriodicSinhro", 2 * configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef SNMP_ENABLE
 | 
	
		
			
				|  |  | -  SNMP_Init();
 | 
	
		
			
				|  |  | -  xTaskCreate(snmp_trap_tread, "snmpTrapTest", 4*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -#endif	
 | 
	
		
			
				|  |  | +    SNMP_Init();
 | 
	
		
			
				|  |  | +    xTaskCreate(snmp_trap_tread, "snmpTrapTest", 4 * configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------      
 | 
	
		
			
				|  |  | -/* SNTP */
 | 
	
		
			
				|  |  | -  SNTP_Init();
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskOnceSynchro, "sntpOnceSinhro", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandleSntpOnceSinhro);
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskPeriodicSynchro, "sntpPeriodicSinhro", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  // Прозрачный порт
 | 
	
		
			
				|  |  |  #ifdef PORTGW_ENABLE
 | 
	
		
			
				|  |  | -  portgw_init();
 | 
	
		
			
				|  |  | +    portgw_init();
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------  
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  // Тестирование
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -  // Тест таблицы трапов  
 | 
	
		
			
				|  |  | -  //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------      
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------        
 | 
	
		
			
				|  |  | +// Тест таблицы трапов
 | 
	
		
			
				|  |  | +    //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  #ifdef DEBUG_FREERTOS
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskDebug, "Debug", 800, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | -#endif  
 | 
	
		
			
				|  |  | -// -----------------------------------------------------------------------------      
 | 
	
		
			
				|  |  | +   xTaskCreate(vTaskDebug, "Debug", 800, NULL, tskIDLE_PRIORITY, NULL);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +// -----------------------------------------------------------------------------
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    log_event_data(LOG_TURN_ON, " ");
 | 
	
		
			
				|  |  | +    /* Контроль успешной загрузки. Сброс флага bootry */
 | 
	
		
			
				|  |  | +    /* Сброс флага и сохранение нового значения во флеш памяти происходт после
 | 
	
		
			
				|  |  | +       некоторой задержки для запуска всех задач */
 | 
	
		
			
				|  |  | +    vTaskDelay(4000);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    SETTINGS_ResetBootTry();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Отправка трапа о перезагрузке в случае статического IP
 | 
	
		
			
				|  |  | +    /* if (!dhcp)
 | 
	
		
			
				|  |  | +       SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     printf("Hello world\r\n");*/
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  log_event_data(LOG_TURN_ON, " ");
 | 
	
		
			
				|  |  | -  /* Контроль успешной загрузки. Сброс флага bootry */
 | 
	
		
			
				|  |  | -  /* Сброс флага и сохранение нового значения во флеш памяти происходт после
 | 
	
		
			
				|  |  | -     некоторой задержки для запуска всех задач */
 | 
	
		
			
				|  |  | -  vTaskDelay(4000);
 | 
	
		
			
				|  |  | - 
 | 
	
		
			
				|  |  | -  SETTINGS_ResetBootTry();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  // Отправка трапа о перезагрузке в случае статического IP
 | 
	
		
			
				|  |  | - /* if (!dhcp)
 | 
	
		
			
				|  |  | -    SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  printf("Hello world\r\n");*/
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  vTaskDelete(NULL);
 | 
	
		
			
				|  |  | -     taskYIELD();
 | 
	
		
			
				|  |  | +    vTaskDelete(NULL);
 | 
	
		
			
				|  |  | +    taskYIELD();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #ifdef DEBUG_FREERTOS
 | 
	
		
			
				|  |  | -static void vTaskDebug(void *pvParameters) 
 | 
	
		
			
				|  |  | +static void vTaskDebug(void *pvParameters)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  char msg[700];
 | 
	
		
			
				|  |  | -  for(;;)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -	/*vTaskList(msg);
 | 
	
		
			
				|  |  | -	DBG printf(msg);
 | 
	
		
			
				|  |  | -	DBG printf("\n\r\r\n");*/
 | 
	
		
			
				|  |  | +    char msg[700];
 | 
	
		
			
				|  |  | +    for (;;) {
 | 
	
		
			
				|  |  | +        DBG printf("Free memory %d\n\r\r\n", xPortGetFreeHeapSize());
 | 
	
		
			
				|  |  | +        DBG vTaskList(msg);
 | 
	
		
			
				|  |  | +        DBG printf(msg);
 | 
	
		
			
				|  |  | +        DBG printf("\n\r\r\n");
 | 
	
		
			
				|  |  |  #if LWIP_STATS
 | 
	
		
			
				|  |  | -	stats_display();
 | 
	
		
			
				|  |  | -	DBG printf("\r\n\r\n");
 | 
	
		
			
				|  |  | +        stats_display();
 | 
	
		
			
				|  |  | +        DBG printf("\r\n\r\n");
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -	vTaskDelay(5000);
 | 
	
		
			
				|  |  | -  }   
 | 
	
		
			
				|  |  | +        vTaskDelay(5000);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 |