static int battery_monitor_core( bool is_sleep ) // ---------------------------------------------------------------------------- // Description : // Input Argument : // Return Value : { int charging_time; /*Monitoring the system temperature*/ if ( sec_bci.battery.monitor_field_temp ) { if ( sec_bci.battery.support_monitor_timeout ) { /*Check charging time*/ charging_time = get_elapsed_time_secs( &sec_bci.charger.charge_start_time ); if ( charging_time >= sec_bci.charger.charging_timeout ) { if ( is_sleep ) sec_bci.charger.full_charge_dur_sleep = 0x2; else _battery_state_change_( STATUS_CATEGORY_CHARGING, POWER_SUPPLY_STATUS_CHARGING_OVERTIME, is_sleep ); return -1; } } if ( sec_bci.battery.support_monitor_temp ) { if ( sec_bci.battery.battery_health == POWER_SUPPLY_HEALTH_OVERHEAT || sec_bci.battery.battery_health == POWER_SUPPLY_HEALTH_COLD ) { if ( sec_bci.battery.battery_temp <= CHARGE_RECOVER_TEMPERATURE_MAX && sec_bci.battery.battery_temp >= CHARGE_RECOVER_TEMPERATURE_MIN ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_GOOD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_NORMAL, is_sleep ); } } else { if ( sec_bci.battery.monitor_duration > MONITOR_TEMP_DURATION ) sec_bci.battery.monitor_duration = MONITOR_TEMP_DURATION; if ( sec_bci.battery.battery_temp >= CHARGE_STOP_TEMPERATURE_MAX ) { if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_OVERHEAT ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_OVERHEAT; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_HIGH, is_sleep ); } } else if ( sec_bci.battery.battery_temp <= CHARGE_STOP_TEMPERATURE_MIN ) { if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_COLD ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_COLD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_LOW, is_sleep ); } } else { if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_GOOD ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_GOOD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_NORMAL, is_sleep ); } } } } } /*Monitoring the battery level for Re-charging*/ if ( sec_bci.battery.monitor_field_rechg_vol ) { if ( sec_bci.battery.monitor_duration > MONITOR_RECHG_VOL_DURATION ) sec_bci.battery.monitor_duration = MONITOR_RECHG_VOL_DURATION; if ( sec_bci.battery.battery_level_vol <= 4100 ) { sec_bci.battery.confirm_recharge++; if ( sec_bci.battery.confirm_recharge >= 2 ) { printk( "[TA] RE-charging vol\n" ); sec_bci.battery.confirm_recharge = 0; _battery_state_change_( STATUS_CATEGORY_CHARGING, POWER_SUPPLY_STATUS_RECHARGING_FOR_FULL, is_sleep ); } } else sec_bci.battery.confirm_recharge = 0; } return 0; }
static int battery_monitor_core( bool is_sleep ) { int charging_time; int rechg_voltage; if(event_logging) { stop_temperature_overheat = CHARGE_STOP_TEMPERATURE_EVENT; recover_temperature_overheat = CHARGE_RECOVER_TEMPERATURE_EVENT; } else { stop_temperature_overheat = CHARGE_STOP_TEMPERATURE_MAX; recover_temperature_overheat = CHARGE_RECOVER_TEMPERATURE_MAX; } /*Monitoring the system temperature*/ if ( sec_bci.battery.monitor_field_temp ) { if ( sec_bci.battery.support_monitor_timeout ) { /*Check charging time*/ charging_time = get_elapsed_time_secs( &sec_bci.charger.charge_start_time ); if ( charging_time >= sec_bci.charger.charging_timeout ) { if ( is_sleep ) sec_bci.charger.full_charge_dur_sleep = 0x2; else _battery_state_change_( STATUS_CATEGORY_CHARGING, POWER_SUPPLY_STATUS_CHARGING_OVERTIME, is_sleep ); return -1; } } if ( sec_bci.battery.support_monitor_temp ) { if ( sec_bci.battery.battery_health == POWER_SUPPLY_HEALTH_OVERHEAT || sec_bci.battery.battery_health == POWER_SUPPLY_HEALTH_COLD ) { if ( sec_bci.battery.battery_temp <= recover_temperature_overheat //CHARGE_RECOVER_TEMPERATURE_MAX && sec_bci.battery.battery_temp >= CHARGE_RECOVER_TEMPERATURE_MIN ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_GOOD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_NORMAL, is_sleep ); } } else { if ( sec_bci.battery.monitor_duration > MONITOR_TEMP_DURATION ) sec_bci.battery.monitor_duration = MONITOR_TEMP_DURATION; if ( sec_bci.battery.battery_temp >= stop_temperature_overheat) //CHARGE_STOP_TEMPERATURE_MAX ) { printk("[TA] Temperature is high (%d*)\n", sec_bci.battery.battery_temp); if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_OVERHEAT ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_OVERHEAT; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_HIGH, is_sleep ); } } else if ( sec_bci.battery.battery_temp <= CHARGE_STOP_TEMPERATURE_MIN ) { printk("[TA] Temperature is low (%d*)\n", sec_bci.battery.battery_temp); if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_COLD ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_COLD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_LOW, is_sleep ); } } else { if ( sec_bci.battery.battery_health != POWER_SUPPLY_HEALTH_GOOD ) { sec_bci.battery.battery_health = POWER_SUPPLY_HEALTH_GOOD; _battery_state_change_( STATUS_CATEGORY_TEMP, BATTERY_TEMPERATURE_NORMAL, is_sleep ); } } } } } /*Monitoring the battery level for Re-charging*/ if ( sec_bci.battery.monitor_field_rechg_vol && (sec_bci.charger.rechg_count <= 0 || is_sleep)) { if ( sec_bci.battery.monitor_duration > MONITOR_RECHG_VOL_DURATION ) sec_bci.battery.monitor_duration = MONITOR_RECHG_VOL_DURATION; if(sec_bootmode == 5) // offmode charging rechg_voltage = CHARGE_RECHG_VOLTAGE_OFFMODE; else rechg_voltage = CHARGE_RECHG_VOLTAGE; if (sec_bci.battery.battery_level_vol <= rechg_voltage ) { sec_bci.battery.confirm_recharge++; if ( sec_bci.battery.confirm_recharge >= 2 ) { printk( "[BM] RE-charging vol rechg_voltage = %d\n", rechg_voltage); sec_bci.battery.confirm_recharge = 0; _battery_state_change_( STATUS_CATEGORY_CHARGING, POWER_SUPPLY_STATUS_RECHARGING_FOR_FULL, is_sleep ); } } else { sec_bci.battery.confirm_recharge = 0; } } return 0; }