static void battery_status_update(void) { int level = voltage_to_battery_level(battery_millivolts); #ifdef CURRENT_NORMAL /*don't try to estimate run or charge time without normal current defined*/ /* calculate estimated remaining running time */ #if CONFIG_CHARGING >= CHARGING_MONITOR if (charging_state()) { /* charging: remaining charging time */ powermgmt_est_runningtime_min = (100 - level)*battery_capacity*60 / 100 / (CURRENT_MAX_CHG - runcurrent()); } else #endif /* discharging: remaining running time */ if (battery_millivolts > percent_to_volt_discharge[0][0]) { /* linear extrapolation */ powermgmt_est_runningtime_min = (level + battery_percent)*60 * battery_capacity / 200 / runcurrent(); } if (0 > powermgmt_est_runningtime_min) { powermgmt_est_runningtime_min = 0; } #else powermgmt_est_runningtime_min=-1; #endif battery_percent = level; send_battery_level_event(); }
void battery_read_info(int *voltage, int *level) { int millivolts = battery_adc_voltage(); if (voltage) *voltage = millivolts; if (level) *level = voltage_to_battery_level(millivolts); }
void battery_read_info(int *voltage, int *level) { int millivolts = _battery_voltage(); int percent; if (voltage) *voltage = millivolts; if (level) { percent = voltage_to_battery_level(millivolts); if (percent < 0) percent = _battery_level(); *level = percent; } }