From 95d9025f8e9d0bb841962530edfe3b4634739bf6 Mon Sep 17 00:00:00 2001 From: andreas Date: Fri, 27 Oct 2023 21:09:57 +0200 Subject: [PATCH] update example task to new handling for the task data api --- lib/exampletask/GwExampleTask.cpp | 39 +++++++++++++++++++++++++------ lib/exampletask/GwExampleTask.h | 19 +-------------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/lib/exampletask/GwExampleTask.cpp b/lib/exampletask/GwExampleTask.cpp index 59e3959..3dd698a 100644 --- a/lib/exampletask/GwExampleTask.cpp +++ b/lib/exampletask/GwExampleTask.cpp @@ -20,13 +20,38 @@ class ExampleNotWorkingIf: public GwApi::TaskInterfaces::Base{ public: int someValue=99; }; -DECLARE_TASKIF(exampleTask,ExampleNotWorkingIf); - +DECLARE_TASKIF(ExampleNotWorkingIf); +void exampleTask(GwApi *param); /** * an init function that ist being called before other initializations from the core */ void exampleInit(GwApi *api){ api->getLogger()->logDebug(GwLog::LOG,"example init running"); + // make the task known to the core + // the task function should not return (unless you delete the task - see example code) + const String taskName("exampleTask"); + api->addUserTask(exampleTask, taskName, 4000); + // this would create our task with a stack size of 4000 bytes + + // we declare some capabilities that we can + // use in config.json to only show some + // elements when this capability is set correctly + api->addCapability("testboard", "true"); + api->addCapability("testboard2", "true"); + // hide some config value + // just set HIDE + the name of the config item to true + api->addCapability("HIDEminXdrInterval", "true"); + // example for a user defined help url that will be shown when clicking the help button + api->addCapability("HELP_URL", "https://www.wellenvogel.de"); + + //we would like to store data with the interfaces that we defined + //the name must match the one we used for addUserTask + api->taskInterfaces()->claim(taskName); + //not working interface + if (!api->taskInterfaces()->claim(taskName)){ + api->getLogger()->logDebug(GwLog::ERROR,"unable to claim ExampleNotWorkingIf"); + } + //this example is a more or less useless example how you could set some //config value to a fixed value //you can only set config values within the init function @@ -142,10 +167,10 @@ void exampleTask(GwApi *api){ GwApi::Status status; int counter=api->addCounter("usertest"); int apiResult=0; - ExampleTaskIf e1=apiGetExampleTaskIf(api,apiResult); + ExampleTaskIf e1=api->taskInterfaces()->get(apiResult); LOG_DEBUG(GwLog::LOG,"exampleIf before rs=%d,v=%d,s=%s",apiResult,e1.count,e1.someValue.c_str()); ExampleNotWorkingIf nw1; - bool nwrs=apiSetExampleNotWorkingIf(api,nw1); + bool nwrs=api->taskInterfaces()->set(nw1); LOG_DEBUG(GwLog::LOG,"exampleNotWorking update returned %d",(int)nwrs); String voltageTransducer=api->getConfig()->getString(GwConfigDefinitions::exTransducer); int voltageInstance=api->getConfig()->getInt(GwConfigDefinitions::exInstanceId); @@ -248,13 +273,13 @@ void exampleTask(GwApi *api){ status.n2kTx); //increment some counter api->increment(counter,"Test"); - ExampleTaskIf e2=apiGetExampleTaskIf(api,apiResult); + ExampleTaskIf e2=api->taskInterfaces()->get(apiResult); LOG_DEBUG(GwLog::LOG,"exampleIf before update rs=%d,v=%d,s=%s",apiResult,e2.count,e2.someValue.c_str()); e1.count+=1; e1.someValue="running"; - bool rs=apiSetExampleTaskIf(api,e1); + bool rs=api->taskInterfaces()->set(e1); LOG_DEBUG(GwLog::LOG,"exampleIf update rs=%d,v=%d,s=%s",(int)rs,e1.count,e1.someValue.c_str()); - ExampleTaskIf e3=apiGetExampleTaskIf(api,apiResult); + ExampleTaskIf e3=api->taskInterfaces()->get(apiResult); LOG_DEBUG(GwLog::LOG,"exampleIf after update rs=%d,v=%d,s=%s",apiResult,e3.count,e3.someValue.c_str()); if (!voltageTransducer.isEmpty()){ //simulate some voltage measurements... diff --git a/lib/exampletask/GwExampleTask.h b/lib/exampletask/GwExampleTask.h index f7761b2..eb4e3f3 100644 --- a/lib/exampletask/GwExampleTask.h +++ b/lib/exampletask/GwExampleTask.h @@ -8,29 +8,12 @@ //RS485 on groove #define SERIAL_GROOVE_485 -void exampleTask(GwApi *param); void exampleInit(GwApi *param); -//make the task known to the core -//the task function should not return (unless you delete the task - see example code) -//DECLARE_USERTASK(exampleTask) -//if your task is not happy with the default 2000 bytes of stack, replace the DECLARE_USERTASK -DECLARE_USERTASK_PARAM(exampleTask,4000); -//this would create our task with a stack size of 4000 bytes - //let the core call an init function before the //N2K Stuff and the communication is set up //normally you should not need this at all //this function must return when done - otherwise the core will not start up DECLARE_INITFUNCTION(exampleInit); -//we declare a capability that we can -//use in config.json to only show some -//elements when this capability is set correctly -DECLARE_CAPABILITY(testboard,true); -DECLARE_CAPABILITY(testboard2,true); -//hide some config value -//just set HIDE + the name of the config item to true -DECLARE_CAPABILITY(HIDEminXdrInterval,true); -//example for a user defined help url that will be shown when clicking the help button -DECLARE_STRING_CAPABILITY(HELP_URL,"https://www.wellenvogel.de"); + #endif \ No newline at end of file