Simplified doc-site generation
[AGL/documentation.git] / docs / 4_APIs_and_Services / 4.5_Message_Signaling / 4_AGL_Service_Signal_Composer / 3_Plugins.md
diff --git a/docs/4_APIs_and_Services/4.5_Message_Signaling/4_AGL_Service_Signal_Composer/3_Plugins.md b/docs/4_APIs_and_Services/4.5_Message_Signaling/4_AGL_Service_Signal_Composer/3_Plugins.md
new file mode 100644 (file)
index 0000000..aa0ebb4
--- /dev/null
@@ -0,0 +1,32 @@
+---
+edit_link: ''
+title: Plugins
+origin_url: >-
+  https://git.automotivelinux.org/apps/agl-service-signal-composer/plain/docs/part-1/3-Plugins.md?h=master
+---
+
+<!-- WARNING: This file is generated by fetch_docs.js using /home/boron/Documents/AGL/docs-webtemplate/site/_data/tocs/apis_services/master/agl-service-signal-composer-developer-guides-api-services-book.yml -->
+
+# Plugins
+
+Plugins are C/C++ shared libraries loaded by the binding to execute some
+simple routine. Routine could be on reception of a new signal or at sources
+initialization time or signal subscription with the respective JSON field
+`onReceived` `init` and `getSignals`
+
+A default plugin (builtin) is provided with 2 functions:
+
+- **defaultOnReceived**: set and record a new signal value and its timestamp
+ in the signal composer service. It simply tooks the incoming event JSON object
+ and search for *key* `value` and `timestamp` then call function
+ `setSignalValue`.
+- **setSignalValueWrap**: a `lua2c` function the could be called from any LUA
+ script to record a new signal value.
+
+> **CAUTION**: `timestamp` value has to be typed as *uint64_t* with
+> a **nanosecond** precision using a realtime clock. To correctly store it in
+> a JSON-C object use the int64 type with the according fonctions:
+> *json_object_new_int64()*
+> *json_object_get_int64()*
+> *json_object_set_int64()*
+> *...*