X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fsmapi.c;h=e6893b427a014d7357798f6643e7a8b659fe8fec;hb=8264fbe05e119a10711d7377d18f38b2cf1f956a;hp=aa2ea2fda93916ce60c5ce29bad698c5cb2af98f;hpb=09c0bccf55cd42fc27ffb234bda7c65b04e3dd60;p=monky diff --git a/src/smapi.c b/src/smapi.c index aa2ea2f..e6893b4 100644 --- a/src/smapi.c +++ b/src/smapi.c @@ -24,6 +24,7 @@ #define _GNU_SOURCE #include "conky.h" /* text_buffer_size, PACKAGE_NAME, maybe more */ #include "smapi.h" +#include "temphelper.h" #include "logging.h" #include #include @@ -124,3 +125,62 @@ char *smapi_get_val(const char *args) return smapi_get_str(str); } + +void print_smapi(struct text_object *obj, char *p, int p_max_size) +{ + char *s; + + if (!obj->data.s) + return; + + s = smapi_get_val(obj->data.s); + snprintf(p, p_max_size, "%s", s); + free(s); +} + +void print_smapi_bat_perc(struct text_object *obj, char *p, int p_max_size) +{ + int idx, val; + if (obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) { + val = smapi_bat_installed(idx) ? + smapi_get_bat_int(idx, "remaining_percent") : 0; + percent_print(p, p_max_size, val); + } else + NORM_ERR("argument to smapi_bat_perc must be an integer"); +} + +void print_smapi_bat_temp(struct text_object *obj, char *p, int p_max_size) +{ + int idx, val; + if (obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) { + val = smapi_bat_installed(idx) ? + smapi_get_bat_int(idx, "temperature") : 0; + /* temperature is in milli degree celsius */ + temp_print(p, p_max_size, val / 1000, TEMP_CELSIUS); + } else + NORM_ERR("argument to smapi_bat_temp must be an integer"); +} + +void print_smapi_bat_power(struct text_object *obj, char *p, int p_max_size) +{ + int idx, val; + if (obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) { + val = smapi_bat_installed(idx) ? + smapi_get_bat_int(idx, "power_now") : 0; + /* power_now is in mW, set to W with one digit precision */ + snprintf(p, p_max_size, "%.1f", ((double)val / 1000)); + } else + NORM_ERR("argument to smapi_bat_power must be an integer"); +} + +void print_smapi_bat_bar(struct text_object *obj, char *p, int p_max_size) +{ + if (!p_max_size) + return; + + if (obj->data.i >= 0 && smapi_bat_installed(obj->data.i)) + new_bar(obj, p, p_max_size, (int) + (255 * smapi_get_bat_int(obj->data.i, "remaining_percent") / 100)); + else + new_bar(obj, p, p_max_size, 0); +}