33
33
static DBusGProxy *dbus_proxy_stats = NULL;
34
34
static DBusGProxy *dbus_proxy_battery = NULL;
36
static void on_battery_changed(DBusGProxy *proxy, gboolean onBattery, gpointer data);
37
39
gboolean cd_powermanager_find_battery (void)
86
88
myData.iCapacity = atoi (str2);
87
g_print ("Design capacity : %d mWsh\n", myData.iCapacity);
89
cd_debug ("Design capacity : %d mWsh\n", myData.iCapacity);
90
92
gchar *str3 = strchr (str2, ':');
94
96
myData.iCapacity = atoi (str3);
95
g_print ("Last full capacity : %d mWsh\n", myData.iCapacity);
97
cd_debug ("Last full capacity : %d mWsh\n", myData.iCapacity);
100
g_print ("cette batterie (%s) n'est pas presente.\n", cBatteryName);
102
cd_debug ("cette batterie (%s) n'est pas presente.\n", cBatteryName);
115
if (cairo_dock_bdus_is_enabled ())
117
if (cairo_dock_dbus_is_enabled ())
117
119
dbus_proxy_power = cairo_dock_create_new_session_proxy (
118
120
"org.freedesktop.PowerManagement",
134
136
dbus_g_proxy_connect_signal(dbus_proxy_power, "OnBatteryChanged",
135
137
G_CALLBACK(on_battery_changed), NULL, NULL);
136
g_print ("connected to OnBatteryChanged\n");
138
cd_debug ("connected to OnBatteryChanged\n");
138
140
/*gboolean bBatteryFound = cd_powermanager_find_battery();
139
141
if (! bBatteryFound) // on n'a pas trouve de batterie nous-meme.
193
void on_battery_changed(DBusGProxy *proxy, gboolean onBattery, gpointer data)
195
static void on_battery_changed(DBusGProxy *proxy, gboolean onBattery, gpointer data)
196
g_print ("Dbus : battery changed\n");
198
cd_debug ("Dbus : battery changed\n");
197
199
if (myData.on_battery != onBattery)
230
static int get_stats(const gchar *dataType) // code repris de Gnome-power-manager.
232
if (dbus_proxy_stats == NULL)
233
dbus_proxy_stats = cairo_dock_create_new_session_proxy (
234
"org.freedesktop.PowerManagement",
235
"/org/freedesktop/PowerManagement/Statistics",
236
"org.freedesktop.PowerManagement.Statistics"
238
g_return_val_if_fail (dbus_proxy_stats != NULL, 0);
242
GPtrArray *ptrarray = NULL;
243
GType g_type_ptrarray;
245
int x, y=0, col; /// mettre des nom comprehensibles...
248
g_type_ptrarray = dbus_g_type_get_collection ("GPtrArray",
249
dbus_g_type_get_struct("GValueArray",
255
dbus_g_proxy_call (dbus_proxy_stats, "GetData", NULL,
257
G_TYPE_STRING, dataType,
259
g_type_ptrarray, &ptrarray,
261
g_return_val_if_fail (ptrarray != NULL, 0);
263
for (i=0; i< ptrarray->len; i++) /// il semble que seule la derniere valeur ait de l'interet ....
265
gva = (GValueArray *) g_ptr_array_index (ptrarray, i);
266
gv = g_value_array_get_nth (gva, 0);
267
x = g_value_get_int (gv);
269
gv = g_value_array_get_nth (gva, 1);
270
y = g_value_get_int (gv);
272
gv = g_value_array_get_nth (gva, 2);
273
col = g_value_get_int (gv);
275
g_value_array_free (gva);
277
g_ptr_array_free (ptrarray, TRUE);
279
cd_message ("PowerManager [%s]: %d", dataType, y);
280
return y; /// a quoi servent x et col alors ??
227
282
gboolean update_stats(void)
268
323
// on remet a zero l'historique.
269
g_print ("la batterie a ete connectee\n");
324
cd_debug ("la batterie a ete connectee\n");
270
325
myData.previous_battery_time = 0;
271
326
myData.previous_battery_charge = 0;
390
445
myData.fDischargeMeanRate = (myData.fDischargeMeanRate * myData.iNbDischargeMeasures + fPresentRate) / (myData.iNbDischargeMeasures + 1);
391
446
myData.iNbDischargeMeasures ++;
392
g_print ("fDischargeMeanRate : %.2f (%d)\n", myData.fDischargeMeanRate, myData.iNbDischargeMeasures);
447
cd_debug ("fDischargeMeanRate : %.2f (%d)\n", myData.fDischargeMeanRate, myData.iNbDischargeMeasures);
394
449
if (fabs (myData.fLastDischargeMeanRate - myData.fDischargeMeanRate) > 30)
404
459
myData.fChargeMeanRate = (myData.fChargeMeanRate * myData.iNbChargeMeasures + fPresentRate) / (myData.iNbChargeMeasures + 1);
405
460
myData.iNbChargeMeasures ++;
406
g_print ("fChargeMeanRate : %.2f (%d)\n", myData.fChargeMeanRate, myData.iNbChargeMeasures);
461
cd_debug ("fChargeMeanRate : %.2f (%d)\n", myData.fChargeMeanRate, myData.iNbChargeMeasures);
407
462
if (fabs (myData.fLastChargeMeanRate - myData.fChargeMeanRate) > 30)
409
464
myData.fLastChargeMeanRate = myData.fChargeMeanRate;
416
471
else if (myData.on_battery || myData.battery_charge < 99.9)
418
g_print ("no rate, using last know values : %.2f ; %.2f\n", myConfig.fLastDischargeMeanRate, myConfig.fLastChargeMeanRate);
473
cd_debug ("no rate, using last know values : %.2f ; %.2f\n", myConfig.fLastDischargeMeanRate, myConfig.fLastChargeMeanRate);
419
474
fPresentRate = (myData.on_battery ? myConfig.fLastDischargeMeanRate : myConfig.fLastChargeMeanRate);
454
int get_stats(gchar *dataType) // code repris de Gnome-power-manager.
456
if (dbus_proxy_stats == NULL)
457
dbus_proxy_stats = cairo_dock_create_new_session_proxy (
458
"org.freedesktop.PowerManagement",
459
"/org/freedesktop/PowerManagement/Statistics",
460
"org.freedesktop.PowerManagement.Statistics"
462
g_return_val_if_fail (dbus_proxy_stats != NULL, 0);
466
GPtrArray *ptrarray = NULL;
467
GType g_type_ptrarray;
469
int x, y, col; /// mettre des nom comprehensibles...
472
g_type_ptrarray = dbus_g_type_get_collection ("GPtrArray",
473
dbus_g_type_get_struct("GValueArray",
479
dbus_g_proxy_call (dbus_proxy_stats, "GetData", NULL,
481
G_TYPE_STRING, dataType,
483
g_type_ptrarray, &ptrarray,
485
g_return_val_if_fail (ptrarray != NULL, 0);
487
for (i=0; i< ptrarray->len; i++) /// il semble que seule la derniere valeur ait de l'interet ....
489
gva = (GValueArray *) g_ptr_array_index (ptrarray, i);
490
gv = g_value_array_get_nth (gva, 0);
491
x = g_value_get_int (gv);
493
gv = g_value_array_get_nth (gva, 1);
494
y = g_value_get_int (gv);
496
gv = g_value_array_get_nth (gva, 2);
497
col = g_value_get_int (gv);
499
g_value_array_free (gva);
501
g_ptr_array_free (ptrarray, TRUE);
503
cd_message ("PowerManager [%s]: %d", dataType, y);
504
return y; /// a quoi servent x et col alors ??
507
509
/**void detect_battery(void)
509
511
if (dbus_proxy_battery != NULL)