| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | 
							- /********************************* (C) РОТЕК ***********************************
 
-  * @module  led
 
-  * @file    led.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 "led.h"
 
- #include "megatec.h"
 
- #include "FreeRTOS.h"
 
- #include "task.h"
 
- #define LEDS_EXPAND_OFF(id, ...) 		\
 
- 		LED_Off(id);
 
- #define LED_ALL_OFF() \
 
- 	LEDS(LEDS_EXPAND_OFF) \
 
- uint16_t statusLedFreq = 1000; // Определяет частоту мигания STATUS LED
 
- LED_STATE_t sLedInt = {GREEN, TOGGLE_OFF};
 
- LED_STATE_t ledIntTemporary = {GREEN, TOGGLE_OFF};
 
- /**
 
-   * @brief
 
-   * @retval
 
-   */
 
- void LED_Init(void)
 
- {
 
-     LED_ALL_OFF();
 
- }
 
- /**
 
-   * @brief  Задача простой мигалки
 
-   */
 
- void vTaskLedBlink(void *arg)
 
- {
 
-     uint8_t start_status = 0;
 
-     uint8_t start_status_old = 0;
 
-     start_status = (UPS.Status >> 7) & 0x01;
 
-     for (;;) {
 
-         start_status = (UPS.Status >> 7) & 0x01;
 
-         /* Просто отражает состояние контроллера - "живой" */
 
-         if ((UPS.Status >> 7) & 0x01) {
 
-             if (start_status_old != start_status) {
 
- #ifdef LED_INIT_OK
 
-                 LED_Off(LED_INIT_OK);
 
- #endif
 
-             }
 
- #ifdef LED_INIT_OK
 
-             LED_Toggle(LED_INIT_OK);
 
- #endif
 
- #ifdef LED_INIT_ERR
 
-             LED_Toggle(LED_INIT_ERR);
 
- #endif
 
-         } else {
 
-             if (start_status_old != start_status) {
 
- #ifdef LED_INIT_ERR
 
-                 LED_Off(LED_INIT_ERR);
 
- #endif
 
-             }
 
- #ifdef LED_INIT_OK
 
-             LED_Toggle(LED_INIT_OK);
 
- #endif
 
-         }
 
-         start_status_old = start_status;
 
-         vTaskDelay(statusLedFreq);
 
-     }
 
- }
 
- /**
 
-   * @brief
 
-   */
 
- void LED_AddStateInt(COLOR_t color, TOGGLE_t toggle)
 
- {
 
-     //sLedInt.toggle = toggle;
 
-     if ((sLedInt.color == GREEN) && (toggle == TOGGLE_ON)) {
 
-         sLedInt.toggle = toggle;
 
-     }
 
-     switch (color) {
 
-         /* Зеленый не перебивает никакой цвет */
 
-         case GREEN :
 
-             break;
 
-         /* Красный перебивает все цвета и останавливет мигание*/
 
-         case RED :
 
-             sLedInt.color = RED;
 
-             sLedInt.toggle = TOGGLE_OFF;
 
-             break;
 
-         /* Желтый перебивает только зеленый и останавливает мигание*/
 
-         case YELLOW :
 
-             if (sLedInt.color != RED) {
 
-                 sLedInt.color = YELLOW;
 
-                 sLedInt.toggle = TOGGLE_OFF;
 
-             }
 
-             break;
 
-         default :
 
-             break;
 
-     }
 
- }
 
- /**
 
-   * @brief
 
-   */
 
- void LED_On(gpio_t pin)
 
- {
 
-     gpio_set(pin, 1);
 
- }
 
- /**
 
-   * @brief
 
-   */
 
- void LED_Off(gpio_t pin)
 
- {
 
-     gpio_set(pin, 0);
 
- }
 
- /**
 
-   * @brief  Изменить состояние LED
 
-   */
 
- void LED_Toggle(gpio_t pin)
 
- {
 
-     gpio_invert_output(pin);
 
- }
 
- /**
 
-   * @brief
 
-   */
 
- void LED_SetStatusLedFreq(uint16_t freq)
 
- {
 
-     statusLedFreq = freq;
 
- }
 
- /********************************* (C) РОТЕК **********************************/
 
 
  |