aboutsummaryrefslogtreecommitdiffstats
path: root/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template
blob: 87e833da5cc421798ab313b6ed0e5a506d6d78b3 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# ------------------------------------------------------
# Mixer PCM allow to play multiple stream simultaneously
# ------------------------------------------------------
pcm.@AUDIO_DEV_NAME@ {
    type dmix
    slave {pcm "hw:@AUDIO_DEV_NAME_ID@"} #
    ipc_key 1001          # ipc_key should be unique to each dmix
}

# -----------------------------------------------------
#  Register ControllerHookPlugin (ToiBeFix fullpath)
# -----------------------------------------------------
pcm_hook_type.CtlHookPlugin {
    install "AlsaInstallHook"
    lib "@INSTALL_PREFIX@/lib/policy_alsa_hook.so"
}


# -------------------------------------------------------
# Define one Audio Virtual Channel per Audio Roles
# -------------------------------------------------------
pcm.MusicPCM {
    type softvol

    # Point Slave on HOOK for policies control
    slave.pcm "@AUDIO_DEV_NAME@"

    # name should match with HAL definition
    control.name  "Playback Multimedia"
}

pcm.NaviPCM {
    type softvol

    # Point Slave on HOOK for policies control
    slave.pcm "@AUDIO_DEV_NAME@"

    # name should match with HAL definition
    control.name  "Playback Navigation"
}

pcm.UrgentPCM {
    type softvol

    # Point Slave on HOOK for policies control
    slave.pcm "@AUDIO_DEV_NAME@"

    # name should match with HAL definition
    control.name  "Playback Emergency"
}

# ----------------------------------------------------
# Define one hooked PCM channel per Audio Roles
# ----------------------------------------------------
pcm.Multimedia {
    type hooks
    slave {pcm "MusicPCM"}
    hooks.0 {
        comment "Defined used hook sharelib and provide arguments/config to install func"
        type "CtlHookPlugin"
        hook_args {

            # print few log messages (default false)
            verbose true

            # uri to audio-4a policy engine
            uri="unix:/var/tmp/pol4a"

            # timeout in ms (default 500)
            timeout 5000

            # force API synchronous mode
            synchronous true

            # api subcall to request a role
            request {
                multimedia-role "{'uid':'alsa-hook-client'}"
                signal-timeout  "{'timeout':180, 'music':'quit'}"
            }

            # api subcall to request a role
            release {
                release-role "{'uid':'alsa-hook-client'}"
            }

            # map AGL event on Unix signal. Search in event for json key=value
            events {
                sig-02 {search music, value quit}
                sig-31 {search event, value start}
                sig-32 {search event, value start}
            }
        }
    }
}

pcm.Navigation {
    type hooks
    slave {pcm "NaviPCM"}
    hooks.0 {
        comment "Defined used hook sharelib and provide arguments/config to install func"
        type "CtlHookPlugin"
        hook_args {

            # print few log messages (default false)
            verbose true

            # uri to audio-4a policy engine
            uri="unix:/var/tmp/pol4a"

            # timeout in ms (default 500)
            timeout 5000

            # force API synchronous mode
            synchronous true

            # api subcall to request a role
            request {
                navigation-role "{'uid':'alsa-hook-client'}"
                signal-timeout  "{'timeout':5, 'navi':'quit'}"
            }

            # api subcall to request a role
            release {
                release-role "{'uid':'alsa-hook-client'}"
            }

            # map AGL event on Unix signal. Search in event for json key=value
            events {
                sig-02 {search navi, value quit}
                sig-31 {search event, value start}
                sig-32 {search event, value start}
            }
        }
    }
}