#include "bsp_led.h"
/* ѣLED_YEL- PB13 LED_GRN- PB14 LED_RED- PB15*/
/*  */

/* LEDʾƵ3״̬ */
/* LED״̬̬ƵYELGRNRED */
uint8_t LED_TIP[3] = {0,0,0};  //ʼƵƳ

void led_disp(uint8_t *LED_TIP)
    {
    // ڼ¼ǰ LED ״̬ʱ
    uint8_t temp = 0x00;
    // ʹþ̬¼֮ǰ LED ״̬ıжǷҪʾ
    static uint8_t temp_before = 0xff;  // ʼΪ 0һν뺯

    // ֻ LED_TIP ǰ3ԪأӦ PB13-PB15
    for (int i = 0; i < 3; i++)
        {
        // ǰԪصֵõ temp ĶӦλ
        if (LED_TIP[i] != 0) 
            { //  LED_TIP[i] Ϊ ()
            temp |= (1 << i); //  temp ĶӦλΪ 1
            } 
            else 
            { //  LED_TIP[i] Ϊ ()
            temp &= ~(1 << i); //  temp ĶӦλΪ 0
            }
        }

    // ǰ״̬֮ǰ״̬ͬʱ򣬲Ÿʾ
    if (temp != temp_before) 
        {
            if (temp & (1 << 0))
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
            }
            else
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);
            }

            if (temp & (1 << 1))
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
            }
            else
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
            }

            if (temp & (1 << 2))
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);
            }
            else
            {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);
            }

            temp_before = temp;    // ¼¼ľ״̬
        }
}
    
/* ƣled_proc() */
/* ãLED ʾ */
/*           ÿεled_proc()ʱLED  LED_TIP еֵǹر */
void led_proc(void)
{
    //  LED ״̬Ϊر
    LED_TIP[0] = 1;  // Ƶ
    LED_TIP[1] = 1;  // ̵
    LED_TIP[2] = 1;  //    
    
    // ݵǰ״̬ LED ״̬
    if (currentStatus == NO_PERSON) {
        LED_TIP[0] = 0;  // ״̬Ƶ
    }
    else if (currentStatus == PERSON_PRESENT) {
        LED_TIP[1] = 0;  // ״̵̬
    }
    if(BEEP_state == 1)
    {
        LED_TIP[2] = 0;  
    }
    else
    {
        LED_TIP[2] = 1;  // ״̬
    }
    //ʾǰ Led_Pos λõ LED ״̬
    led_disp(LED_TIP);

    
}
