diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-11-29 19:32:01 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-12-14 11:00:26 +0100 |
commit | 01bf5e6e309c12475e1bf2d58f3b72e64f7a5add (patch) | |
tree | 84467dd9b5b4a7b7cfc71a8e96101514182766b7 /plugins | |
parent | 9a2620f02ce35edd6420f77643c7f64f132d62c1 (diff) |
Update and use latest ctl-utilities.
Controller will now handle loading additional files
from section.
Context retrieving change a bit, now we have source context
and plugin context.
Update json unpacking and packing.
Cleaning, format.
Change-Id: Ie7a4721f6b703796a0dac1a236922427f4755dc5
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/low-can.cpp | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/plugins/low-can.cpp b/plugins/low-can.cpp index 8d09eda..b8b84eb 100644 --- a/plugins/low-can.cpp +++ b/plugins/low-can.cpp @@ -45,11 +45,15 @@ typedef struct { doorT rear_right; } allDoorsCtxT; -typedef struct { - struct signalCBT* pluginHandle; +struct pluginCtxT { json_object *subscriptionBatch; allDoorsCtxT allDoorsCtx; -} lowCANCtxT; +}; + +struct pluginCtxT pluginCtx = { + json_object_new_array(), + {false, false, false, false, false, false, false, false} +}; void setDoor(doorT* aDoor, const char* eventName, int eventStatus) { @@ -59,9 +63,10 @@ void setDoor(doorT* aDoor, const char* eventName, int eventStatus) } // Call at initialisation time +/* CTLP_ONLOAD(plugin, composerHandle) { - lowCANCtxT *pluginCtx= (lowCANCtxT*)calloc (1, sizeof(lowCANCtxT)); + lowCANCtxT *pluginCtx = (lowCANCtxT*)calloc (1, sizeof(lowCANCtxT)); pluginCtx->pluginHandle = (struct signalCBT*)composerHandle; pluginCtx->subscriptionBatch = json_object_new_array(); @@ -72,9 +77,9 @@ CTLP_ONLOAD(plugin, composerHandle) return (void*)pluginCtx; } +*/ CTLP_CAPI (subscribeToLow, source, argsJ, eventJ) { - lowCANCtxT *pluginCtx = (lowCANCtxT*)source->context; json_object* dependsArrayJ = nullptr, *subscribeArgsJ = nullptr, *subscribeFilterJ = nullptr, *responseJ = nullptr, *filterJ = nullptr; const char *id = nullptr, *event = nullptr, *unit = nullptr; double frequency = 0; @@ -83,7 +88,7 @@ CTLP_CAPI (subscribeToLow, source, argsJ, eventJ) { if(eventJ) { err = wrap_json_unpack(eventJ, "{ss,s?s,s?o,s?s,s?F,s?o !}", - "id", &id, + "uid", &id, "event", &event, "depends", &dependsArrayJ, "unit", &unit, @@ -111,14 +116,14 @@ CTLP_CAPI (subscribeToLow, source, argsJ, eventJ) { AFB_ERROR("Error building subscription query object"); return err; } - json_object_array_add(pluginCtx->subscriptionBatch, subscribeArgsJ); + json_object_array_add(pluginCtx.subscriptionBatch, subscribeArgsJ); } else { - AFB_DEBUG("Calling subscribe with %s", json_object_to_json_string_ext(pluginCtx->subscriptionBatch, JSON_C_TO_STRING_PRETTY)); - err = afb_service_call_sync("low-can", "subscribe", pluginCtx->subscriptionBatch, &responseJ); + AFB_DEBUG("Calling subscribe with %s", json_object_to_json_string_ext(pluginCtx.subscriptionBatch, JSON_C_TO_STRING_PRETTY)); + err = afb_service_call_sync("low-can", "subscribe", pluginCtx.subscriptionBatch, &responseJ); if(err) - {AFB_ERROR("Subscribe to '%s' responseJ:%s", json_object_to_json_string_ext(pluginCtx->subscriptionBatch, JSON_C_TO_STRING_PRETTY), json_object_to_json_string(responseJ));} + {AFB_ERROR("Subscribe to '%s' responseJ:%s", json_object_to_json_string_ext(pluginCtx.subscriptionBatch, JSON_C_TO_STRING_PRETTY), json_object_to_json_string(responseJ));} } return err; @@ -128,7 +133,7 @@ CTLP_CAPI (isOpen, source, argsJ, eventJ) { const char *eventName = nullptr; int eventStatus; uint64_t timestamp; - lowCANCtxT *pluginCtx=(lowCANCtxT*)source->context; + signalCBT *sourceCtx=(signalCBT*)source->context; int err = wrap_json_unpack(eventJ, "{ss,sb,s?F}", "name", &eventName, @@ -142,23 +147,23 @@ CTLP_CAPI (isOpen, source, argsJ, eventJ) { if(strcasestr(eventName, "front_left")) { - pluginCtx->pluginHandle->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); - setDoor(&pluginCtx->allDoorsCtx.front_left, eventName, eventStatus); + sourceCtx->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); + setDoor(&pluginCtx.allDoorsCtx.front_left, eventName, eventStatus); } else if(strcasestr(eventName, "front_right")) { - pluginCtx->pluginHandle->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); - setDoor(&pluginCtx->allDoorsCtx.front_right, eventName, eventStatus); + sourceCtx->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); + setDoor(&pluginCtx.allDoorsCtx.front_right, eventName, eventStatus); } else if(strcasestr(eventName, "rear_left")) { - pluginCtx->pluginHandle->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); - setDoor(&pluginCtx->allDoorsCtx.rear_left, eventName, eventStatus); + sourceCtx->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); + setDoor(&pluginCtx.allDoorsCtx.rear_left, eventName, eventStatus); } else if(strcasestr(eventName, "rear_right")) { - pluginCtx->pluginHandle->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); - setDoor(&pluginCtx->allDoorsCtx.rear_right, eventName, eventStatus); + sourceCtx->searchNsetSignalValue(eventName,(uint64_t)timestamp, eventStatus); + setDoor(&pluginCtx.allDoorsCtx.rear_right, eventName, eventStatus); } else { @@ -170,14 +175,14 @@ CTLP_CAPI (isOpen, source, argsJ, eventJ) { source->uid, json_object_to_json_string(argsJ), json_object_to_json_string(eventJ), - pluginCtx->allDoorsCtx.front_left.door ? "true":"false", - pluginCtx->allDoorsCtx.front_left.window ? "true":"false", - pluginCtx->allDoorsCtx.front_right.door ? "true":"false", - pluginCtx->allDoorsCtx.front_right.window ? "true":"false", - pluginCtx->allDoorsCtx.rear_left.door ? "true":"false", - pluginCtx->allDoorsCtx.rear_left.window ? "true":"false", - pluginCtx->allDoorsCtx.rear_right.door ? "true":"false", - pluginCtx->allDoorsCtx.rear_right.window ? "true":"false" + pluginCtx.allDoorsCtx.front_left.door ? "true":"false", + pluginCtx.allDoorsCtx.front_left.window ? "true":"false", + pluginCtx.allDoorsCtx.front_right.door ? "true":"false", + pluginCtx.allDoorsCtx.front_right.window ? "true":"false", + pluginCtx.allDoorsCtx.rear_left.door ? "true":"false", + pluginCtx.allDoorsCtx.rear_left.window ? "true":"false", + pluginCtx.allDoorsCtx.rear_right.door ? "true":"false", + pluginCtx.allDoorsCtx.rear_right.window ? "true":"false" ); return 0; |