X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=README.md;h=b47f201e19e4938eecd6e70607aebc886f30160c;hb=refs%2Ftags%2Fhalibut_8.0.6;hp=d95824ffc24ade3c847b6176a9b9abc191f3d2a0;hpb=d5e93a474b94cb7a658042e2a129f4f3e69d1b65;p=apps%2Fagl-service-unicens.git diff --git a/README.md b/README.md index d95824f..b47f201 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,72 @@ ------------------------------------------------------------------------- -AGL-UNICENS binding expose UNICENS-V2 APIs through AGL framework ------------------------------------------------------------------------- +# UNICENS Service +## Overview +This service runs the "UNICENS Managament Library" which is responsible +to start an INICnet network and configure well-known nodes and create +audio/video routes. +The respective network setup is described in on an XML file which is +either automatically loaded after starting the service, or later on +demand. -AFB_daemon dependency on Standard Linux Distributions -------------------------------------------------------- - # handle dependencies > (OpenSuse-42.2, Fedora-25, Ubuntu 16.04.2LTS) - gcc > 4.8 - systemd-devel (libsystemd-dev>=222) - libuuid-devel - file-devel(OpenSuSe) or libmagic-dev(Ubuntu) - libjson-c-devel - alsa-devel - ElectricFence (BUG should not be mandatory) - libopenssl-devel libgcrypt-devel libgnutls-devel (optional but requested by libmicrohttpd for https) +## Verbs - OpenSuse >=42.2 - zypper in gcc5 gdb gcc5-c++ git cmake make ElectricFence systemd-devel libopenssl-devel libuuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel mxml-devel +| Name | Description | JSON Parameters | +|--------------------|-----------------------------------------------|-------------------------------------------------------------------| +| listconfig | List configuration files in a given directory.| *Request:* {"cfgpath": "/path/to/directory"} | +| initialise | Initialize the service by loading a specific configuration. | *Request:* {"filename": "/path/to/file.xml"} | +| subscribe | Subscribe to "node-availibility" event. | *Request:* { } | +| subscriberx | Subscribe to "rx-message" event. | *Request:* { } | +| sendmessage | Transmit a control message to a node. | *Request:* {"node" : 624, "msgid" : 123, "data" : "AAA="} | +| writei2c | Write I2C data to a node. | *Request:* {"node" : 624, "data" : [7,3,255]} | - Ubuntu >= 16.4 libuuid-devel - apt-get install cmake git electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev libmxml-dev +Please note that it may not be required to call the "initialze" verb. The binding call automatically "initialize" when it is started. +It automatically loads the configuration "data/config_multichannel_audio_kit.xml". This required that a compatible INICnet hardware is +connected and the respective driver is initialized. - libmicrohttpd>=0.9.54 (as today OpenSuse-42.2 or Ubuntu-.16.4 ship older versions) - afb-daemon from AGL Gerrit git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder +## Events +| Name | Description | JSON Parameters | +|--------------------|-----------------------------------------------|-------------------------------------------------------------------| +| node-availibility | Availability of a node has changed. | *Response:* {"node" : 624, "available" : true} | +| rx-message | Received a message from a node. | *Response:* {"node" : 624, "msgid" : 123, "data" : "AAA="} | + + +## Submodules +This service depends on the UNICENS Management Library which is published on GitHub. +See https://github.com/MicrochipTech/unicens for further information. + +## Hardware +AGL images are pre-configured to run with Microchip Slim Board Family. For furter information see https://github.com/MicrochipTech/unicens , +section "Hardware". + +# Build and Run on Standard Linux Distributions + +## Cloning Audio-Binding from Gerrit ``` - # Might want to add following variables into ~/.bashrc - echo "#---------- AGL options Start ---------" >>~/.bashrc - echo "# Object: AGL cmake option for binder/bindings" >>~/.bashrc - echo "# Date: `date`" >>~/.bashrc - echo 'export CC=gcc-5; export CXX=g++-5' >>~/.bashrc # if using gcc5 - echo 'export INSTALL_PREFIX=$HOME/opt' >>~/.bashrc - echo 'export LD_LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc - echo 'export LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc - echo 'export PKG_CONFIG_PATH=$INSTALL_PREFIX/lib64/pkgconfig:$INSTALL_PREFIX/lib/pkgconfig' >>~/.bashrc - echo 'export PATH=$INSTALL_PREFIX/bin:$PATH' >>~/.bashrc - echo 'export RSYNC_TARGET=MY_TARGET_HOSTNAME' >>~/.bashrc - echo 'export RSYNC_PREFIX=./opt' >>~/.bashrc - - echo "#---------- AGL options End ---------" >>~/.bashrc - source ~/.bashrc - - # install LibMicroHttpd - wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.54.tar.gz - tar -xzf libmicrohttpd-0.9.54.tar.gz - cd libmicrohttpd-0.9.54 - ./configure --prefix=$INSTALL_PREFIX - make - make install-strip - - # retrieve last AFB_daemon from AGL - git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder - - # Warning: previous GCC options should be set before initial cmake (clean Build/*) - cd app-framework-binder; mkdir -p build; cd build - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. - make - make install +git clone --recurse-submodules git clone https://gerrit.automotivelinux.org/gerrit/apps/agl-service-unicens +cd agl-service-unicens ``` +## Install AFB-Daemon from OBS +See chapter "Host Configuration" in AGL developers documentation. + +[Prerequisites](http://docs.automotivelinux.org/master/docs/devguides/en/dev/reference/host-configuration/docs/1_Prerequisites.html) + +[AGL Application Framework](http://docs.automotivelinux.org/master/docs/devguides/en/dev/reference/host-configuration/docs/2_AGL_Application_Framework.html) # Compile binding ``` - source ~/.bashrc # or any other file where your have place your compilation preferences - mkdir -p build - cd build - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. - make +source ~/.bashrc # or any other file where your have place your compilation preferences +mkdir -p build +cd build +cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. +make - afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs --token="" --verbose +afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs --token="" --verbose - speaker-test -twav -D hw:ep01 -c 2 - firefox http://localhost:1234 +speaker-test -twav -D hw:ep01 -c 2 +firefox http://localhost:1234 ``` # Archive @@ -90,18 +84,17 @@ Warning: technically AGL bindings are shared libraries loaded thought 'dlopen'. loaded libraries, but user should be warn that the actual path to sharelib symbols is directly inherited from DLOPEN. As a result if you change your directory after binder start with --workdir=xxx then GDB will not find symbols anymore - ``` - Examples: +Examples: - # WORK when running in direct - afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs +# WORK when running in direct +afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs - # FAIL when using GDB with warning: Could not load shared library .... - gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs - ... - warning: Could not load shared library symbols for ./build/ucs2-afb/afb-ucs2.so. - Do you need "set solib-search-path" or "set sysroot"? +# FAIL when using GDB with warning: Could not load shared library .... +gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs +... +warning: Could not load shared library symbols for ./build/ucs2-afb/afb-ucs2.so. +Do you need "set solib-search-path" or "set sysroot"? ... ``` @@ -110,17 +103,16 @@ loaded its bindings. Finally use "info sharedlibrary" and check 'SymsRead'. If e from the wrong relative directory, either you have to use 'set solib-search-path' to force the path. ``` - gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs - run - ... - NOTICE: API UNICENS added - NOTICE: Waiting port=1234 rootdir=. - NOTICE: Browser URL= http://localhost:1234 - (hit Ctrl-C to break the execution) - info sharedlibrary afb-* +gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs +run + ... + NOTICE: API UNICENS added + NOTICE: Waiting port=1234 rootdir=. + NOTICE: Browser URL= http://localhost:1234 +(hit Ctrl-C to break the execution) +info sharedlibrary afb-* ``` - # Running an debugging on a target ``` @@ -146,4 +138,19 @@ Note: remote-target-populate will Note that Netbeans impose to set debug directory to ./build/pkgout or it won't find binding symbols for source debugging +# Default Volume of Slim Amplifiers +The binding currently supports two use cases for amplifiers. +1. Amplifiers are initialized with a default volume. The head unit uses software volume + to change the volume of streaming data. +2. Amplifiers are initialized muted. The head unit uses hardware volume (e.g. HAL-MOST-UNICENS) + to change the volume of amplifiers remotely. +Use case 2 is the default use case. If you like to use this binding without hardware volume support +please adopt the ```config_multichannel_audio_kit.xml``` as explained below. + +``` + + + + +```