UNICENS Controller Service

This is an AGL service which provides a clear API to control UNICENS network devices. This service requires the agl-service-unicens in order to communicate with the respective network devices.

API Description


The name of the provided API is unicens-controller.


Name Description JSON Parameters
slimamp_master_volume_set Set master volume of the slim amplifer. Request: { "value": 0 }
Valid range for value: 0..100
amplifier_master_volume_set Set master volume of the Fiberdyne amplifer. Request: { "value": 0 }
Valid range for value: 0..100
microphone_is_available Check if the microphone present in network. Request: {}
Response: { "available": true }
microphone_mode_set Set LED mode of microphone. See section Verb microphone_mode_set
microphone_doa_get Get the direction of audio. Request: {}
Response: { "value": 45 }
Valid range for value: 0..359
microphone_doa_set Sets the direction of audio (LED). Request: { "value": 45 }
Valid range for value: 0..359
microphone_static_color_set Sets color of 'static' LED Mode. Request: { "red": 0, "green": 0, "blue": 255 }
Valid range for each color: 0..255

Verb microphone_mode_set

You can set an LED signaling mode with the following parameters.

Name Description
value none, doa, thinking, speaking, error, waking, ending, static, cylon, rainbow, wheel



Supported Hardware

  • Slim Amplifier (Microchip Slim Board Family)
  • Fiberdyne Amplifier

Setup for a Native Linux Environment


Download and Compile the Sources

Since there are two bindings required, we will create one work space and download the repositories here.

$ mkdir ws_unicens
$ cd ws_unicens
$ git checkout --recurse-submodules https://git.automotivelinux.org/apps/agl-service-unicens
$ git checkout --recurse-submodules https://git.automotivelinux.org/apps/agl-service-unicens-controller

Now create a build folder and build the agl-service-unicens.

$ cd agl-service-unicens
$ mkdir build
$ cd build
$ cmake ..
$ make
$ cd ..

Now create a build folder and build the agl-service-unicens-controller.

$ cd agl-service-unicens-controller
$ mkdir build
$ cd build
$ cmake ..
$ make
$ cd ..

Setup Environment Variables

In the workspace folder setup the following varables. You may set the resulting paths also in your ~/.bashrc file.

$ export AGL_UCS_PATH=$PWD
$ export AFM_APP_INSTALL_DIR=$PWD/agl-service-unicens/build/package

Start both Services

It is possible to start both bindings by executing the following command:

$ afb-daemon --name=afb-unicens \
--binding=$AGL_UCS_PATH/agl-service-unicens-controller/build/package/lib/afb-ucs2-ctrl.so \
--binding=$AGL_UCS_PATH/agl-service-unicens/build/package/lib/afb-ucs2.so \
--workdir=$AGL_UCS_PATH/agl-service-unicens/build \
--roothttp=$AGL_UCS_PATH/agl-service-unicens-controller/htdocs \
--port=1234 --no-ldpaths --tracereq=common --token= --verbose

Test the Services

You may open the testing web interface on http://localhost:1234/ or execute one of the following commands.

$ curl http://localhost:1234/api/unicens-controller/ping
$ afb-client-demo -H localhost:1234/api?token= unicens-controller ping
$ afb-client-demo -H localhost:1234/api?token= unicens-controller slimamp_master_volume_set "{'value':25}"
$ afb-client-demo -H localhost:1234/api?token= unicens-controller amplifier_master_volume_set "{'value':25}"
$ afb-client-demo -H localhost:1234/api?token= unicens-controller microphone_mode_set "{'value' : 'doa'}"

Test on AGL Target Platform


  • AGL SDK must be installed

Download and Cross-Compile the Sources

Execute the follwing commands to download the sources and create the widget.

$ git checkout --recurse-submodules https://git.automotivelinux.org/apps/agl-service-unicens-controller
$ cd agl-service-unicens-controller
$ mkdir build
$ cd build
$ source /opt/agl-sdk/<environment-setup-user-dependent>
$ cmake ..
$ make
$ make widget

Install Widget on the Target Platform

Copy the widget to the target and install by executing the following command.

$ afm-util install agl-service-unicens-controller.wgt

>>> Remember the following response to find out the correct port.
>>> {
>>>   "added":"agl-service-unicens-controller@<...>"
>>> }

$ afm-util info agl-service-unicens-controller@<...> | grep http-port

>>> Remember the port for the following test commands.

Please reboot the system and test the binding by executing the following commands. Replace 31022 by the previously discovered http-port.

afb-client-demo --human 'localhost:31022/api?token=HELLO&uuid=magic' unicens-controller ping
afb-client-demo --human 'localhost:31022/api?token=HELLO&uuid=magic' unicens-controller slimamp_master_volume_set "{'value' : 35}"
afb-client-demo --human 'localhost:31022/api?token=HELLO&uuid=magic' unicens-controller amplifier_master_volume_set "{'value' : 35}"
afb-client-demo --human 'localhost:31022/api?token=HELLO&uuid=magic' unicens-controller microphone_mode_set "{'value' : 'doa'}"