init_task.c 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module init_task
  3. * @file init_task.c
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief Инициализация всех задач.
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. #include "init_task.h"
  13. #include "common_config.h"
  14. #include "wdg.h"
  15. #include "usart.h"
  16. //#include "port_microrl.h"
  17. #include "led.h"
  18. #include "rng.h"
  19. #include "buttons.h"
  20. #include "jumper.h"
  21. #include "rtc.h"
  22. #include "log.h"
  23. #include "stm32f4x7_eth_bsp.h"
  24. #include "netconf.h"
  25. #include "udp_netsetting.h"
  26. #include "snmp_api.h"
  27. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  28. #include "http_server.h"
  29. #include "cli.h"
  30. #include "telnet_server.h"
  31. #ifdef HARDWARE_BT6709
  32. #include "server.h"
  33. #endif
  34. #elif defined HARDWARE_BT6703
  35. #include "my_ssl_server.h"
  36. #endif
  37. #include "sntp_api.h"
  38. #include "settings_api.h"
  39. #include "main.h"
  40. #include "trap_api.h"
  41. #include "megatec.h"
  42. #include "testing.h"
  43. #include "ups_monitor.h"
  44. //#include "ups_params.h"
  45. //#include "ups_monitor.h"
  46. #include "lwip/stats.h"
  47. #ifdef HARDWARE_BT6703
  48. #include "radius_user.h"
  49. #include "cert_req.h"
  50. #include "parse_rsa.h"
  51. #endif
  52. #ifdef PRINTF_STDLIB
  53. #include <stdio.h>
  54. #endif
  55. #ifdef PRINTF_CUSTOM
  56. #include "tinystdio.h"
  57. #endif
  58. #include "FreeRTOS.h"
  59. #include "task.h"
  60. extern bool dhcp;
  61. /**
  62. * @brief Общая структура настроек
  63. */
  64. extern SETTINGS_t sSettings;
  65. #ifdef DEBUG_FREERTOS
  66. static void vTaskDebug(void *pvParameters);
  67. #endif
  68. /**
  69. * @brief Разовая синхронизация времени при старте контроллера
  70. */
  71. TaskHandle_t xHandleSntpOnceSinhro = NULL;
  72. /**
  73. * @brief Задача инициализации. Запускает основные задачи девайса и умирает.
  74. * @retval
  75. */
  76. void InitTask(void *params)
  77. {
  78. // -----------------------------------------------------------------------------
  79. InitUSART();
  80. log_init(false);
  81. ups_megatec_init();
  82. // -----------------------------------------------------------------------------
  83. //SETTINGS_SetDefaultDebug();
  84. //SETTINGS_SetAllDefault();
  85. //SETTINGS_Save();
  86. SETTINGS_Load();
  87. if(set_mode_jumper()){
  88. SETTINGS_SetServiceDef();
  89. SETTINGS_Save();
  90. log_event_data(LOG_PSW_CHANGE, "Сброс к заводскому");
  91. }
  92. // -----------------------------------------------------------------------------
  93. // -----------------------------------------------------------------------------
  94. #ifdef USART_DEBUG_ENABLE
  95. InitUSART();
  96. // MICRORL_Init();
  97. #endif
  98. // -----------------------------------------------------------------------------
  99. // -----------------------------------------------------------------------------
  100. #ifdef LED_ENABLE
  101. LED_Init();
  102. /* Простая мигалка для подтверждения живучести контроллера */
  103. xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  104. #endif
  105. // -----------------------------------------------------------------------------
  106. // -----------------------------------------------------------------------------
  107. #ifdef BUTTON_ENABLE
  108. BUTTON_Init();
  109. xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  110. #endif
  111. // -----------------------------------------------------------------------------
  112. // -----------------------------------------------------------------------------
  113. #ifdef RTC_ENABLE
  114. TM_RTC_Init(TM_RTC_ClockSource_External);
  115. #endif
  116. // -----------------------------------------------------------------------------
  117. // -----------------------------------------------------------------------------
  118. #ifdef UPS_ENABLE
  119. xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  120. #endif
  121. // -----------------------------------------------------------------------------
  122. // -----------------------------------------------------------------------------
  123. /* Random number generator */
  124. RNG_Init();
  125. // -----------------------------------------------------------------------------
  126. // -----------------------------------------------------------------------------
  127. #ifdef NET_ENABLE
  128. ETH_BSP_Config();
  129. LwIP_Init();
  130. #ifdef WEB_SERVER_ENABLE
  131. HTTP_Init();
  132. #ifdef HARDWARE_BT6703
  133. HTTPS_Init();
  134. //#define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 )
  135. xTaskCreate(ssl_server, "SSL", 24*configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);
  136. #endif
  137. #endif
  138. // UDP for net settings
  139. if(strncmp(sSettings.sFlags.testState, "T2OK", 4)){
  140. xTaskCreate(vTaskTesting, "Testing", 2*configMINIMAL_STACK_SIZE,
  141. NULL, tskIDLE_PRIORITY, NULL);
  142. }
  143. else{
  144. UDP_netsetting_init();
  145. }
  146. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  147. cli_init();
  148. telnet_server_init();
  149. #ifdef HARDWARE_BT6709
  150. ssh_server_init();
  151. #endif
  152. #endif
  153. /* HTTPS_Init();
  154. xTaskCreate(ssl_server, "SSL", 10*configMINIMAL_STACK_SIZE, NULL, SSL_TASK_PRIO, NULL);
  155. UDP_netsetting_init();*/
  156. #ifdef SNMP_ENABLE
  157. SNMP_Init();
  158. xTaskCreate(snmp_trap_tread, "snmpTrapTest", 4*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  159. #endif
  160. #endif
  161. // -----------------------------------------------------------------------------
  162. /* SNTP */
  163. SNTP_Init();
  164. xTaskCreate(vTaskOnceSynchro, "sntpOnceSinhro", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandleSntpOnceSinhro);
  165. xTaskCreate(vTaskPeriodicSynchro, "sntpPeriodicSinhro", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  166. // -----------------------------------------------------------------------------
  167. // -----------------------------------------------------------------------------
  168. // Тестирование
  169. // Тест таблицы трапов
  170. //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  171. // -----------------------------------------------------------------------------
  172. // -----------------------------------------------------------------------------
  173. #ifdef DEBUG_FREERTOS
  174. xTaskCreate(vTaskDebug, "Debug", 800, NULL, tskIDLE_PRIORITY, NULL);
  175. #endif
  176. // -----------------------------------------------------------------------------
  177. log_event_data(LOG_TURN_ON, " ");
  178. /* Контроль успешной загрузки. Сброс флага bootry */
  179. /* Сброс флага и сохранение нового значения во флеш памяти происходт после
  180. некоторой задержки для запуска всех задач */
  181. vTaskDelay(4000);
  182. SETTINGS_ResetBootTry();
  183. // Отправка трапа о перезагрузке в случае статического IP
  184. /* if (!dhcp)
  185. SNMP_SendUserTrap(DEVICE_REBOOTED);
  186. printf("Hello world\r\n");*/
  187. vTaskDelete(NULL);
  188. taskYIELD();
  189. }
  190. #ifdef DEBUG_FREERTOS
  191. static void vTaskDebug(void *pvParameters)
  192. {
  193. char msg[700];
  194. for(;;)
  195. {
  196. /*vTaskList(msg);
  197. DBG printf(msg);
  198. DBG printf("\n\r\r\n");*/
  199. #if LWIP_STATS
  200. stats_display();
  201. DBG printf("\r\n\r\n");
  202. #endif
  203. vTaskDelay(5000);
  204. }
  205. }
  206. #endif
  207. /********************************* (C) РОТЕК **********************************/