X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=plugins%2Fradio%2Fradio-api.c;h=bdb1768fc50610ca50687f3ad13d02af2903f4f1;hb=3259015486ecc8e246b1b69b36235d24e9d9c2ea;hp=1cbf314909fc6e82d63ef3b817c8f48c856b2df7;hpb=7181ede7add4eb3f5a92f5f8c9fd9cc8fdf6c659;p=src%2Fapp-framework-binder.git diff --git a/plugins/radio/radio-api.c b/plugins/radio/radio-api.c index 1cbf3149..bdb1768f 100644 --- a/plugins/radio/radio-api.c +++ b/plugins/radio/radio-api.c @@ -17,7 +17,6 @@ */ #include "radio-api.h" -#include "radio-rtlsdr.h" /* ******************************************************** @@ -27,6 +26,8 @@ /* ------ LOCAL HELPER FUNCTIONS --------- */ +static pluginHandleT *the_radio = NULL; + /* detect new radio devices */ STATIC void updateRadioDevList(pluginHandleT *handle) { @@ -117,21 +118,22 @@ STATIC AFB_error releaseRadio (pluginHandleT *handle, radioCtxHandleT *ctx) { } /* called when client session dies [e.g. client quits for more than 15mns] */ -STATIC void freeRadio (void *context, void *handle) { +STATIC void freeRadio (void *context) { - releaseRadio (handle, context); + releaseRadio (the_radio, context); free (context); } /* ------ PUBLIC PLUGIN FUNCTIONS --------- */ -STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CREATE */ +STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CHECK */ json_object *jresp; /* create a private client context */ - request->context = initRadioCtx(); + if (!request->context) + request->context = initRadioCtx(); jresp = json_object_new_object(); json_object_object_add(jresp, "info", json_object_new_string ("Radio initialized")); @@ -140,7 +142,7 @@ STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CREATE */ STATIC json_object* power (AFB_request *request) { /* AFB_SESSION_CHECK */ - pluginHandleT *handle = (pluginHandleT*)request->handle; + pluginHandleT *handle = the_radio; radioCtxHandleT *ctx = (radioCtxHandleT*)request->context; const char *value = getQueryValue (request, "value"); json_object *jresp; @@ -176,6 +178,8 @@ STATIC json_object* power (AFB_request *request) { /* AFB_SESSION_CHECK */ jresp = json_object_new_object(); json_object_object_add (jresp, "power", json_object_new_string ("off")); } + else + jresp = NULL; return jresp; } @@ -306,7 +310,7 @@ STATIC json_object* ping (AFB_request *request) { /* AFB_SESSION_NONE */ STATIC AFB_restapi pluginApis[]= { - {"init" , AFB_SESSION_CREATE, (AFB_apiCB)init , "Radio API - init"}, + {"init" , AFB_SESSION_CHECK, (AFB_apiCB)init , "Radio API - init"}, {"power" , AFB_SESSION_CHECK, (AFB_apiCB)power , "Radio API - power"}, {"mode" , AFB_SESSION_CHECK, (AFB_apiCB)mode , "Radio API - mode"}, {"freq" , AFB_SESSION_CHECK, (AFB_apiCB)freq , "Radio API - freq"}, @@ -323,8 +327,8 @@ PUBLIC AFB_plugin* pluginRegister () { plugin->prefix = "radio"; plugin->apis = pluginApis; - plugin->handle = initRadioPlugin(); plugin->freeCtxCB = (AFB_freeCtxCB)freeRadio; - return (plugin); + radio = initRadioPlugin(); + return plugin; };