summaryrefslogtreecommitdiffstats
path: root/README.md
blob: fb98fc8c7ad1fad9662c2e801d716ede97b59ac6 (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
------------------------------------------------------------------------
AGL-AudioBindings expose ALSA, Pulse & Most APIs through AGL framework
------------------------------------------------------------------------
http://www.linuxjournal.com/node/6735/print
http://equalarea.com/paul/alsa-audio.html
http://mpd.wikia.com/wiki/Alsa
http://alsa.opensrc.org/How_to_use_softvol_to_control_the_master_volume

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) 
    uuid-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)

    OpenSuse >=42.2 
      zypper in gcc5 gdb gcc5-c++ cmake ElectricFence systemd-devel libopenssl-devel uuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel 

    Ubuntu >= 16.4
      apt-get install cmake electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev

    libmicrohttpd with AGL patches http://iot.bzh/download/public/2016/appfw/libmicrohttpd-0.9.49-agl.tgz
    afb-daemon from AGL Gerrit git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder

```
    # Might want to add following variables into ~/.bashrc
    # export CC=gcc-5; export CXX=g++-5  # if using gcc5
    
    echo 'export LIBPOSTFIX=64'>>~/.bashrc
    echo 'export DEST=$HOME/opt' >>~/.bashrc
    echo 'export LD_LIBRARY_PATH=$DEST/lib${LIBPOSTFIX}' >>~/.bashrc
    echo 'export LIBRARY_PATH=$DEST/lib${LIBPOSTFIX}' >>~/.bashrc
    echo 'export PKG_CONFIG_PATH=$DEST/lib${LIBPOSTFIX}/pkgconfig' >>~/.bashrc
    echo 'export PATH=$DEST/bin:$PATH' >>~/.bashrc
    source ~/.bashrc

    # install AGL pached version of LibMicroHttpd
    wget http://iot.bzh/download/public/2016/appfw/libmicrohttpd-0.9.49-agl.tgz
    tar -xzf libmicrohttpd-0.9.49-agl.tgz
    cd libmicrohttpd-0.9.49-agl
    ./configure --prefix=$DEST
    make
    make install-strip

    # retreive 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 build; cd build 
    cmake -DCMAKE_INSTALL_PREFIX=$DEST ..
    make
    make install 
```


```
# Compile binding
INSTALL_DIR=xxxx # default ./Install
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR ..
make
make install
ls

# Start the binder

# From Development Tree
  afb-daemon --verbose --token="" --ldpaths=./build --port=1234 --roothttp=./htdoc

# From $INSTALL_DIR
  afb-daemon --verbose --token="" --ldpaths=$INSTALL_DIR/lib/audio --port=1234 --roothttp=$INSTALL_DIR/htdocs/audio-bindings
```
# replace hd:XX with your own sound card ID ex: "hw:0", "hw:PCH", ...
Start a browser on http://localhost:1234?devid=hw:XX

Start AlsaMixer and change volume you should see event in your browser
```
alsamixer -D hw:0
```
class="nv">built also without fftw support (with reduced functionality). # It would be better to always enable alsabat, but provide an option for # enabling/disabling fftw. The configure script doesn't support that, however # (at least in any obvious way), so for now we only support alsabat with fftw # or no alsabat at all. PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf" PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev" PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" MIRRORS += "\ ftp://ftp.alsa-project.org http://www.mirrorservice.org/sites/ftp.alsa-project.org \n \ " SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \ " SRC_URI[md5sum] = "50ae75567459646b843bed78d916b002" SRC_URI[sha256sum] = "155caecc40b2220f686f34ba3655a53e3bdbc0586adb1056733949feaaf7d36e" # On build machines with python-docutils (not python3-docutils !!) installed # rst2man (not rst2man.py) is detected and compile fails with # | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'. Stop. # Avoid this by disabling expicitly EXTRA_OECONF = "--disable-rst2man" inherit autotools gettext pkgconfig manpages # This are all packages that we need to make. Also, the now empty alsa-utils # ipk depends on them. ALSA_UTILS_PKGS = "\ ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \ alsa-utils-alsamixer \ alsa-utils-alsatplg \ alsa-utils-midi \ alsa-utils-aplay \ alsa-utils-amixer \ alsa-utils-aconnect \ alsa-utils-iecset \ alsa-utils-speakertest \ alsa-utils-aseqnet \ alsa-utils-aseqdump \ alsa-utils-alsactl \ alsa-utils-alsaloop \ alsa-utils-alsaucm \ " PACKAGES += "${ALSA_UTILS_PKGS}" RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}" FILES_${PN} = "" FILES_alsa-utils-alsabat = "${bindir}/alsabat" FILES_alsa-utils-alsatplg = "${bindir}/alsatplg" FILES_alsa-utils-aplay = "${bindir}/aplay ${bindir}/arecord" FILES_alsa-utils-amixer = "${bindir}/amixer" FILES_alsa-utils-alsamixer = "${bindir}/alsamixer" FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/" FILES_alsa-utils-midi = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi" FILES_alsa-utils-aconnect = "${bindir}/aconnect" FILES_alsa-utils-aseqnet = "${bindir}/aseqnet" FILES_alsa-utils-iecset = "${bindir}/iecset" FILES_alsa-utils-alsactl = "${sbindir}/alsactl */udev/rules.d */*/udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/" FILES_alsa-utils-aseqdump = "${bindir}/aseqdump" FILES_alsa-utils-alsaloop = "${bindir}/alsaloop" FILES_alsa-utils-alsaucm = "${bindir}/alsaucm" SUMMARY_alsa-utils-alsabat = "Command-line sound tester for ALSA sound card driver" SUMMARY_alsa-utils-alsatplg = "Converts topology text files into binary format for kernel" SUMMARY_alsa-utils-aplay = "Play (and record) sound files using ALSA" SUMMARY_alsa-utils-amixer = "Command-line control for ALSA mixer and settings" SUMMARY_alsa-utils-alsamixer = "ncurses-based control for ALSA mixer and settings" SUMMARY_alsa-utils-speakertest = "ALSA surround speaker test utility" SUMMARY_alsa-utils-midi = "Miscellaneous MIDI utilities for ALSA" SUMMARY_alsa-utils-aconnect = "ALSA sequencer connection manager" SUMMARY_alsa-utils-aseqnet = "Network client/server for ALSA sequencer" SUMMARY_alsa-utils-iecset = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits" SUMMARY_alsa-utils-alsactl = "Saves/restores ALSA-settings in /etc/asound.state" SUMMARY_alsa-utils-aseqdump = "Shows the events received at an ALSA sequencer port" SUMMARY_alsa-utils-alsaloop = "ALSA PCM loopback utility" SUMMARY_alsa-utils-alsaucm = "ALSA Use Case Manager" RRECOMMENDS_alsa-utils-alsactl = "alsa-states" ALLOW_EMPTY_alsa-utils = "1" do_install() { autotools_do_install # We don't ship this here because it requires a dependency on bash. # See alsa-utils-scripts_${PV}.bb rm ${D}${sbindir}/alsaconf rm ${D}${sbindir}/alsa-info.sh rm -f ${D}${sbindir}/alsabat-test.sh # If udev is disabled, we told configure to install the rules # in /unwanted, so we can remove them now. If udev is enabled, # then /unwanted won't exist and this will have no effect. rm -rf ${D}/unwanted }