HOWTO WRITE an APPLICATION above AGL FRAMEWORK
==============================================
version: 1
- Date: 30 mai 2016
+ Date: 09 juin 2016
Author: José Bollo
-TABLE-OF-CONTENT-HERE
+
Programmation Languages for Applications
-----------------------------------------
Two examples of HTML5 applications are given:
-- [afb-client](https://github.com/iotbzh/afb-client) a simple "hello world" application template
+- [afb-client](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-demo.git;a=tree;f=afb-client) a simple "hello world" application template
-- [afm-client](https://github.com/iotbzh/afm-client) a simple "Home screen" application template
+- [afm-client](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-demo.git;a=tree;f=afm-client) a simple "Home screen" application template
### Writing a Qt application
It is also possible to write QML applications. A sample QML application [token-websock] is avaliable..
-- [token-websock](https://github.com/iotbzh/afb-daemon/blob/master/test/token-websock.qml)
+- [token-websock](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a=blob;f=test/token-websock.qml)
a simple "hello world" application in QML
### Writing "C" application
The program **afb-client-demo** is the C example that use
**libafbwsc** library.
Source code is available here
-[src/afb-client-demo.c](https://github.com/iotbzh/afb-daemon/blob/master/src/afb-client-demo.c).
+[src/afb-client-demo.c](https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a=blob;f=src/afb-client-demo.c).
Current implementation relies on libsystemd and file descriptors.
This model might be review in the future to support secure sockets
#### Using afb-client-demo
+> The program is packaged within AGL in the rpm **libafbwsc-dev**
+
Here is an example of exchange using **afb-client-demo**:
$ afb-client-demo ws://localhost:1234/api?token=123456
This object contains at least 2 mandatory fields of name **jtype** and **request**
and one optional field of name **response**.
+### Template
+
+This is a template of replies:
+
+```json
+{
+ "jtype": "afb-reply",
+ "request": {
+ "status": "success",
+ "info": "informationnal text",
+ "token": "e83b36f8-d945-463d-b983-5d8ed73ba52",
+ "uuid": "5fcc3f3d-4b84-4fc7-ba66-2d8bd34ae7d1",
+ "reqid": "application-generated-id-23456"
+ },
+ "response": ....any response object....
+}
+```
+
### Field jtype
The field **jtype** must have a value of type string equal to **"afb-reply"**.
This field response optionally contains an object returned when request succeeded.
+Format of events
+----------------
+
+Events are javascript object serialized as JSON.
+
+This object contains at least 2 mandatory fields of name **jtype** and **event**
+and one optional field of name **data**.
+
### Template
-This is a template of replies:
+Here is a template of event:
- {
- "jtype": "afb-reply",
- "request": {
- "status": "success",
- "info": "informationnal text",
- "token": "e83b36f8-d945-463d-b983-5d8ed73ba52",
- "uuid": "5fcc3f3d-4b84-4fc7-ba66-2d8bd34ae7d1",
- "reqid": "application-generated-id-23456"
- },
- "response": ....any response object....
- }
+```json
+{
+ "jtype": "afb-event",
+ "event": "sample_api_name/sample_event_name",
+ "data": ...any event data...
+}
+```
+
+### Field jtype
+
+The field **jtype** must have a value of type string equal to **"afb-event"**.
+
+### Field event
+
+The field **event** carries the event's name.
+
+The name of the event is made of two parts separated by a slash:
+the name of the name of the API that generated the event
+and the name of event within the API.
+
+### Field data
+
+This field data if present holds the data carried by the event.