summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md163
1 files changed, 163 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..29d52db
--- /dev/null
+++ b/README.md
@@ -0,0 +1,163 @@
+# helloworld-service
+
+A binding example for AGL
+
+## Pre-requisites
+
+Please follow [this guide](http://docs.automotivelinux.org/master/docs/devguides/en/dev/reference/host-configuration/docs/1_Prerequisites.html)
+to add the AGL-Master repository to your distribution. In order to load these files into the current shell script, use the following command :
+
+* **Debian/Ubuntu**
+
+```bash
+source /etc/profile.d/agl-app-framework-binder.sh
+```
+
+Then install the cmake module using your distribution package manager.
+
+* **Debian/Ubuntu**
+
+```bash
+sudo apt-get install agl-cmake-apps-module-bin
+```
+
+* **openSUSE**
+
+```bash
+sudo zypper install agl-cmake-apps-module
+```
+
+* **Fedora**
+
+```bash
+sudo dnf install agl-cmake-apps-module
+```
+Because the helloworld-service binding uses json, the following package has to be installed.
+
+* **Debian/Ubuntu**
+
+```bash
+sudo apt-get install libjson-c-dev
+```
+
+* **openSUSE**
+
+```bash
+sudo zypper install libjson-c-dev
+```
+
+* **Fedora**
+
+```bash
+sudo dnf install libjson-c-dev
+```
+
+Binder and client communicate through HTTP protocol :
+
+* **Debian/Ubuntu**
+
+```bash
+sudo apt-get install agl-libmicrohttpd-dev
+```
+
+* **openSUSE**
+
+```bash
+sudo zypper install agl-libmicrohttpd-dev
+```
+
+* **Fedora**
+
+```bash
+sudo dnf install agl-libmicrohttpd-dev
+```
+
+## Setup
+
+```bash
+git clone https://gerrit.automotivelinux.org/gerrit/admin/repos/apps/agl-service-helloworld
+cd agl-service-helloworld
+```
+
+## Build for AGL
+
+```bash
+#setup your build environement
+. /xdt/sdk/environment-setup-aarch64-agl-linux
+#build your application
+./conf.d/autobuild/agl/autobuild package
+```
+
+## Build for 'native' Linux distros (Fedora, openSUSE, Debian, Ubuntu, ...)
+
+```bash
+./conf.d/autobuild/linux/autobuild package
+```
+
+You can also use binary package from OBS: [opensuse.org/LinuxAutomotive][opensuse.org/LinuxAutomotive]
+
+## Deploy
+
+### AGL
+
+```bash
+export YOUR_BOARD_IP=192.168.1.X
+export APP_NAME=helloworld-service
+scp build/${APP_NAME}.wgt root@${YOUR_BOARD_IP}:/tmp
+ssh root@${YOUR_BOARD_IP} afm-util install /tmp/${APP_NAME}.wgt
+APP_VERSION=$(ssh root@${YOUR_BOARD_IP} afm-util list | grep ${APP_NAME}@ | cut -d"\"" -f4| cut -d"@" -f2)
+ssh root@${YOUR_BOARD_IP} afm-util start ${APP_NAME}@${APP_VERSION}
+```
+
+## TEST
+
+### AGL
+
+```bash
+export YOUR_BOARD_IP=192.168.1.X
+export PORT=8000
+ssh root@${YOUR_BOARD_IP} afb-daemon --ws-client=unix:/run/user/0/apis/ws/helloworld --port=${PORT} --token='x' -v
+
+#On an other terminal
+ssh root@${YOUR_BOARD_IP} afb-client-demo -H 127.0.0.1:${PORT}/api?token=x helloworld ping true
+#or
+curl http://${YOUR_BOARD_IP}:${PORT}/api/helloworld/ping?token=x
+#For a nice display
+curl http://${YOUR_BOARD_IP}:${PORT}/api/helloworld/ping?token=x 2>/dev/null | python -m json.tool
+```
+
+### Native Linux
+
+For native build you need to have tools **afb-daemon**.
+You can build it by your self [app-framework-binder][app-framework-binder], or use binary package from OBS: [opensuse.org/LinuxAutomotive][opensuse.org/LinuxAutomotive]
+
+```bash
+export PORT=8000
+afb-daemon --port=${PORT} --ldpaths=/opt/AGL/helloworld-service/lib/
+
+curl http://localhost:${PORT}/api/helloworld/ping
+#For a nice display
+curl http://localhost:${PORT}/api/helloworld/ping 2>/dev/null | python -m json.tool
+
+```
+
+# Activate authentification security
+
+To test auth just switch the line:
+
+```diff
+ static const struct afb_verb_v2 verbs[]= {
+ /*Without security*/
+- { .verb = "ping" , .session = AFB_SESSION_NONE, .callback = pingSample , .auth = NULL},
++ /*{ .verb = "ping" , .session = AFB_SESSION_NONE, .callback = pingSample , .auth = NULL},*/
+ /*With security "urn:AGL:permission:monitor:public:get"*/
+- /*{ .verb = "ping" , .session = AFB_SESSION_NONE, .callback = pingSample , .auth = &_afb_auths_v2_monitor[1]},*/
++ { .verb = "ping" , .session = AFB_SESSION_NONE, .callback = pingSample , .auth = &_afb_auths_v2_monitor[1]},
+ {NULL}
+ };
+```
+
+And rebuild your application
+
+[opensuse.org/LinuxAutomotive]:https://en.opensuse.org/LinuxAutomotive
+[app-framework-binder]:https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/app-framework-binder