Currently iio-monitor supports temperature and voltage values only. Everything else is treated like a voltage. Add support for common values like current and power. Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> --- examples/iio-monitor.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/examples/iio-monitor.c b/examples/iio-monitor.c index 558c0f33a36ef7b9..b508049fdb5dfc3f 100644 --- a/examples/iio-monitor.c +++ b/examples/iio-monitor.c @@ -93,6 +93,29 @@ static double get_channel_value(struct iio_channel *chn) return val / 1000.0; } +static struct { + const char *id; + const char *unit; +} map[] = { + { "current", "A" }, + { "power", "W" }, + { "temp", "°C" }, + { "voltage", "V" }, + { 0, }, +}; + +static const char *id_to_unit(const char *id) +{ + unsigned int i; + + for (i = 0; map[i].id; i++) { + if (!strncmp(id, map[i].id, strlen(map[i].id))) + return map[i].unit; + } + + return ""; +} + static void * read_thd(void *d) { struct iio_context *ctx = d; @@ -131,7 +154,7 @@ static void * read_thd(void *d) nb_channels = iio_device_get_channels_count(dev); for (i = 0; i < nb_channels; i++) { const char *id; - bool is_temp = false; + const char *unit; struct iio_channel *chn = iio_device_get_channel(dev, i); if (!is_valid_channel(chn)) @@ -142,7 +165,7 @@ static void * read_thd(void *d) id = iio_channel_get_id(chn); if (!name) name = id; - is_temp = !strncmp(id, "temp", 4); + unit = id_to_unit(id); sprintf(buf, "</%u></B>%s<!B><!%u>", BLUE, name, BLUE); @@ -152,8 +175,8 @@ static void * read_thd(void *d) freeChtype(str); sprintf(buf, "</%u></B>%.3lf %s<!B><!%u>", - YELLOW, get_channel_value(chn), - is_temp ? "°C" : "V", YELLOW); + YELLOW, get_channel_value(chn), unit, + YELLOW); str = char2Chtype(buf, &len, &align); writeChtype(right, col / 2, line++, str, HORIZONTAL, 0, len); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html