/*
 * @Description:
 * @Author: yangsw
 * @Date: 2021-06-28 14:21:42
 * @LastEditTime: 2024-01-12 11:31:17
 * @LastEditors: LiDa
 * @Reference:
 */
#include "svc_led.h"
#include "../../log/svc/svc_log.h"
#include "../../timer/svc/svc_timer.h"
S_Led_Inv s_led_inv;
void Svc_Led_Init()
{
#if LOG_FUNC_ENABLE
	Svc_Log_Printf(LOG_DEBUG, "%s \r\n", __FUNCTION__);
#endif
	Bsp_Led_Init();
	Bsp_Led_Set_State(E_LED_RED, E_Gpio_Set);
	Bsp_Led_Set_State(E_LED_GREEN, E_Gpio_Reset);
	// HW_Delay_ms(500);
	Svc_Com_Delay_Ms(1000, 64);
	Bsp_Led_Set_State(E_LED_RED, E_Gpio_Reset);
	Svc_Com_Delay_Ms(1000, 64);
	Bsp_Led_Set_State(E_LED_RED, E_Gpio_Set);
	Bsp_Led_Set_State(E_LED_GREEN, E_Gpio_Set);
}

// fre 闪烁频率 fre=0xff为常亮  fre=0x00为灭  fre1~255为100ms*fre闪烁即0。1*fre

void Svc_Led_Set_Statu(E_Led e_led, gw_u8 loadfre)
{
	s_led_inv.s_led[e_led].loadfre = loadfre;
}

void Svc_Led_Set(E_Led e_led, E_Led_Set e_led_set)
{
	if (e_led_set == E_LED_ON)
	{
		Bsp_Led_Set_State(e_led, E_Gpio_Reset);
	}
	else
	{
		Bsp_Led_Set_State(e_led, E_Gpio_Set);
	}
}

void Svc_Led_Off_All()
{
	gw_u8 i;
	for (i = 0; i < LED_NUM; i++)
	{
		Svc_Led_Set((E_Led)i, E_LED_OFF);
		Svc_Led_Set_Statu((E_Led)i, 0);
	}
}

void Led_Tog(E_Led e_led)
{
	if (Bsp_Led_Get_State(e_led) == E_Gpio_Set)
	{
		Bsp_Led_Set_State(e_led, E_Gpio_Reset);
	}
	else
	{
		Bsp_Led_Set_State(e_led, E_Gpio_Set);
	}
}

/**
 * @name: 0xFF灭0x00亮
 * @return {*}
 * @note:
 */
void Svc_Led_It()
{
	gw_u8 i;
	for (i = 0; i < LED_NUM; i++)
	{
		s_led_inv.s_led[i].cnt++;
		if (s_led_inv.s_led[i].cnt > s_led_inv.s_led[i].fre && s_led_inv.s_led[i].fre > 0x00 && s_led_inv.s_led[i].fre < 0xff)
		{
			s_led_inv.s_led[i].cnt = 0;
			if (s_led_inv.s_led[i].loadfre == 0x00)
			{
				s_led_inv.s_led[i].fre = s_led_inv.s_led[i].loadfre;
				Svc_Led_Set((E_Led)i, E_LED_OFF);
			}
			else if (s_led_inv.s_led[i].loadfre == 0xff)
			{
				s_led_inv.s_led[i].fre = s_led_inv.s_led[i].loadfre;
				Svc_Led_Set((E_Led)i, E_LED_ON);
			}
			else
			{
				Led_Tog((E_Led)i);
				s_led_inv.s_led[i].fre = s_led_inv.s_led[i].loadfre;
			}
		}
		else if (s_led_inv.s_led[i].fre == 0x00)
		{
			if (s_led_inv.s_led[i].loadfre == 0xff)
			{
				Svc_Led_Set((E_Led)i, E_LED_ON);
			}
			else
			{
				Svc_Led_Set((E_Led)i, E_LED_OFF);
			}
			s_led_inv.s_led[i].fre = s_led_inv.s_led[i].loadfre;
			s_led_inv.s_led[i].cnt = 0;
		}
		else if (s_led_inv.s_led[i].fre == 0xff)
		{
			if (s_led_inv.s_led[i].loadfre == 0x00)
			{
				Svc_Led_Set((E_Led)i, E_LED_OFF);
			}
			else
			{
				Svc_Led_Set((E_Led)i, E_LED_ON);
			}
			s_led_inv.s_led[i].fre = s_led_inv.s_led[i].loadfre;
			s_led_inv.s_led[i].cnt = 0;
		}
	}
}

void Svc_Led_Para_Reload(void)
{
	Svc_Led_Set_Statu(E_LED_RED, 10);
}

void Svc_Led_Alarm(void)
{
	Svc_Led_Set_Statu(E_LED_RED, 30);
}

void Svc_Led_Net_Ok(void)
{
	Svc_Led_Set_Statu(E_LED_RED, 0xff);
}
