aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bachmann <manuel.bachmann@iot.bzh>2015-12-20 23:00:56 +0100
committerManuel Bachmann <manuel.bachmann@iot.bzh>2015-12-20 23:00:56 +0100
commit0d170147150b90678225b55548215d09d8273e6d (patch)
tree8f29a1fd6cdc1e594b88398af4f0c70f9a3a9010
parent61354a55ac2abd9e83e1f869cdb735654d6eb74a (diff)
Fix frequency setting bug in Radio API
Passing floats between functions seems to cause problems... not sure why ; anyway, fix this by using a double variable. Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
-rw-r--r--plugins/radio/radio-api.c6
-rw-r--r--plugins/radio/radio-rtlsdr.c4
2 files changed, 6 insertions, 4 deletions
diff --git a/plugins/radio/radio-api.c b/plugins/radio/radio-api.c
index 3048f7b3..3de8e044 100644
--- a/plugins/radio/radio-api.c
+++ b/plugins/radio/radio-api.c
@@ -219,6 +219,7 @@ STATIC json_object* freq (AFB_request *request) { /* AFB_SESSION_CHECK */
radioCtxHandleT *ctx = (radioCtxHandleT*)request->client->ctx;
const char *value = getQueryValue (request, "value");
json_object *jresp = json_object_new_object();
+ double freq;
char freq_str[256];
/* no "?value=" parameter : return current state */
@@ -229,8 +230,9 @@ STATIC json_object* freq (AFB_request *request) { /* AFB_SESSION_CHECK */
/* "?value=" parameter, set frequency */
else {
- ctx->freq = strtof (value, NULL);
- _radio_set_freq (ctx->idx, ctx->freq);
+ freq = strtod (value, NULL);
+ _radio_set_freq (ctx->idx, freq);
+ ctx->freq = (float)freq;
snprintf (freq_str, sizeof(freq_str), "%f", ctx->freq);
json_object_object_add (jresp, "freq", json_object_new_string (freq_str));
diff --git a/plugins/radio/radio-rtlsdr.c b/plugins/radio/radio-rtlsdr.c
index e5a609e3..bba0d89a 100644
--- a/plugins/radio/radio-rtlsdr.c
+++ b/plugins/radio/radio-rtlsdr.c
@@ -82,11 +82,11 @@ PUBLIC void _radio_set_mode (unsigned int num, Mode mode) {
_radio_apply_params(dev_ctx[num]);
}
-PUBLIC void _radio_set_freq (unsigned int num, float freq) {
+PUBLIC void _radio_set_freq (unsigned int num, double freq) {
if (!dev_ctx || !dev_ctx[num])
return;
- dev_ctx[num]->freq = freq;
+ dev_ctx[num]->freq = (float)freq;
_radio_apply_params(dev_ctx[num]);
}