X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=doc%2Fafb-application-writing.md;h=14199f62c5f0778c128d67595b117032e3a7291d;hb=540ece2baf7de59565b42d427e206769ec4da56a;hp=ee5834798b108c5fae8d6e1f9f385f4932a8cc2e;hpb=8e83c4de6a2366b96ab950c1d69db830483fb9ff;p=src%2Fapp-framework-binder.git diff --git a/doc/afb-application-writing.md b/doc/afb-application-writing.md index ee583479..14199f62 100644 --- a/doc/afb-application-writing.md +++ b/doc/afb-application-writing.md @@ -1,10 +1,6 @@ + HOWTO WRITE an APPLICATION above AGL FRAMEWORK ============================================== - version: 1 - Date: 30 mai 2016 - Author: José Bollo - -TABLE-OF-CONTENT-HERE Programmation Languages for Applications ----------------------------------------- @@ -23,9 +19,9 @@ In a near future, JSON-RPC protocol should be added to complete current x-afb-js 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 @@ -33,7 +29,7 @@ Writing Qt applications is also supported. Qt offers standard API to send reques 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 @@ -46,7 +42,7 @@ to connect with an afb-daemon binder. 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 @@ -166,6 +162,8 @@ Checking on closed session for uuid should be refused: #### 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 @@ -202,6 +200,24 @@ Replies use javascript object returned as serialized JSON. 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"**. @@ -240,19 +256,39 @@ Value returns in the reply has the exact same value as the one received in the r 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.