aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 64198b67de9ef147954beb8494bc5978439cb158 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
HVAC bindings and client application for Application Framework Binder
=====================================================================

_(Application Framework Binder can be found on https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/app-framework-binder)_

Installation
------------

Download and install IoT.bzh docker image and sdk.

    1. Follow [this guide](http://iot.bzh/download/public/2016/sdk/AGL-Devkit-Image-and-SDK-for-porter.pdf)
       to get your docker ready and running.

    2. Check out this repository
       git clone https://gerrit.automotivelinux.org/gerrit/src/hvacplugin -c b sandbox/claneys/hvac-bindings

Build project
-------------

Get into build directory under hvacplugin repo and build the widget:

    - cd hvacplugin/build

    - cmake .. && make

It will build the binding with QML Frontend and package all that into a wgt file
named : hvac-hybrid-qml.wgt

Install and test the widget
--------------------------

### Installation

Transfer the wgt file on your platform with scp :

```C
     $ scp hvac-hybrid-qml.wgt root@<your_porter_board>:/tmp

```
than install it using afm-util:

```C
    # afm-util install /tmp/hvac-hybrid-qml.wgt
    { "added": "hvac-hybrid-qml@0.1" }

```
### Test

You can launch bindings using the afb-daemoni, starting them manually like this,
don't forget to change <chosen_port> and <chosen_token> by your choice using an
unused port and a random number for the security token:

```C
# /usr/bin/afb-daemon --ldpaths=/usr/lib/afb:/usr/share/afm/applications/hvac-hybrid-qml/0.1/lib --mode=local --readyfd=8 --alias=/icons:/usr/share/afm/icons --port=<chosen_port> --rootdir=/usr/share/afm/applications/hvac-hybrid-qml/0.1 --roothttp=htdocs --token=<chosen_token> --sessiondir=/home/root/app-data/hvac-hybrid-qml/.afb-daemon &
NOTICE: binding [/usr/lib/afb/afb-dbus-binding.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/lib/afb/afb-dbus-binding.so loaded with API prefix dbus
NOTICE: binding [/usr/lib/afb/authLogin.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/lib/afb/authLogin.so loaded with API prefix auth
NOTICE: binding [/usr/share/afm/applications/hvac-hybrid-qml/0.1/lib/hvac-hybrid-qml.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/share/afm/applications/hvac-hybrid-qml/0.1/lib/hvac-hybrid-qml.so loaded with API prefix hvac
NOTICE: Waiting port=12357 rootdir=/usr/share/afm/applications/hvac-hybrid-qml/0.1
NOTICE: Browser URL= http:/*localhost:12357
```

With bindings launched you can now test them using afm-demo-client as you have
to communicate with bindings using WebSocket protocol. When connection 
established you can dialog with binding using api/verbs from application
framework and running bindings. At first, try to authenticate with ```auth
connect``` which will renew token and create a new session context for the running
app.

Then test following verbs using api ***hvac***:

    - ping : Ping the binder
    - get_temp_left_zone : Get the left zone temperature
    - get_temp_right_zone : Get the right zone temperature
    - set_temp_left_zone : Set the left zone temperature
    - set_temp_right_zone : Set the right zone temperature
    - set_fanspeed : Set fanspeed
    - get_fanspeed : Read fan speed
    - get_all : Read all values

```C
# afb-client-demo ws://localhost:<chosen_port>/api?token=<chosen_token>
auth connect
ON-REPLY 1:auth/connect: {"response":{"token":"A New Token and Session Context Was Created"},"jtype":"afb-reply","request":{"status":"success","token":"4dc950c6-856d-4cff-81e7-f914b4319008","uuid":"7a687f25-90db-4d4f-8881-2e505c151176"}}
hvac get_all
ON-REPLY 2:hvac/get_all: {"response":{"LeftTemperature":21,"RightTemperature":21,"FanSpeed":0},"jtype":"afb-reply","request":{"status":"success"}}

```
TODO: QML files aren't modified to fit with bindings for now. They have to be modified to make hybrid application works.