| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | /********************************* (C) РОТЕК *********************************** * @module  init_task * @file    init_task.c * @version 1.0.0 * @date    XX.XX.XXXX * $brief   Инициализация всех задач. ******************************************************************************* * @history     Version  Author         Comment * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release. ******************************************************************************* */#include "init_task.h"#include "common_config.h"   #include "wdg.h"#include "usart.h"//#include "port_microrl.h"#include "led.h"#include "rng.h"#include "buttons.h"#include "jumper.h"#include "rtc.h"#include "log.h"#include "stm32f4x7_eth_bsp.h"#include "netconf.h"#include "udp_netsetting.h"#include "snmp_api.h"#if defined HARDWARE_BT6707 || HARDWARE_BT6709#include "http_server.h"#include "cli.h"#include "telnet_server.h"#ifdef HARDWARE_BT6709#include "server.h"#endif#elif defined HARDWARE_BT6703#include "my_ssl_server.h"#endif#include "sntp_api.h"#include "settings_api.h"#include "main.h"#include "trap_api.h"#include "megatec.h"#include "testing.h"#include "ups_monitor.h"//#include "ups_params.h"//#include "ups_monitor.h"#include "lwip/stats.h"#ifdef HARDWARE_BT6703#include "radius_user.h"#include "cert_req.h"#include "parse_rsa.h"#endif#ifdef PRINTF_STDLIB#include <stdio.h>#endif#ifdef PRINTF_CUSTOM#include "tinystdio.h"#endif#include "FreeRTOS.h"#include "task.h" extern bool dhcp;	/**  * @brief  Общая структура настроек  */extern SETTINGS_t sSettings;#ifdef DEBUG_FREERTOSstatic void vTaskDebug(void *pvParameters);#endif/**  * @brief  Разовая синхронизация времени при старте контроллера  */TaskHandle_t xHandleSntpOnceSinhro = NULL;/**  * @brief  Задача инициализации. Запускает основные задачи девайса и умирает.  * @retval   */void InitTask(void *params){// -----------------------------------------------------------------------------      InitUSART();  log_init(false);  ups_megatec_init();// -----------------------------------------------------------------------------      //SETTINGS_SetDefaultDebug();  //SETTINGS_SetAllDefault();  //SETTINGS_Save();  SETTINGS_Load();  if(set_mode_jumper()){	SETTINGS_SetServiceDef();	SETTINGS_Save();	log_event_data(LOG_PSW_CHANGE, "Сброс к заводскому");  }// -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------  #ifdef USART_DEBUG_ENABLE  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);#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);#endif// -----------------------------------------------------------------------------    // -----------------------------------------------------------------------------    /* Random number generator */  RNG_Init();// -----------------------------------------------------------------------------  // -----------------------------------------------------------------------------#ifdef NET_ENABLE  ETH_BSP_Config();  LwIP_Init();#ifdef WEB_SERVER_ENABLE	  HTTP_Init();#ifdef HARDWARE_BT6703	   HTTPS_Init();//#define SSL_TASK_PRIO   ( configMAX_PRIORITIES - 3 )	   xTaskCreate(ssl_server, "SSL", 24*configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);#endif#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();	   }#if defined HARDWARE_BT6707 || HARDWARE_BT6709	   cli_init();	   telnet_server_init();#ifdef HARDWARE_BT6709	   ssh_server_init();#endif#endif /* HTTPS_Init();  xTaskCreate(ssl_server, "SSL", 10*configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);    UDP_netsetting_init();*/  #ifdef SNMP_ENABLE  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);// -----------------------------------------------------------------------------  // -----------------------------------------------------------------------------  // Тестирование      // Тест таблицы трапов    //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------        #ifdef DEBUG_FREERTOS  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");*/    vTaskDelete(NULL);     taskYIELD();}#ifdef DEBUG_FREERTOSstatic void vTaskDebug(void *pvParameters) {  char msg[700];  for(;;)  {	/*vTaskList(msg);	DBG printf(msg);	DBG printf("\n\r\r\n");*/#if LWIP_STATS	stats_display();	DBG printf("\r\n\r\n");#endif	vTaskDelay(5000);  }   }#endif/********************************* (C) РОТЕК **********************************/
 |