summaryrefslogtreecommitdiffstats
path: root/signal-composer-binding/signal.cpp
AgeCommit message (Collapse)AuthorFilesLines
2019-04-11Initializing the source structure.Romain Forlot1-0/+1
Make sure that all member's structure are initialized to zero to avoid unexpected behavior. Bug-AGL: SPEC-2312 Change-Id: I0e5c3f7c0d5382de92693660d9812daa6735039d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-11-23Use specific binder's event handlersguppy_6.99.2guppy/6.99.26.99.2Romain Forlot1-16/+0
Use specific binder's event handlers which allows you to bind a callback with an incoming event based on a pattern matching. This replace the global event listener and internal callback search algorythm which is now delegated to the binder. Clean unused constructor Bug-AGL: SPEC-1968 Change-Id: I4b22c003661189fb71498efc4d9021c1a54ae866 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-11-23Binding migration to v3guppy_6.99.1guppy/6.99.16.99.1Romain Forlot1-9/+9
Change-Id: I8a5bc18a0bf8ad05ce83b6ff64d4329d42bff2b0 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-31Returns error in request responseRomain Forlot1-36/+40
Returns error in request response instead of binder log when you try to get a signal value. Change-Id: I12809591801db5718aa4713034f2bb1801b6bf2d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-25Improved performanceRomain Forlot1-59/+80
Before value was translated to a C type variable two times, at the reception then at the emission. Now it just receives and sends the signal value without translation nor interpretation except if you ask for an average, minimum or maximum value. Then in those cases it interprets the json to return you a value or an error if there is no numeric values to compute. Remove unneeded log message at event reception. Improved signal search engine, will search in source's signals map by the signal ID not the event name which lead to a more direct map match. Bugs-AGL: SPEC-1612 Depends-On: I43e79ed73a507ac2ca7ed4cdc3f16ec009392194 Change-Id: Ie253c3fe1e8cde42dabe8832da74e9f9bf442c14 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-23Adds a signal's metadata attributeflounder_5.99.2flounder/5.99.25.99.2Romain Forlot1-31/+16
This adds a signal's metadata attribute which lets you store any kind and number of metadata attributes to your signal. These metadata are just reissued at the event emission without alteration. Special case of "unit" attribute which is kept as a signal attribute and not as a metadata because it is an intrinsic signal attribute that all signals should have. Bug-AGL: SPEC-1419 Change-Id: I531b4012ac9b22f312a4ccebc1a07a8d93129403 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Fix: release json_objectRomain Forlot1-1/+4
This ensure that the json_object is correctly released after. Then after that the call will have enough reference count. Also fix a GCC warning using "if" instead of trigraph Change-Id: I41776d9009465f48f6c0b236614c0a32244f5cfb Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Rework loading sources and signals.Romain Forlot1-1/+2
Some function that are now included in the controller submodule do not need to be in the composer as well. Also initialize sources and signals in the same way . JSON configuration needs to be updated to fit this changes Change-Id: I2043791e7ee80f8350f33ed15bdf9980c0773b82 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Return separately last timestamp and valueRomain Forlot1-4/+2
Last timestamp and value is those ones directly store as object's attributes not the last from the history. Simple... Change-Id: Id2c808a1b236dfa36821cf9fc5a5bcd6a4114f10 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Change, clean plugins.Romain Forlot1-8/+10
Improve GPS plugin to be able to calculate the heading also remove the builtin plugin that was an error. We need to pass GPS plugin in C++ to be able to use the context. Handle "double" and "int" signal's value. Change-Id: I6d902e4ac76a0e933326c0b4c43922645c9c5a4c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Change when to notifyRomain Forlot1-1/+0
The notify was in fact called 2 times. It is attended that a callback should "set" the signal value to record it. Setting the signal's value already call notify which an action should do at the end. Notifying has a meaning only if a signal value has been modified. Change-Id: I4a8128317a88bf7459b2c4aa0f575c4b2524e816 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Use Nanosecond precision by defaultRomain Forlot1-11/+20
This is the default precision returned by the kernel when calling get_clocktime(), so this avoid useless division to get a less precise time. Also signaling event should have this kind of precision to be able to correctly debugging system on signals heavy load. Change-Id: I010b98305cff7387787fd8f8a1e8a0f9107a170a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Use a better parameter name, more explicitRomain Forlot1-16/+17
Change-Id: I4c2a31f5c395c0d85ec810b25fb88c70cf691375 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Implement the signal's update default methodRomain Forlot1-5/+45
Adding != operator to Signal class This operator is needed to exclude signal inclusion in notify function and make possible to add a signal at last position Change-Id: I95f3434019383e52928c37f396aae938f2cfae05 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Improve signal handlingRomain Forlot1-10/+21
- Fix memleak: RRelease the Signal JSON representation once used - Change equality condition between signals - Use a REALTIME clock to retrieve the timestamp if not provided by the signal. This is the most simple to date a signal and use that time for further usage. - Add a method to retrieve the last_timestamp value from a signal This with the commit from ctl-utilities submodule "8ff0fe3c454ea32ba383a3cfa9c4e91237d6c494" fixes the issue. Change-Id: Ifed66796f92d789c80f10b161318f6bef788dda7 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Use signal subscription args if presentRomain Forlot1-0/+8
By default subscription argument request from signal are passed if present, else the one from the signal's source if present. If nothing is specified for sources then argument is set as a NULL pointer. Change-Id: I18db0a9922039f41d475cd08758a2afd4acaa9d4 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-21Don't segfault at exit pointed to freed objectsRomain Forlot1-3/+2
Change-Id: Ic2f8ebee552ce982f858fe6ee93db2508a290617 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Use value instead of pointer for a memberRomain Forlot1-12/+11
no reason to keep it as pointer, and simpler to initiaze it at construction time. Change-Id: I0aee4483c834e66651d80998de81c99799451ff5 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Fix memory leaks relative to json_objectRomain Forlot1-0/+2
Change-Id: I0cff16c1d44b9363522fde7c6c9b2bd10ba376ac Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Hold all contexts (plugin & source) in signalCtx_Romain Forlot1-7/+34
Keeping persistence between call data are kept in that member also subscription Action now use getSignals_ context and no more the signal one, this is more accurate and simples Change-Id: Idd7c56ba30f1daa9eaf9b99a7261d58189ef0bb2 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Useless tests against uninitialized valueRomain Forlot1-4/+2
Values has to be set. Change-Id: Ia8fcd23e68b79de5cd0316c81341ac41643750b5 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Avoid warning about deleting void* variableRomain Forlot1-1/+1
And replace free calls by delete because operator new was used. Change-Id: Ifb0d301b0a09dd83e3ad574c97e02bd8af072ae6 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Avoid mem leack, overwriting, initializing variable.Romain Forlot1-1/+1
Fix a memory squashing bug that segfault binder when loading directory searching for binding. Change-Id: Iedc6747d8ce49e7ff5fc2013bb7d03b5b553b89c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Update and use latest ctl-utilities.Romain Forlot1-1/+1
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>
2017-12-14Migrate to ctl-utilities libraryRomain Forlot1-7/+23
New version of controller as a library. Loading additionnals files from each sections. Change-Id: I4f5e78d0baf9650cb8d1cc1da26f8e1fd73b792c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14LUA lib and bin embedded in projectRomain Forlot1-24/+28
Change-Id: I1a61b49f55e4daa305800e754a14b6041aa81b34 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Add default receive actionRomain Forlot1-1/+69
Change-Id: Icc23f135d4e65d6de131a60b978677e549738d78 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14CommentRomain Forlot1-0/+3
Change-Id: I92f9d242cd108d8355069a4a63b391a5302d27a8 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Inheritance of some signals parameters from sourceRomain Forlot1-2/+2
Stores sourceAPI as shared_ptr too. Change-Id: I2dcd919b3053f29812a9bece14feb4f620f23ce3 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Introduce retention setting in place of classRomain Forlot1-10/+24
Be able to tweak retention value for each signal in seconds Change-Id: I1cabe48a2660cdeb2e9b32b277e7c819c6b49bd9 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Enhance pointer manage and container browsingRomain Forlot1-19/+19
- SourceAPI now holds share_ptr of Signal - Signal are stored in a map<string,signal> that change way to browse the signals - subscribed property included in SourceAPI. - Clean old code - renaming struct SignalValue->signalValue Change-Id: Ic5c28296ddd7197c6562e12fbc91c504c1cc0b4d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14No errors on get if no values has been recordedRomain Forlot1-1/+2
Change-Id: Ib1d5da084b3a39fbfc9816070aba008e3486cfae Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Implement recursionCheck using observer patternRomain Forlot1-72/+27
Change-Id: Ic404c098f316106abe1918c3cd100ae047f4f555 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Migrating to real Observer design pattern usageRomain Forlot1-21/+64
Change-Id: I2fa4e1dc81f5dff852e619a425b8caf26b94b55a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Rename bindingApp to ComposerRomain Forlot1-3/+3
Change-Id: Ib3256f5c89197a91d2bbfca7a92774e91de6f664 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Find all signals that matches the searched patternRomain Forlot1-6/+4
Change-Id: Ia562fbd90aaeaa57c1c731d0f66dd31865db7e71 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Make LUA worksRomain Forlot1-3/+3
- Added LUA library at link - Make app-template crash build if a checked file fails - Fix old defined variable CONTROL_LUA_PATH to a default one in the binding data directory - Add an example with unit conversion made in LUA Change-Id: I1b4712bde32a38044ad6b14ebd38b6782fd01fe9 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Modification about conf definitionRomain Forlot1-21/+43
- Argument for each signal subscription. (getSignalsArgs) - differentiation between Signal as raw signal from another API and virtual signal depending upon other signals - changing way to specify function with uri that specify everythings that could be needed to invoke a function. Change-Id: I8917c5ae3c2c1e3fa48ddfdda41fc75eaba32bb7 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Doxygen documentationRomain Forlot1-6/+61
Change-Id: I12efd66777cbc5217dfd68827f40727577df1406 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Return mathematical value on a period if askedRomain Forlot1-5/+23
Change-Id: I40799d054e56b3ae9462963d317d8fb458a21122 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Match signal if name found in source signal.Romain Forlot1-0/+1
Change-Id: Ia080cddac3973998a2dc8f8a143489298d6c8504 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Get CPP controller plugin worksRomain Forlot1-9/+63
Context passing variables not working well Change-Id: Ibc67bef353e5cc2e53ef9e5579d106baab92a604 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Adding new verb, implemented basic signal methodRomain Forlot1-3/+35
Change-Id: I453ddc0ca374436275e7d76cdc27b3d843a2770f Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Subscription by plugin to signalsRomain Forlot1-5/+34
Change-Id: Icb923f87df2be8eb664106bc9077b3a8221dd3ce Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Attach and recursion check workingRomain Forlot1-34/+73
Change-Id: I2f9509d4b6aa63a16df8db2187810337fd802ef4 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-12-14Progression on config parsing.Romain Forlot1-0/+86
Change-Id: Idd8d8987ccabef381f6d79c1d508930a2d4bae3c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>