summaryrefslogtreecommitdiffstats
path: root/docs/high-level-api/README.md
blob: 2f5d1f33823aba4b345ca16f3d261e10cd9e578d (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
# High Level API

The High Level API provides an abstraction of audio roles. 

## Configuration

Here is a sample configuration.

```json
{
    "$schema": "http://iot.bzh/download/public/schema/json/ctl-schema.json",
    "metadata": {
        "uid": "4a-policy",
        "version": "0.1",
        "api": "4a-policy",
        "require": [],
        "info": "Basic Audio Policy Control for Audio-4a - Sample 1",
        "author": "Loïc Collignon <loic.collignon@iot.bzh>",
        "date": "2018-05-25"
    },
    "onload": [],
    "controls": [],
    "events": [],
    "roles":[
            {
                "uid": "radio",
                "description": "Radio (tuner)",
                "priority": 0,
                "stream": "radio_stream"
            },
            {
                "uid": "multimedia",
                "description": "Multimedia content (e.g. media player, etc.)",
                "priority": 0,
                "stream": "multimedia"
            },
            {
                "uid": "emergency",
                "description": "Safety-relevant or critical alerts/alarms",
                "priority": 100,
                "stream": "emergency",
                "interrupts":[
                    {"type": "ramp", "args": { "uid": "ramp-slow", "volume": 30} }
                ]
            },
            {
                "uid": "navigation",
                "name": "navigation",
                "description": "Navigation instructions (GPS, turn directions, etc...)",
                "priority": 25,
                "stream": "navigation",
                "interrupts":[
                    {"type": "ramp", "args": { "uid": "ramp-slow", "volume": 30} }
                ]
            }
        ]
}
```

Each defined roles should have a stream associated. This stream will be provided by HALs. If no HAL provides the stream, then the audio role will have no device URI. If multiple HALs provide the same stream, a race condition occurs, the first HAL found will be used, the next will be ignored.

The higher priority value is, the higher priority is. In this sample, the **emergency** role has a higher priority than the **navigation**.

>**NOTE:** In this sample there is only one stream per role and it's named after the corresponding role, but none of this is mandatory.

## Policy engine