*/
#include "radio-api.h"
-#include "radio-rtlsdr.h"
/* ********************************************************
/* ------ LOCAL HELPER FUNCTIONS --------- */
+static pluginHandleT *the_radio = NULL;
+
/* detect new radio devices */
STATIC void updateRadioDevList(pluginHandleT *handle) {
}
/* 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"));
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;
jresp = json_object_new_object();
json_object_object_add (jresp, "power", json_object_new_string ("off"));
}
+ else
+ jresp = NULL;
return jresp;
}
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"},
plugin->prefix = "radio";
plugin->apis = pluginApis;
- plugin->handle = initRadioPlugin();
plugin->freeCtxCB = (AFB_freeCtxCB)freeRadio;
- return (plugin);
+ the_radio = initRadioPlugin();
+ return plugin;
};