summaryrefslogtreecommitdiffstats
path: root/mkdocs.yml
blob: 48b90152fa6f4d1e3311f9d262ed1b7f6dc46f10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
site_name: AGL Framework Binder
theme: readthedocs
docs_dir: docs
# tr '*])([' "-''''" < docs/SUMMARY.md | sed "s/^\(.*'\)'/  \1: '/"
pages:
  - 'Overview' : 'index.md'
  - 'Binder Overview': 'afb-introduction.md'
  - 'Binder daemon vocabulary': 'afb-daemon-vocabulary.md'
  - 'How to write a binding ?': 'afb-binding-writing.md'
  - 'Binding references':
    - 'Types and globals': 'reference-v3/types-and-globals.md'
    - 'Functions of class afb_api': 'reference-v3/func-api.md'
    - 'Functions of class afb_req': 'reference-v3/func-req.md'
    - 'Functions of class afb_event': 'reference-v3/func-event.md'
    - 'Functions of class afb_daemon': 'reference-v3/func-daemon.md'
    - 'Functions of class afb_service': 'reference-v3/func-service.md'
    - 'Macros for logging': 'reference-v3/macro-log.md'
  - 'Binder events guide': 'afb-events-guide.md'
  - 'Binder Application writing guide': 'afb-application-writing.md'
  - 'Annexes': 
    - 'Migration to binding v3': 'afb-migration-to-binding-v3.md'
    - 'WebSocket protocol x-afb-ws-json1': 'protocol-x-afb-ws-json1.md'
    - 'Installing the binder on a desktop': 'afb-desktop-package.md'
    - 'Options of afb-daemon': 'afb-daemon-options.md'
    - 'Debugging binder and bindings': 'afb-daemon-debugging.md'
    - 'LEGACY Guide to migrate bindings from v1 to v2': 'legacy/afb-migration-v1-to-v2.md'
    - 'LEGACY Binding V2 references': 'legacy/afb-binding-v2-references.md'
  - 'Document revisions': 'REVISIONS.md'
ework-binder $ mkdir build $ cd build $ cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DAGL_DEVEL=OFF \ -DINCLUDE_MONITORING=OFF \ -DINCLUDE_SUPERVISOR=OFF \ -DINCLUDE_DBUS_TRANSPARENCY=OFF \ -DINCLUDE_LEGACY_BINDING_V1=OFF \ -DINCLUDE_LEGACY_BINDING_VDYN=OFF \ -DAFS_SUPERVISOR_PORT=1619  \ -DAFS_SUPERVISOR_TOKEN="HELLO" \ -DAFS_SUPERVISION_SOCKET="@urn:AGL:afs:supervision:socket" \ -DUNITDIR_SYSTEM=${CMAKE_INSTALL_LIBDIR}/systemd/system \ .. $ make install The configuration options are: | Variable | Type | Feature |:----------------------------|:-------:|:------------------------------ | AGL_DEVEL | BOOLEAN | Activates development features | INCLUDE_MONITORING | BOOLEAN | Activates installation of monitoring | INCLUDE_SUPERVISOR | BOOLEAN | Activates installation of supervisor | INCLUDE_DBUS_TRANSPARENCY | BOOLEAN | Allows API transparency over DBUS | INCLUDE_LEGACY_BINDING_V1 | BOOLEAN | Includes the legacy Binding API version 1 | INCLUDE_LEGACY_BINDING_VDYN | BOOLEAN | Includes the legacy Binding API version dynamic | AFS_SUPERVISOR_PORT | INTEGER | Port of service for the supervisor | AFS_SUPERVISOR_TOKEN | STRING | Secret token for the supervisor | AFS_SUPERVISION_SOCKET | STRING | Internal socket path for supervision (internal if starts with @) | UNITDIR_SYSTEM | STRING | Path to systemd system unit files for installing supervisor ***** TO BE COMPLETED ***** ## Simple demo ### Testing/Debug ``` $ ${AFB_DAEMON_DIR}/build/src/afb-daemon --help $ ${AFB_DAEMON_DIR}/build/src/afb-daemon --port=1234 --token='' --ldpaths=${AFB_DAEMON_DIR}/build --sessiondir=/tmp --rootdir=${AFB_DAEMON_DIR}/test ``` ### Starting ``` $ afb-daemon --help $ afb-daemon --verbose --port=<port> --token='' --sessiondir=<working directory> --rootdir=<web directory (index.html)> ``` ### Example ``` $ afb-daemon --verbose --port=1234 --token='' --sessiondir=/tmp --rootdir=/srv/www/htdocs --alias=icons:/usr/share/icons ``` ### Directories & Paths Default behaviour is to locate ROOTDIR in $HOME/.AFB ### REST API Developers are intended to provide a structure containing : API name, corresponding methods/callbacks, and optionally a context and a handle. A handle is a void* structure automatically passed to API callbacks. Callbacks also receive HTTP GET data as well as HTTP POST data, in case a POST method was used. Every method should return a JSON object or NULL in case of error. API plugins can be protected from timeout and other errors. By default this behaviour is deactivated, use --apitimeout to activate it. STATIC AFB_restapi myApis[]= { {"ping" , AFB_SESSION_NONE, (AFB_apiCB)ping, "Ping Function"}, {"action1" , AFB_SESSION_CHECK, (AFB_apiCB)action1 , "Action-1"}, {"action2" , AFB_SESSION_CHECK, (AFB_apiCB)action2 , "Action-2"}, {NULL} }; PUBLIC AFB_plugin *pluginRegister () { AFB_plugin *plugin = malloc (sizeof (AFB_plugin)); plugin->type = AFB_PLUGIN_JSON; plugin->info = "Plugin Sample"; plugin->prefix= "myPlugin"; plugin->apis = myApis; return (plugin); } ### HTML5 and AngularJS Redirects Binder supports HTML5 redirect mode even with an application baseurl. Default value for application base URL is /opa. See Application Framework HTML5 Client template at https://github.com/iotbzh/afb-client-sample If the Binder receives something like _http://myopa/sample_ when sample is not the homepage of the AngularJS OPA, it will redirect to _http://myopa/#!sample_. This redirect will return the _index.html_ OPA file and will notify AngularJS not to display the homepage, but the sample page. Warning: in order for AngularJS applications to be able to work with both BASEURL="/" and BASEURL="/MyApp/", all page references have to be relative. Recommended model is to develop with a BASEURL="/opa" as any application working with a BASEURL will work without, while the opposite is not true. Note: If a resource is not accessible from ROOTDIR then the "--alias" switch should be used, as in: --alias=/icons:/usr/share/icons. Only use alias for external support static files. This should not be used for API and OPA. ### Ongoing work Javascript plugins. As of today, only C plugins are supported, but JS plugins are on the TODO list.