summaryrefslogtreecommitdiffstats
path: root/conf.d
diff options
context:
space:
mode:
authorTai Vuong <tvuong@audiokinetic.com>2017-08-24 16:33:40 -0400
committerTai Vuong <tvuong@audiokinetic.com>2017-08-24 16:33:40 -0400
commit94b4cfd3fa2a24736808ed854903f4c3038c9e11 (patch)
tree6e543167873f513925624ee2f2d641410def3a3d /conf.d
Initial commit
Diffstat (limited to 'conf.d')
-rw-r--r--conf.d/CMakeLists.txt22
-rwxr-xr-xconf.d/autobuild/agl/autobuild63
-rwxr-xr-xconf.d/autobuild/linux/autobuild63
-rw-r--r--conf.d/cmake/config.cmake156
-rw-r--r--conf.d/project/CMakeLists.txt24
-rw-r--r--conf.d/project/alsa.d/asoundrc.sample146
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf6
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HiFi.conf84
-rw-r--r--conf.d/project/alsa.d/ucm.sample/README2
9 files changed, 566 insertions, 0 deletions
diff --git a/conf.d/CMakeLists.txt b/conf.d/CMakeLists.txt
new file mode 100644
index 0000000..28a0609
--- /dev/null
+++ b/conf.d/CMakeLists.txt
@@ -0,0 +1,22 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: Fulup Ar Foll <fulup@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+
+# Include any directory not starting with _
+# -----------------------------------------------------
+PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN})
diff --git a/conf.d/autobuild/agl/autobuild b/conf.d/autobuild/agl/autobuild
new file mode 100755
index 0000000..4811441
--- /dev/null
+++ b/conf.d/autobuild/agl/autobuild
@@ -0,0 +1,63 @@
+#!/usr/bin/make -f
+# Copyright (C) 2015, 2016 "IoT.bzh"
+# Author "Romain Forlot" <romain.forlot@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+THISFILE := $(lastword $(MAKEFILE_LIST))
+BUILD_DIR := $(abspath $(dir $(THISFILE)/../../../../..)/build)
+DEST := ${BUILD_DIR}/target
+
+.PHONY: all clean distclean configure build package help update
+
+all: help
+
+help:
+ @echo "List of targets available:"
+ @echo ""
+ @echo "- all"
+ @echo "- clean"
+ @echo "- distclean"
+ @echo "- configure"
+ @echo "- build"
+ @echo "- package"
+ @echo ""
+ @echo "Usage: ./conf.d/autobuild/agl/autobuild package DEST=${HOME}/opt"
+ @echo "Don't use your build dir as DEST as wgt file is generated at this location"
+
+update: configure
+ @cmake --build ${BUILD_DIR} --target autobuild
+
+clean:
+ @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} clean) || echo Nothing to clean
+
+distclean:
+ @rm -rf ${BUILD_DIR}
+
+configure: ${BUILD_DIR}/Makefile
+
+build: configure
+ @cmake --build ${BUILD_DIR} ${BUILD_ARGS} --target all
+
+package: build
+ @mkdir -p ${BUILD_DIR}/$@/bin
+ @mkdir -p ${BUILD_DIR}/$@/etc
+ @mkdir -p ${BUILD_DIR}/$@/lib
+ @mkdir -p ${BUILD_DIR}/$@/htdocs
+ @mkdir -p ${BUILD_DIR}/$@/data
+ @cmake --build ${BUILD_DIR} --target widget
+ @mkdir -p ${DEST} && cp ${BUILD_DIR}/*wgt ${DEST}
+
+${BUILD_DIR}/Makefile:
+ @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR}
+ @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && cmake ${CONFIGURE_ARGS} ..)
diff --git a/conf.d/autobuild/linux/autobuild b/conf.d/autobuild/linux/autobuild
new file mode 100755
index 0000000..4811441
--- /dev/null
+++ b/conf.d/autobuild/linux/autobuild
@@ -0,0 +1,63 @@
+#!/usr/bin/make -f
+# Copyright (C) 2015, 2016 "IoT.bzh"
+# Author "Romain Forlot" <romain.forlot@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+THISFILE := $(lastword $(MAKEFILE_LIST))
+BUILD_DIR := $(abspath $(dir $(THISFILE)/../../../../..)/build)
+DEST := ${BUILD_DIR}/target
+
+.PHONY: all clean distclean configure build package help update
+
+all: help
+
+help:
+ @echo "List of targets available:"
+ @echo ""
+ @echo "- all"
+ @echo "- clean"
+ @echo "- distclean"
+ @echo "- configure"
+ @echo "- build"
+ @echo "- package"
+ @echo ""
+ @echo "Usage: ./conf.d/autobuild/agl/autobuild package DEST=${HOME}/opt"
+ @echo "Don't use your build dir as DEST as wgt file is generated at this location"
+
+update: configure
+ @cmake --build ${BUILD_DIR} --target autobuild
+
+clean:
+ @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} clean) || echo Nothing to clean
+
+distclean:
+ @rm -rf ${BUILD_DIR}
+
+configure: ${BUILD_DIR}/Makefile
+
+build: configure
+ @cmake --build ${BUILD_DIR} ${BUILD_ARGS} --target all
+
+package: build
+ @mkdir -p ${BUILD_DIR}/$@/bin
+ @mkdir -p ${BUILD_DIR}/$@/etc
+ @mkdir -p ${BUILD_DIR}/$@/lib
+ @mkdir -p ${BUILD_DIR}/$@/htdocs
+ @mkdir -p ${BUILD_DIR}/$@/data
+ @cmake --build ${BUILD_DIR} --target widget
+ @mkdir -p ${DEST} && cp ${BUILD_DIR}/*wgt ${DEST}
+
+${BUILD_DIR}/Makefile:
+ @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR}
+ @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && cmake ${CONFIGURE_ARGS} ..)
diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake
new file mode 100644
index 0000000..08e79fc
--- /dev/null
+++ b/conf.d/cmake/config.cmake
@@ -0,0 +1,156 @@
+###########################################################################
+# Copyright 2017 Audiokinetic
+#
+# author: Tai Vuong <tvuong@audiokinetic.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+# Project Info
+# ------------------
+set(PROJECT_NAME afb-audiohighlevel)
+set(PROJECT_VERSION "0.1")
+set(PROJECT_PRETTY_NAME "Audio High Level Binding")
+set(PROJECT_DESCRIPTION "Give an High Level Binding for all AGL applications")
+set(PROJECT_URL "https://github.com/Audiokinetic-Automotive/afb-audiohighlevel")
+set(PROJECT_ICON "icon.png")
+set(PROJECT_AUTHOR "Tai, Vuong")
+set(PROJECT_AUTHOR_MAIL "tvuong@audiokinetic.com")
+set(PROJECT_LICENCE "Apache-V2")
+set(PROJECT_LANGUAGES,"C")
+
+
+# Where are stored default templates files from submodule or subtree app-templates in your project tree
+# relative to the root project directory
+set(PROJECT_APP_TEMPLATES_DIR "conf.d/app-templates")
+
+# Use any directory that does not start with _ as valid source rep
+set(PROJECT_SRC_DIR_PATTERN "[^_]*")
+
+# Compilation Mode (DEBUG, RELEASE)
+# ----------------------------------
+set(CMAKE_BUILD_TYPE "DEBUG")
+
+# Compiler selection if needed. Overload the detected compiler.
+# -----------------------------------------------
+set (gcc_minimal_version 4.9)
+#set(CMAKE_C_COMPILER "gcc")
+#set(CMAKE_CXX_COMPILER "g++")
+
+# When Present LUA is used by the controller
+# ---------------------------------------------------------------
+set(CONTROL_SUPPORT_LUA 1 CACHE BOOL "Active or not LUA Support")
+
+# PKG_CONFIG required packages
+# -----------------------------
+set (PKG_REQUIRED_LIST
+ alsa>=1.1.2
+ libsystemd>=222
+ libmicrohttpd>=0.9.55
+ afb-daemon
+ json-c
+ libafbwsc
+)
+
+# Compilation options definition
+# Use CMake generator expressions to specify only for a specific language
+# Values are prefilled with default options that is currently used.
+# Either separate options with ";", or each options must be quoted separately
+# DO NOT PUT ALL OPTION QUOTED AT ONCE , COMPILATION COULD FAILED !
+# ----------------------------------------------------------------------------
+set(COMPILE_OPTIONS
+-Wall
+-Wextra
+-Wconversion
+-Wno-unused-parameter
+-Wno-sign-compare
+-Wno-sign-conversion
+-Werror=maybe-uninitialized
+-Werror=implicit-function-declaration
+-ffunction-sections
+-fdata-sections
+-fPIC
+# Personal compilation options
+-DMAX_SND_CARD=16 # should be more than enough even in luxury vehicule
+-DMAX_LINEAR_DB_SCALE=24 # until 24db volume normalisation use a simple linear scale
+-DTLV_BYTE_SIZE=256 # Alsa use 4096 as default but 256 should fit most sndcards
+-DCONTROL_MAXPATH_LEN=255
+ CACHE STRING "Compilation flags")
+#set(C_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C language.")
+#set(CXX_COMPILE_OPTIONS "" CACHE STRING "Compilation flags for C++ language.")
+#set(PROFILING_COMPILE_OPTIONS -g -O0 -pg -Wp,-U_FORTIFY_SOURCE CACHE STRING "Compilation flags for PROFILING build type.")
+#set(DEBUG_COMPILE_OPTIONS -g -ggdb -Wp,-U_FORTIFY_SOURCE CACHE STRING "Compilation flags for DEBUG build type.")
+#set(CCOV_COMPILE_OPTIONS -g -O2 --coverage CACHE STRING "Compilation flags for CCOV build type.")
+#set(RELEASE_COMPILE_OPTIONS -g -O2 CACHE STRING "Compilation flags for RELEASE build type.")
+
+# Print a helper message when every thing is finished
+# ----------------------------------------------------
+if(IS_DIRECTORY $ENV{HOME}/opt/afb-monitoring)
+set(MONITORING_ALIAS "--alias=/monitoring:$ENV{HOME}/opt/afb-monitoring")
+endif()
+
+
+
+# Optional location for config.xml.in
+# -----------------------------------
+#set(WIDGET_ICON conf.d/wgt/${PROJECT_ICON} CACHE PATH "Path to the widget icon")
+#set(WIDGET_CONFIG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/conf.d/wgt/config.xml.in CACHE PATH "Path to widget config file template (config.xml.in)")
+
+# Optional dependencies order
+# ---------------------------
+#set(EXTRA_DEPENDENCIES_ORDER)
+
+# Optional Extra global include path
+# -----------------------------------
+# set(EXTRA_INCLUDE_DIRS)
+
+# Optional extra libraries
+# -------------------------
+# set(EXTRA_LINK_LIBRARIES)
+
+# Optional force binding installation
+# ------------------------------------
+# set(BINDINGS_INSTALL_PREFIX PrefixPath )
+
+# Optional force widget prefix generation
+# ------------------------------------------------
+# set(WIDGET_PREFIX DestinationPath)
+
+# Optional Widget entry point file.
+# ---------------------------------------------------------
+# This is the file that will be executed, loaded,...
+# at launch time by the application framework
+set(WIDGET_ENTRY_POINT lib/afb-audiohighlevel.so)
+
+# Optional Widget Mimetype specification
+# --------------------------------------------------
+# Choose between :
+# - application/x-executable
+# - application/vnd.agl.url
+# - application/vnd.agl.service
+# - application/vnd.agl.native
+# - text/vnd.qt.qml
+# - application/vnd.agl.qml
+# - application/vnd.agl.qml.hybrid
+# - application/vnd.agl.html.hybrid
+#
+set(WIDGET_TYPE application/vnd.agl.service)
+
+# Optional force binding Linking flag
+# ------------------------------------
+# set(BINDINGS_LINK_FLAG LinkOptions )
+
+# This include is mandatory and MUST happens at the end
+# of this file, else you expose you to unexpected behavior
+# -----------------------------------------------------------
+include(${PROJECT_APP_TEMPLATES_DIR}/cmake/common.cmake)
diff --git a/conf.d/project/CMakeLists.txt b/conf.d/project/CMakeLists.txt
new file mode 100644
index 0000000..fd4d454
--- /dev/null
+++ b/conf.d/project/CMakeLists.txt
@@ -0,0 +1,24 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: Fulup Ar Foll <fulup@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+
+
+# Include anything not starting with _
+PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN})
+
+
diff --git a/conf.d/project/alsa.d/asoundrc.sample b/conf.d/project/alsa.d/asoundrc.sample
new file mode 100644
index 0000000..8976077
--- /dev/null
+++ b/conf.d/project/alsa.d/asoundrc.sample
@@ -0,0 +1,146 @@
+#
+# Author: Fulup Ar Foll
+# Object: PCM hook type
+#
+# Test : Note: Jabra_USB=hw:v1340
+# Check SoundCard speaker-test -Dhw:v1340 -c2 -twav
+# Check MixerPCM speaker-test -DMyMixerPCM -c2 -twav
+# Check HookPCM speaker-test -DMyNavigationHook -c2 -twav
+# Check NavPCM speaker-test -DMyNavPCM -c2 -twav
+# MultiMedia aplay -DDMyNavPCM /usr/share/sounds/alsa/test.wav
+#
+# Bug/Feature: when softvol control is initialised from plugin and not
+# from AGL binding. At 1st run ctl has invalid TLV and cannot be
+# use. Bypass Solution:
+# * start audio-binder before playing sound (binding create control before softvol plugin)
+# * run a dummy aplay -DMyNavPCM "" to get a clean control
+#
+# References: https://www.spinics.net/lists/alsa-devel/msg54235.html
+# --------------------------------------------------------------------
+
+# Mixer PCM allow to play multiple stream simultaneously
+# ------------------------------------------------------
+pcm.MyMixerPCM {
+ type dmix
+ ipc_key 1024
+ ipc_key_add_uid false
+ ipc_perm 0666 # mixing for all users
+
+ # Define target effective sound card (cannot be a plugin)
+ slave {
+ pcm "hw:v1340" #Jabra Solmate
+ period_time 0
+ period_size 1024
+ buffer_size 8192
+ rate 44100
+ }
+
+ # DMIX can only map two channels
+ bindings {
+ 0 0
+ 1 1
+ }
+}
+
+# Define a Hook_type with a private sharelib
+# -------------------------------------------
+pcm_hook_type.MyHookPlugin {
+ install "AlsaInstallHook"
+ lib "/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build/Alsa-Plugin/Alsa-Policy-Hook/policy_hook_cb.so"
+}
+
+
+# Define a HookedPCM that point to Hook_type sharelib
+# ----------------------------------------------------
+pcm.MyNavigationHook {
+ type hooks
+ slave.pcm "MyMixerPCM"
+ # Defined used hook sharelib and provide arguments/config to install func
+ hooks.0 {
+ type "MyHookPlugin"
+ hook_args {
+ verbose true # print few log messages (default false);
+
+ # Every Call should return OK in order PCM to open (default timeout 100ms)
+ uri "ws://localhost:1234/api?token=audio-agent-token&uuid=audio-agent-session"
+ request {
+ # Request autorisation to write on navigation
+ RequestNavigation {
+ api "control"
+ verb "dispatch"
+ query "{'target':'navigation', 'args':{'device':'Jabra SOLEMATE v1.34.0'}}"
+ }
+ }
+ # map event reception to self generated signal
+ event {
+ pause 30
+ resume 31
+ stop 3
+ }
+ }
+ }
+}
+
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyMultimediaPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
+
+ # Make this plugin visible from aplay -L
+ hint {
+ show on
+ description "Navigation SolftVol PCM"
+ }
+}
+
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyNavPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
+
+ # Make this plugin visible from aplay -L
+ hint {
+ show on
+ description "Navigation SolftVol PCM"
+ }
+}
+
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyAlarmPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
+
+ # Make this plugin visible from aplay -L
+ hint {
+ show on
+ description "Navigation SolftVol PCM"
+ }
+}
+
diff --git a/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
new file mode 100644
index 0000000..f6608a0
--- /dev/null
+++ b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
@@ -0,0 +1,6 @@
+Comment "Leon internal card"
+
+SectionUseCase."HiFi" {
+ File "HiFi.conf"
+ Comment "Default"
+}
diff --git a/conf.d/project/alsa.d/ucm.sample/HiFi.conf b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
new file mode 100644
index 0000000..9a53c8c
--- /dev/null
+++ b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
@@ -0,0 +1,84 @@
+SectionVerb {
+ EnableSequence [
+ cdev "hw:PCH"
+
+ cset "name='Master Playback Switch' on"
+ cset "name='Headphone Playback Switch' off"
+ cset "name='Speaker Playback Switch' on"
+
+ cset "name='Capture Switch' on"
+ cset "name='Capture Volume' 39"
+ cset "name='Mic Boost Volume' 2"
+ cset "name='Internal Mic Boost Volume' 0"
+ #cset "name='Capture Source' 0"
+ ]
+ DisableSequence [
+ ]
+ Value {
+ TQ "Music"
+ OutputDspName "speaker_eq"
+ PlaybackPCM "hw:PCH,0"
+ }
+}
+
+SectionDevice."Headphone".0 {
+ Value {
+ JackName "Headphone Jack"
+ OutputDspName "Jheadphone"
+ }
+ EnableSequence [
+ cdev "hw:PCH"
+
+ cset "name='Speaker Playback Switch' off"
+ cset "name='Headphone Playback Switch' on"
+ ]
+ DisableSequence [
+ cdev "hw:PCH"
+
+ cset "name='Headphone Playback Switch' off"
+ cset "name='Speaker Playback Switch' on"
+ ]
+}
+
+SectionDevice."Mic".0 {
+ Value {
+ JackName "Mic Jack"
+ }
+ EnableSequence [
+ cdev "hw:PCH"
+
+ #cset "name='Capture Source' 1"
+ ]
+ DisableSequence [
+ cdev "hw:PCH"
+
+ cset "name='Capture Source' 0"
+ ]
+}
+
+SectionModifier."RecordMedia".0 {
+ SupportedDevice [
+ "Headphone"
+ ]
+ EnableSequence [
+ cdev "hw:PCH"
+ ]
+
+ DisableSequence [
+ cdev "hw:PCH"
+ ]
+
+ TransitionSequence."ToModifierName" [
+ cdev "hw:PCH"
+ ]
+
+ # Optional TQ and ALSA PCMs
+ Value {
+ TQ Voice
+ CapturePCM "hw:1"
+ PlaybackVolume "name='Master Playback Volume',index=2"
+ PlaybackSwitch "name='Master Playback Switch',index=2"
+ }
+
+}
+
diff --git a/conf.d/project/alsa.d/ucm.sample/README b/conf.d/project/alsa.d/ucm.sample/README
new file mode 100644
index 0000000..e7f08ae
--- /dev/null
+++ b/conf.d/project/alsa.d/ucm.sample/README
@@ -0,0 +1,2 @@
+Should match sound card name ex: "HDA Intel PCH"
+cp -r . /usr/share/alsa/ucm