X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flibpsensor_json%2Fpsensor_json.c;h=5d5889dfc023abf9ecf170bb3b1bed2f0c1820d6;hb=e99f993d7ab18a6ea62d876da38c678ece82a599;hp=12bd3baf8c121578b2f749864cfe2f48c75d8acf;hpb=cde76fd1723bbdad164adac96d105111b831bf50;p=psensor.git diff --git a/src/libpsensor_json/psensor_json.c b/src/libpsensor_json/psensor_json.c index 12bd3ba..5d5889d 100644 --- a/src/libpsensor_json/psensor_json.c +++ b/src/libpsensor_json/psensor_json.c @@ -27,15 +27,47 @@ #define ATT_SENSOR_MIN "min" #define ATT_SENSOR_MAX "max" #define ATT_SENSOR_LAST_MEASURE "last_measure" +#define ATT_SENSOR_MEASURES "measures" #define ATT_MEASURE_VALUE "value" #define ATT_MEASURE_TIME "time" +static json_object * +measure_to_json_object(struct measure *m) +{ + json_object *o = json_object_new_object(); + + json_object_object_add(o, + ATT_MEASURE_VALUE, + json_object_new_double(m->value.d_num)); + json_object_object_add(o, ATT_MEASURE_TIME, + json_object_new_int((m->time).tv_sec)); + return o; +} + +static json_object * +measures_to_json_object(struct psensor *s) +{ + json_object *o; + int i; + + o = json_object_new_array(); + + for (i = 0; i < s->values_max_length; i++) + if (s->measures[i].time.tv_sec) + json_object_array_add + (o, measure_to_json_object(&s->measures[i])); + + + return o; +} + json_object *sensor_to_json_object(struct psensor *s) { - json_object *mo; - json_object *obj = json_object_new_object(); + json_object *mo, *obj; struct measure *m; + obj = json_object_new_object(); + json_object_object_add(obj, ATT_SENSOR_ID, json_object_new_string(s->id)); @@ -48,12 +80,15 @@ json_object *sensor_to_json_object(struct psensor *s) ATT_SENSOR_MIN, json_object_new_double(s->min)); json_object_object_add(obj, ATT_SENSOR_MAX, json_object_new_double(s->max)); + json_object_object_add(obj, + ATT_SENSOR_MEASURES, + measures_to_json_object(s)); m = psensor_get_current_measure(s); mo = json_object_new_object(); json_object_object_add(mo, ATT_MEASURE_VALUE, - json_object_new_double(m->value)); + json_object_new_double(m->value.d_num)); json_object_object_add(mo, ATT_MEASURE_TIME, json_object_new_int((m->time).tv_sec)); json_object_object_add(obj, ATT_SENSOR_LAST_MEASURE, mo); @@ -77,7 +112,6 @@ char *sensors_to_json_string(struct psensor **sensors) { struct psensor **sensors_cur; char *str; - json_object *obj = json_object_new_array(); sensors_cur = sensors;