X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fsmapi.c;h=e6893b427a014d7357798f6643e7a8b659fe8fec;hb=13188c8b110a8cc94f43bc6c5a37b073e3b78430;hp=5ff8dd0595708555e259382f9f7e5900042caa45;hpb=d97cd93a1c2eb18a697aa1e3c59e03eeabdc454d;p=monky diff --git a/src/smapi.c b/src/smapi.c index 5ff8dd0..e6893b4 100644 --- a/src/smapi.c +++ b/src/smapi.c @@ -1,4 +1,7 @@ -/* smapi.c: conky support for IBM Thinkpad smapi +/* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*- + * vim: ts=4 sw=4 noet ai cindent syntax=c + * + * smapi.c: conky support for IBM Thinkpad smapi * * Copyright (C) 2007 Phil Sutter * @@ -17,12 +20,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA. * - * vim: ts=4 sw=4 noet ai cindent syntax=c - * */ #define _GNU_SOURCE #include "conky.h" /* text_buffer_size, PACKAGE_NAME, maybe more */ #include "smapi.h" +#include "temphelper.h" #include "logging.h" #include #include @@ -101,7 +103,7 @@ char *smapi_get_bat_val(const char *args) if(sscanf(args, "%i %n", &idx, &cnt) <= 0 || snprintf(fname, 127, "%s", (args + cnt)) < 0) { - ERR("smapi: wrong arguments, should be 'bat,,'"); + NORM_ERR("smapi: wrong arguments, should be 'bat,,'"); return NULL; } @@ -123,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); +}