123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- /********************************* (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 "stm32f4x7_eth_bsp.h"
- #include "netconf.h"
- #include "udp_netsetting.h"
- #include "snmp_api.h"
- #include "http_server.h"
- #include "sntp.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 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;
- /**
- * @brief Хендл для задачи vTaskLedBlink
- */
- TaskHandle_t xTaskToKill;
- static void vTaskDebug(void *pvParameters);
- /**
- * @brief Разовая синхронизация времени при старте контроллера
- */
- TaskHandle_t xHandleSntpOnceSinhro = NULL;
- /**
- * @brief Задача инициализации. Запускает основные задачи девайса и умирает.
- * @retval
- */
- void InitTask(void *params)
- {
- // -----------------------------------------------------------------------------
- // xTaskCreate(vTaskWdt, "WDT", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
- // -----------------------------------------------------------------------------
- //InitUSART();
- ups_megatec_init();
- // -----------------------------------------------------------------------------
- // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
- //SETTINGS_SetDefaultDebug();
- //SETTINGS_Save();
- SETTINGS_Load();
- set_mode_jumper();
- // -----------------------------------------------------------------------------
-
- // -----------------------------------------------------------------------------
- #ifdef USART_DEBUG_ENABLE
- InitUSART();
- // MICRORL_Init();
- #endif
- // -----------------------------------------------------------------------------
- // -----------------------------------------------------------------------------
- #ifdef LED_ENABLE
- LED_Init();
- /* Простая мигалка для подтверждения живучести контроллера */
- xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);//&xTaskToKill
- #endif
- // -----------------------------------------------------------------------------
-
- // -----------------------------------------------------------------------------
- #ifdef BUTTON_ENABLE
- BUTTON_Init();
- xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
- #endif
- // -----------------------------------------------------------------------------
-
- //xTaskCreate( d_inouts_task, "inouts_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
- // xTaskCreate( d_inouts_test, "d_inouts_test", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
- // -----------------------------------------------------------------------------
- #ifdef RTC_ENABLE
- TM_RTC_Init(TM_RTC_ClockSource_External); // Так было
- // TM_RTC_Init(TM_RTC_ClockSource_Internal); // TODO Уточнить источинк тактирования
- #endif
- // -----------------------------------------------------------------------------
-
- /* UDP for net settings */
- //UDP_netsetting_init();
- // -----------------------------------------------------------------------------
- #ifdef UPS_ENABLE
- /* UPS_Init();
- xTaskCreate(UPS_TaskParsing, "UPS_Parsing", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
- xTaskCreate(UPS_TaskState, "UPS_State", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/
- 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();
- #endif
-
- #ifdef SNMP_ENABLE
- SNMP_Init();
-
- xTaskCreate(SNMP_SysUpTimeTask, "snmpSysUpTime", configMINIMAL_STACK_SIZE,
- NULL, tskIDLE_PRIORITY, NULL);
-
- xTaskCreate(snmp_trap_tread, "snmpTrapTest", 3*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
- // -----------------------------------------------------------------------------
- /* xTaskCreate(vTaskTesting, "Testing", configMINIMAL_STACK_SIZE,
- NULL, tskIDLE_PRIORITY, NULL);*/
-
- //TEST_InitRS485();
- //TEST_IO();
-
- /* Контроль успешной загрузки. Сброс флага bootry */
- /* Сброс флага и сохранение нового значения во флеш памяти происходт после
- некоторой задержки для запуска всех задач */
- vTaskDelay(4000);
-
- SETTINGS_ResetBootTry();
-
- // Отправка трапа о перезагрузке в случае статического IP
- /* if (!dhcp)
- SNMP_SendUserTrap(DEVICE_REBOOTED);
-
- printf("Hello world\r\n");*/
-
- vTaskDelete(NULL);
- taskYIELD();
- }
- static void vTaskDebug(void *pvParameters)
- {
- char msg[700];
- for(;;)
- {
- vTaskList(msg);
- printf(msg);
- printf("\n\r\r\n");
- #if LWIP_STATS
- stats_display();
- printf("\r\n\r\n");
- #endif
- vTaskDelay(5000);
- }
- }
- /********************************* (C) РОТЕК **********************************/
|