From 0d170147150b90678225b55548215d09d8273e6d Mon Sep 17 00:00:00 2001 From: Manuel Bachmann Date: Sun, 20 Dec 2015 23:00:56 +0100 Subject: [PATCH] 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 --- plugins/radio/radio-api.c | 6 ++++-- plugins/radio/radio-rtlsdr.c | 4 ++-- 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]); } -- 2.16.6