summaryrefslogtreecommitdiffstats
path: root/ctl-lib
AgeCommit message (Collapse)AuthorFilesLines
2018-10-30Pass the plugin to action.Romain Forlot2-0/+2
Pass the plugin to action using source structure. Plugin pointer is now accessible from anywhere in the plugin callbacks. Clean deprecated function. Change-Id: Idf50728af0b3573a45c4731d4343cf67741b662c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-10-05Abort if one required API is missingRomain Forlot1-1/+2
AFB returns a missing API as a warning and doesn't abort the process. It is a binding duty to know if it should exit or not. Here a missing API is considerate as an error and abort the binder. Change-Id: Id11bcc34fd5fa8fd8a9a5cbd70d6d3340190dc1d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-09-20Correct an error when no plugins are definedguppy_6.90.0guppy/6.90.06.90.0Jonathan Aillet1-1/+1
Correct an error when 'PluginConfig' function is called while no plugins are defined in passed json. Change-Id: I281a18f601f8ca1b7dfedfe48d1de37f4e9eded4 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-09-20Decrease print level when no onload actionJonathan Aillet1-1/+1
Decrease print level when 'OnloadConfig' function is called while no onload action are defined in passed json. Change-Id: I173cb9b6824f7f32cf33a6755ed52f9dcf093ee6 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-09-18Add a 'params' fields for controller pluginsJonathan Aillet2-3/+5
Add a 'params' fields for controller plugins. Can be used to send specific parameters to plugins functions (onload, init, ...). Change-Id: Ifb16f06a20453ef2bd1bc8a72bc2841dc12e323c Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-09-18Call wasn't done correctly in 'CtlConfigExec'Jonathan Aillet1-1/+1
Call wasn't done correctly in 'CtlConfigExec', some functions were not call by 'CtlConfigExec' when it should be ... Change-Id: I5ce44e616042868c349bd5637c56267b8eff72e1 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-09-14Add ctlPlugins array to the ctlConfig structureRomain Forlot3-2/+10
This lets you add new actions to a section from a plugin, typically at its init step. Change-Id: I33a61c6162d25332d680d8a0e2d1841a457e0e80 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-09-14Add an Init step to the plugins loadRomain Forlot2-1/+11
The onload step could be considered as a preinit step. Init stage happens once all plugins are loaded and so you can refer to them to add new actions or configuration elements. Change-Id: I7986265bb1227208d0648bb2c56a1172b164faf1 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-09-06Change loading configuration object behaviorflounder_5.99.6flounder/5.99.65.99.6Romain Forlot5-22/+59
This changes the default behavior when loading actions. Now, it appends the new actions to the old ones instead of replacing them when called several times. If there were no actions previously loaded then it just loads normally the actions. Change-Id: Ica58a3edf4a9bf18ae31c6b6a5fa329e7ec5478b Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-24Fix: compatibility with binder FF.RC4flounder_5.99.4flounder/5.99.45.99.4Romain Forlot1-2/+6
binder FF.RC4 provides the missing define afb_service_call[_sync]_legacy which doesn't fit with define in the controller as the first argument API is already given by the app framework binder. Change-Id: Ia2d01b172386d96354d356e66817b166985fa646 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-23Fix: Wrong variable definitionRomain Forlot1-1/+1
Variable is already defined earlier with all function scope. Redefining here make the variable value wrong at the ending return statement. Change-Id: I85269d1f60a7e1b844d19dd902149fa25da50844 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-22ctl-lua: Fixed memory corruptionThierry Bultel1-5/+6
fixed a malloc random crash when loading the configuration files. A write of one byte was done outside of an allocated area. Namely, strncat always writes n+1 bytes, thus a best practice is to always calculate n as this: buffer_size-strlen(s)-1 Change-Id: Icb568f324d466fc6eef40c3e251ce6b8a7006d95 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
2018-08-20Migration to v3Romain Forlot6-33/+119
This makes controller fully compatible with binding v3 and also keeps the compatibility with the Pre-V3 + DYNAPI bindings. Change-Id: Iaa47e51b9cb964bbe2f050784fca355c780673f8 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-08Adds v3 function to get binding settingsflounder_5.99.3flounder/5.99.35.99.3Romain Forlot2-1/+9
Adds v3 function to get binding settings waiting the real migration of the controller to v3 Change-Id: Iece3fcbcb81de807927765097c964e3272165947 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-08New function returning the binding root directoryRomain Forlot1-0/+15
Change-Id: If4d8416c87c668ebc55d3866ccd038c652317b43 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-08Change the default GLOB patternRomain Forlot1-2/+3
Change the default GLOB pattern because the lua should be found in var directory by default. Change-Id: I8be0e85c97459553e1d6a9f58efa394eb311a514 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-08Fix wrong computed lengthRomain Forlot1-2/+2
Change-Id: I020a1619c94a3a22d66e6657f64d4cedda3a1e62 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-08-08Add path to the installed widget path.Romain Forlot1-8/+24
This resolves the link to the binding library then set the directory path to the widget installation location. Change-Id: Iaad0d8aad6e3b8bfdcdedde19fb7906adf5f9610 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-30New defaults useful functions on lua tableRomain Forlot1-0/+21
Add a function that returns the size of a table as the operator '#' isn't considered are safe or accurate. Add another function to deep copy a table. Change-Id: Ia549315e305dd7d02b975a3e8a1278c4ab709eec Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-27More precise log message when loading a Lua fileRomain Forlot3-12/+15
This will indicates what is the error at the LUA file loading Change-Id: I258bf43a2200577998e05cf7b2253bdd510a468e Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-26Fix: wrong legacy function signatureRomain Forlot1-1/+1
Old function had not the third argument. Change-Id: Ifdcf341c0339aff80f9a6741f63ae0e7f8fae682 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-25Split loading JSON controller file.Romain Forlot2-15/+18
This make possible to load from a binding either a file or directly a JSON object. Change-Id: If3f3edb8aaed066922982250dd162d483a7dc47a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-23Release arguments once C function returned.Romain Forlot1-1/+2
There was a leack after poping arguments from Lua interpreter. Now when a Lua2C function is called, if there is something to keep from the argument then you should call json_object_get() on it to preserve it. Change-Id: I43e79ed73a507ac2ca7ed4cdc3f16ec009392194 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-23Fix : typo introduced in a previous commit.flounder_5.99.2flounder/5.99.25.99.2Romain Forlot1-1/+1
Wrong function signature. Change-Id: I20794a0ae59fc54c08f0960544185e7ba42b2627 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-23Fixed character counting that was shortening paths8000ff1-2/+2
Change-Id: I16e2f87980229b08426060ec062615d2fa3c1494 Signed-off-by: 8000ff <clementmallejac@gmail.com>
2018-07-20Keep json unmodified during action executionJonathan Aillet1-7/+12
Keep passed json object unmodified during action execution. Before, the action arguments were added in the json passed (so, the json was modified, even for its provider). Now, if action arguments need to be added to the json to execute an action, 'ActionExecOne' function clone the passed json object, add action arguments into it, and use it to call the action. Change-Id: If102cc943326c17aad52cfde735362a72ad35a9a Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-07-17Use prefix variable to find controller's pluginsRomain Forlot7-61/+70
Prefix is the most reliable variable to find files or variables for a controller, so this lets you access it wherever it is needed without using global hardcoded variables. This helps to search for controller's plugins in several locations depending on environment variables and hardcoded variables (CONTROL_PLUGIN_PATH, CONTROL_CONFIG_PATH). This implies also a change a LUA interpreter loading step to correctly set the package.path variables with the environment variables, too. Correct the missing 'extern' in function declarations. Depends-On: Ic448ff017e6158bec05895d63688b8968b5c6434 Change-Id: I0ad19242612559d1f4b66b6f9af9e7032d4675a8 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-10Use binding version to set controller definitionsJonathan Aillet1-5/+2
Use binding version to set controller definitions. It is cleaner to define binding version directly into repository cmake than into a header like before this commit. Change-Id: Ie0f2812c8ac980e69ff901fb6e347f47f284f21b Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-07-10ctl-lua: typo fixClément Bénier1-43/+43
change LUA_FIST_ARG into LUA_FIRST_ARG Change-Id: Ie084e78f68dd0a29c4dfc8387200be9af5180647 Signed-off-by: Clément Bénier <clement.benier@iot.bzh>
2018-07-10asynchronism for test: LockWait addedClément Bénier3-8/+40
added LockWait to wait for incoming events, as soon as an event is received, the wait is unlocked You can indicate the timeout Change-Id: If29ca754618edb5b9fdc32c1c40b47016c6fc88a Signed-off-by: Clément Bénier <clement.benier@iot.bzh>
2018-07-09Fix: plugin api assignement orderRomain Forlot1-2/+1
There was an issue because the assignement happens after the onLoad call. Change-Id: I97dc65ad2a14a6e72bb2f59bc443d9fc5779abee Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-05Execute ConfigExec only if section is existingRomain Forlot1-1/+1
Test again if the section is present in the configuration JSON object before executing the callback. Change-Id: Ibad352e8443d5d33d7e727fc3b80c56a377c75d3 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-03Always set the api member even if NULL.Romain Forlot1-1/+2
This should fix case where plugin doesn't have an onload section but need to set the apihandle to be able to use it later. Change-Id: I07d4d38ce236732575d97a3c0a01cb03acad255a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-07-03Ability to add a plugin after the initial loadRomain Forlot1-13/+56
Plugins normally lie in a dedicated section and loaded once for all. With this function we are able to load a plugin after the initial load. Change-Id: Iebacdfce836767089f164ebe5cff72c7e45803be Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-06-27Be able to dispatch required api at the wanted timeflounder_5.99.1flounder/5.99.15.99.1Romain Forlot2-10/+28
Separate the require api step from ConfigExec and if called from anywhere but CtlConfigExec function, take care that not already initialized or that the previous has failed, so this is a new try. Change-Id: Ic98ef09487f7f58c1b1cb6c417eba261a5a81b13 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-06-27Change LUA package path at LUA interpreter loadRomain Forlot1-0/+33
Set package.path lua variable use the CONTROL_PLUGIN_PATH as it could have to find external lua packages in those directories. Change-Id: Iebea763782cfc024c5fef1fdbefe8ed80dbc4dbb Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-06-26Don't load two times a plugin even for LUARomain Forlot1-12/+13
Also detect problems when loading the script and report it. Change-Id: Iba22dcd0bbc6d7c307b5b7f66a56688ef3147250 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-06-19Fixed hidden bound variable (apiHandle)Sebastien Douheret1-10/+10
Change-Id: Id4c3e0eb9f770c78b38d8650e6a89577851984f9 Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
2018-06-18Fixed null value when push Lua argumentsSebastien Douheret1-13/+13
Still print a notice message when pushing a null object because having a null object in LUA may be problematic and it's always a good idea to warn developer. Also use json_object_to_json_string (safer than json_object_get_string in case of object is not a string) to dump json object in notice/debug messages. Change-Id: Ia3c252f38cbeca872b8f8fab1589da85d71a51ec Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
2018-06-14Adjust to compile with incoming bindings v3José Bollo2-7/+9
Change-Id: I0a3a1db6dacf017ecea5b91dc35eb3ec2d86515d Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2018-06-14Remove declaration to not existing functionsJosé Bollo1-3/+0
Change-Id: Ib1b300e589b08d3172c5b6aeaa8ef33df2c4fc65 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
2018-06-13Add 2 lua utilities functionRomain Forlot1-0/+50
Sleep function and a recursive table equality function Change-Id: I4cb3a0f0909674f03caeadeebd8da35f16391198 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2018-06-07Fix a compilation issue due to modif of AFB_ReqSuccessJonathan Aillet1-4/+4
The recent correction of the misspelling of AFB_ReqSuccess wasn't done in every file and results into a compilation error. This is corrected now. Change-Id: Ic378cbec105ab922d4195e6e525bf3a642895665 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-06-07Fixed crash due to call to json_object_putSebastien Douheret1-1/+0
Call to json_object_put seems no longer needed in LuaAfbSuccess. Change-Id: I2ee850605633b953217b3ad52a4a11059e841be3 Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
2018-06-07Fix segfault when printing long message from luaSebastien Douheret1-4/+6
Change-Id: Idb3cb8ebe94cc1670e8757c6ff713ab7ef107a8b Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
2018-06-07Fixed spelling of AFB_ReqSuccessSebastien Douheret5-6/+6
Also change event message from notice to debug level. Change-Id: I8dc891343ee7f744ea0e3c07455806eaf34c1d7e Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
2018-06-06Remove an unnecessary variableJonathan Aillet1-3/+1
This variable was meant to save the result of a function call, and be used into an 'if' statment. So, the function call was put directly into the 'if' statment. Bug-AGL: SPEC-1405 Change-Id: Ia352f5bbf310eadd91a19d80b813dc9f6d054028 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-06-06Make parsing of action loading non blockingJonathan Aillet1-1/+1
When an action is loaded in controller, parsing the json passed to describe the action was sending back an error if an unknown field was present. Now, the parsing just ignore unknown fields. Bug-AGL: SPEC-1405 Change-Id: If95144ad6190d5d2a45d731e82b28ab4caae7c32 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-06-01Use an external file for app fw functions linkJonathan Aillet2-120/+145
Use an external file for application framework include, for macro, and for typedef definitions used by the controller. In this way, it will be possible to include this file without getting all the specific controller definitions. Also define the correct version needed by the application framework for dynamic api. Change-Id: Ifaa09538f49ff2739eeb6a75527767961a2ef3b0 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
2018-05-31Use macro to test request validityJonathan Aillet1-3/+3
Use macro to test request validity before reponding to an api call. This macro handles if request is a pointer or a structure (depending if dynamic api are used). Change-Id: I2cd6539e0fe0b6e0324e82fbeef62731d0323be9 Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>