#include "batt_charge.h"

#include <stdio.h>
#include "esp_sleep.h"
#include "driver/gpio.h"
#include "LED.h"
#include "ulp_main.h"

#define GPIO_PIN GPIO_NUM_33

    extern void beep_blink(uint16_t ms,uint16_t count);


void  chargeing_gpio_isr_handler(void* arg) {

    printf("chargeing\r\n");
    // 在这里执行唤醒时需要处理的任务
    // ...
    //beep_blink(100,4);
    // 清除中断状态
    // uint32_t gpio_intr_status = READ_PERI_REG(GPIO_STATUS_REG);
    // WRITE_PERI_REG(GPIO_STATUS_W1TC_REG, gpio_intr_status);
}


void  charge_success_gpio_isr_handler(void* arg) {
    // 在这里执行唤醒时需要处理的任务
    // ...
  
    //printf("charge_success_gpio_isr_handler\r\n");

//beep_blink(100,3);
    // // 清除中断状态
    // uint32_t gpio_intr_status = READ_PERI_REG(GPIO_STATUS_REG);
    // WRITE_PERI_REG(GPIO_STATUS_W1TC_REG, gpio_intr_status);
}



void configure_gpio_interrupt() {

}

// void app_main() {
//     configure_gpio_interrupt();

//     while (1) {
//         // 进入Light Sleep模式
//         esp_sleep_enable_gpio_wakeup(); // 允许GPIO唤醒
//         esp_light_sleep_start(); // 进入Light Sleep模式
//     }
// }


void charge_init()
{
// #include "driver/rtc_io.h"
#if  0
    gpio_config_t io_conf;
    // 中断引脚配置
    io_conf.intr_type = GPIO_INTR_ANYEDGE; // 中断触发类型（上升沿/下降沿/任意边缘触发）
    io_conf.pin_bit_mask = ((1ULL << CHARGEING_GPIO)); // GPIO引脚
    io_conf.mode = GPIO_MODE_INPUT; // 输入模式
    io_conf.pull_up_en = GPIO_PULLUP_DISABLE; // 禁用上拉电阻
    io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; // 禁用下拉电阻
    gpio_config(&io_conf);

    // 安装GPIO中断处理程序
    gpio_install_isr_service(0);
    gpio_isr_handler_add(CHARGEING_GPIO, chargeing_gpio_isr_handler, (void*) CHARGEING_GPIO);
    //gpio_isr_handler_add(CHARGEING_GPIO, chargeing_gpio_isr_handler, (void*) CHARGE_SUCCESS_GPIO);
#else



    // ESP_ERROR_CHECK(rtc_gpio_init(CHARGEING_GPIO));
    // ESP_ERROR_CHECK(gpio_pullup_dis(CHARGEING_GPIO));
    // ESP_ERROR_CHECK(gpio_pulldown_dis(CHARGEING_GPIO));
    // ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(CHARGEING_GPIO, 0));



// ESP_ERROR_CHECK(rtc_gpio_init(CHARGE_SUCCESS_GPIO));
// ESP_ERROR_CHECK(gpio_pullup_dis(CHARGE_SUCCESS_GPIO));
// ESP_ERROR_CHECK(gpio_pulldown_dis(CHARGE_SUCCESS_GPIO));
// ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(CHARGE_SUCCESS_GPIO, 0));

//  uint32_t value = ulp_charge_is_success;
//  uint32_t value1 = ulp_charge_is_running;

#endif



}

void charge_deinit()
{


}