#include "linux.h"
#include "net_stat.h"
#include "diskio.h"
+#include "bme.c"
#include "temphelper.h"
#include <dirent.h>
#include <ctype.h>
//eg 'full' 'on' 'off'
static char last_batt_charge_status[16];
+//eg 100 or -100
+static int last_battery_rate[MAX_BATTERY_COUNT];
+
//eg 35.5
static float last_battery_temp[MAX_BATTERY_COUNT];
case DBUS_HAL_BATTERY_VOLTS_CURRENT:
// '3600' - '4200'
snprintf(method,127,"GetProperty");
- args = "battery.voltage.current";
+ args = "battery.voltage.current"; //battery.reporting.current gets battery mA, not charge/discharge rate
snprintf(path,127,"/org/freedesktop/Hal/devices/bme");
snprintf(dest,127,"org.freedesktop.Hal");
message = dbus_message_new_method_call (dest,path,"org.freedesktop.Hal.Device",method);
idx = get_battery_idx(bat);
/* don't update battery too often */
- if (current_update_time - last_battery_time[idx] < 29.5) {
+/*
+ if (current_update_time - last_battery_time[idx] < 2) {
set_return_value(buffer, n, item, idx);
return;
}
+*/
last_battery_time[idx] = current_update_time;
else if (strncmp(buffer, "full", 4) == 0) {//no, it won't always be 100%. stupid dbus.
snprintf(last_battery_str[idx], sizeof(last_battery_str[idx])-1, "charged %i%%", remaining_capacity);
}
- last_battery_temp[idx] = temp;
+
+ struct bme_reply bmeInfo = getBattInfoFromBME();
+ NORM_ERR("at linux.c bme 3");
+ last_battery_temp[idx] = ((float)bmeInfo.battery_temperature) - 273.15f;
+ last_battery_rate[idx] = bmeInfo.battery_current;
+ //last_battery_temp[idx] = temp;
+ NORM_ERR("at linux.c bme 4");
}
set_return_value(buffer, n, item, idx);
}
case BATTERY_TEMP:
snprintf(buffer, n, "%3.1f", last_battery_temp[idx]); // temperature
break;
+ case BATTERY_RATE:
+ snprintf(buffer, n, "%i", last_battery_rate[idx]); // charge/discharge rate
+ break;
default:
fprintf (stderr, "invalid item type in set_return_value");
break;