/* * Copyright (C) 2015 "IoT.bzh" * Author "Fulup Ar Foll" * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "local-def.h" STATIC json_object* pingSample (AFB_request *request) { static pingcount = 0; json_object *response; char query [512]; int len; // request all query key/value len = getQueryAll (request, query, sizeof(query)); if (len == 0) strcpy (query,"NoSearchQueryList"); // check if we have some post data if (request->post == NULL) request->post="NoData"; // return response to caller response = jsonNewMessage(AFB_SUCCESS, "Ping Binder Daemon %d query={%s} PostData: \'%s\' ", pingcount++, query, request->post); if (verbose) fprintf(stderr, "%d: \n", pingcount); return (response); } STATIC json_object* pingFail (AFB_request *request) { return NULL; } STATIC json_object* pingBug (AFB_request *request) { int a,b,c; fprintf (stderr, "Use --timeout=10 to trap error\n"); b=4; c=0; a=b/c; // should never return return NULL; } // For samples https://linuxprograms.wordpress.com/2010/05/20/json-c-libjson-tutorial/ STATIC json_object* pingJson (AFB_session *session, AFB_request *request, void* handle) { json_object *jresp, *embed; jresp = json_object_new_object(); json_object_object_add(jresp, "myString", json_object_new_string ("Some String")); json_object_object_add(jresp, "myInt", json_object_new_int (1234)); embed = json_object_new_object(); json_object_object_add(embed, "subObjString", json_object_new_string ("Some String")); json_object_object_add(embed, "subObjInt", json_object_new_int (5678)); json_object_object_add(jresp,"eobj", embed); return jresp; } STATIC AFB_restapi pluginApis[]= { {"ping" , (AFB_apiCB)pingSample , "Ping Application Framework"}, {"pingnull" , (AFB_apiCB)pingFail , "Return NULL"}, {"pingbug" , (AFB_apiCB)pingBug , "Do a Memory Violation"}, {"pingJson" , (AFB_apiCB)pingJson , "Return a JSON object"}, {"ctx-store", (AFB_apiCB)pingSample , "Verbose Mode"}, {"ctx-load" , (AFB_apiCB)pingSample , "Verbose Mode"}, {0,0,0} }; PUBLIC AFB_plugin *dbusRegister () { AFB_plugin *plugin = malloc (sizeof (AFB_plugin)); plugin->type = AFB_PLUGIN; plugin->info = "Application Framework Binder Service"; plugin->prefix= "dbus"; plugin->apis = pluginApis; plugin->handle= (void*) "Any you Want"; return (plugin); };