// #include "energy_manager.h"

// // 电量初始化，在main中上电时调用
// void Energy_Init(void)
// {
//     uint8_t energy_bytes[4];
//     float saved_energy = 0.0;
    
//     // 读取EEPROM保存的电量值
//     printf("Attempting to read energy from EEPROM...\r\n");
//     Inf_AT24C02_ReadBytes(ADDR, energy_bytes, 4);
    
//     // 打印原始字节
//     printf("EEPROM Raw Data: %02X %02X %02X %02X\r\n", 
//            energy_bytes[0], energy_bytes[1], energy_bytes[2], energy_bytes[3]);
    
//     // 转换为float并打印实际值
//     memcpy(&saved_energy, energy_bytes, sizeof(float));
//     printf("Raw float value: %.10f\r\n", saved_energy);
    
//     // 检查数据有效性
//     if(saved_energy >= 0.0f)  // 只检查非负值
//     {
//         base_energy = saved_energy;
//         analog_status[1] = saved_energy;
//         printf("Power On - Load Energy: %.6f KWH\r\n", base_energy);
//     }
//     else
//     {
//         printf("Invalid Energy Data (%.6f), Reset to 0\r\n", saved_energy);
//         base_energy = 0.0;
//         analog_status[1] = 0.0;
        
//         // 立即保存有效值0
//         uint8_t zero_bytes[4] = {0};
//         printf("Saving zero value to EEPROM...\r\n");
//         Inf_AT24C02_WriteBytes(ADDR, zero_bytes, 4);
//     }
// }

// // 电量管理，在main循环中调用
// void Energy_Management(void)
// {
//     static uint32_t last_save_time = 0;
//     static uint8_t power_down_flag = 0;
//     uint32_t current_time = HAL_GetTick();
    
//     // 打印当前时间
//     printf("Current Time: %lu ms\r\n", current_time);
    
//     // 改为1分钟保存一次 (60000ms = 1分钟)
//     if(current_time - last_save_time >= 60000)  // 原来是420000(7分钟)
//     {
//         printf("\r\nSaving energy to EEPROM...\r\n");  // 添加调试信息
//         uint8_t energy_bytes[4];
//         memcpy(energy_bytes, &base_energy, sizeof(float));
        
//         // 打印要保存的电量值
//         printf("Energy to save: %.6f KWH\r\n", base_energy);
        
//         Inf_AT24C02_WriteBytes(ADDR, energy_bytes, sizeof(float));
//         printf("1min Save: %.6f KWH\r\n", base_energy);
//         last_save_time = current_time;
//     }
    
//     // 断电保护
//     if(V < 100.0 && power_down_flag == 0)
//     {
//         printf("Voltage is low (V = %.2f), entering power down save mode.\r\n", V);
//         uint8_t energy_bytes[4];
//         memcpy(energy_bytes, &base_energy, sizeof(float));
        
//         // 打印要保存的电量值
//         printf("Energy to save during power down: %.6f KWH\r\n", base_energy);
        
//         Inf_AT24C02_WriteBytes(ADDR, energy_bytes, sizeof(float));
//         printf("Power Down Save: %.6f KWH\r\n", base_energy);
//         power_down_flag = 1;
//     }
//     else if(V >= 100.0)
//     {
//         printf("Voltage is normal (V = %.2f), resetting power down flag.\r\n", V);
//         power_down_flag = 0;
//     }
// }

