projects
/
psensor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed formating
[psensor.git]
/
src
/
rsensor.c
diff --git
a/src/rsensor.c
b/src/rsensor.c
index
e328da9
..
ad52ac4
100644
(file)
--- a/
src/rsensor.c
+++ b/
src/rsensor.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 2010-201
1
jeanfi@gmail.com
+ * Copyright (C) 2010-201
4
jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@
-26,10
+26,10
@@
#include <curl/curl.h>
#include <curl/curl.h>
-#include
"psensor_json.h"
-#include
"rsensor.h"
-#include
"server/server.h"
-#include
"url.h"
+#include
<psensor_json.h>
+#include
<rsensor.h>
+#include
<server/server.h>
+#include
<url.h>
struct ucontent {
char *data;
struct ucontent {
char *data;
@@
-38,6
+38,13
@@
struct ucontent {
static CURL *curl;
static CURL *curl;
+static const char *PROVIDER_NAME = "rsensor";
+
+static const char *get_url(struct psensor *s)
+{
+ return (char *)s->provider_data;
+}
+
static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp)
{
size_t realsize;
static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp)
{
size_t realsize;
@@
-55,29
+62,29
@@
static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp)
return realsize;
}
return realsize;
}
-static char *create_api_1_
0
_sensors_url(const char *base_url)
+static char *create_api_1_
1
_sensors_url(const char *base_url)
{
char *nurl, *ret;
int n;
nurl = url_normalize(base_url);
{
char *nurl, *ret;
int n;
nurl = url_normalize(base_url);
- n = strlen(nurl) + strlen(URL_BASE_API_1_
0
_SENSORS) + 1;
+ n = strlen(nurl) + strlen(URL_BASE_API_1_
1
_SENSORS) + 1;
ret = malloc(n);
strcpy(ret, nurl);
ret = malloc(n);
strcpy(ret, nurl);
- strcat(ret, URL_BASE_API_1_
0
_SENSORS);
+ strcat(ret, URL_BASE_API_1_
1
_SENSORS);
free(nurl);
return ret;
}
free(nurl);
return ret;
}
-void rsensor_init()
+void rsensor_init(
void
)
{
curl = curl_easy_init();
}
{
curl = curl_easy_init();
}
-void rsensor_cleanup()
+void rsensor_cleanup(
void
)
{
curl_easy_cleanup(curl);
}
{
curl_easy_cleanup(curl);
}
@@
-100,11
+107,12
@@
static json_object *get_json_object(const char *url)
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
- log_debug("HTTP request %s", url);
+ log_fct("%s: HTTP request %s", PROVIDER_NAME, url);
+
if (curl_easy_perform(curl) == CURLE_OK)
obj = json_tokener_parse(chunk.data);
else
if (curl_easy_perform(curl) == CURLE_OK)
obj = json_tokener_parse(chunk.data);
else
- log_
printf(LOG_ERR, _("Fail to connect to: %s")
, url);
+ log_
err(_("%s: Fail to connect to: %s"), PROVIDER_NAME
, url);
free(chunk.data);
free(chunk.data);
@@
-121,7
+129,7
@@
struct psensor **get_remote_sensors(const char *server_url,
sensors = NULL;
sensors = NULL;
- url = create_api_1_
0
_sensors_url(server_url);
+ url = create_api_1_
1
_sensors_url(server_url);
obj = get_json_object(url);
obj = get_json_object(url);
@@
-141,7
+149,7
@@
struct psensor **get_remote_sensors(const char *server_url,
json_object_put(obj);
} else {
json_object_put(obj);
} else {
- log_
printf(LOG_ERR, _("Invalid content: %s")
, url);
+ log_
err(_("%s: Invalid content: %s"), PROVIDER_NAME
, url);
}
free(url);
}
free(url);
@@
-154,34
+162,34
@@
struct psensor **get_remote_sensors(const char *server_url,
return sensors;
}
return sensors;
}
-void remote_psensor_update(struct psensor *s)
+
static
void remote_psensor_update(struct psensor *s)
{
json_object *obj;
{
json_object *obj;
- obj = get_json_object(
s->url
);
+ obj = get_json_object(
get_url(s)
);
if (obj && !is_error(obj)) {
json_object *om;
if (obj && !is_error(obj)) {
json_object *om;
-
om = json_object_object_get(obj, "last_measure"
);
+
json_object_object_get_ex(obj, "last_measure", &om
);
if (!is_error(obj)) {
json_object *ov, *ot;
struct timeval tv;
if (!is_error(obj)) {
json_object *ov, *ot;
struct timeval tv;
-
ov = json_object_object_get(om, "value"
);
-
ot = json_object_object_get(om, "time"
);
+
json_object_object_get_ex(om, "value", &ov
);
+
json_object_object_get_ex(om, "time", &ot
);
tv.tv_sec = json_object_get_int(ot);
tv.tv_usec = 0;
psensor_set_current_measure
tv.tv_sec = json_object_get_int(ot);
tv.tv_usec = 0;
psensor_set_current_measure
- (s, json_object_get_double(ov), tv);
;
+ (s, json_object_get_double(ov), tv);
}
json_object_put(obj);
} else {
}
json_object_put(obj);
} else {
- log_
printf(LOG_ERR, _("Invalid JSON: %s"), s->url
);
+ log_
err(_("%s: Invalid JSON: %s"), PROVIDER_NAME, get_url(s)
);
}
}
}
}