Skip to content

Commit

Permalink
doc: Bluetooth: Audio: Remake gaf.svg to graphviz
Browse files Browse the repository at this point in the history
Remake the Generic audio framework (GAF) figure to a graphviz version.
This makes it easier to modify it directly in the .rst file.

This also adds the missing GMAP/GMAS.

Signed-off-by: Emil Gydesen <[email protected]>
  • Loading branch information
Thalley authored and aescolar committed Jul 1, 2024
1 parent 0b4d752 commit 05b11e5
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 9 deletions.
150 changes: 145 additions & 5 deletions doc/connectivity/bluetooth/api/audio/bluetooth-le-audio-arch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,151 @@ audio streams or broadcast (unconnected) audio streams.

GAF mandates the use of the LC3 codec, but also supports other codecs.

.. figure:: img/gaf.svg
:align: center
:alt: Generic Audio Framework

Generic Audio Framework
.. graphviz::
:caption: Generic Audio Framework (GAF)

digraph gaf {
node [shape=record];
edge [style=invis];
compound=true;
nodesep=0.1;

subgraph hap_layer {
cluster=true;
label="HAP";
HAS;
BAS [style=dashed];
IAS [style=dashed];
}

subgraph pbp_layer {
cluster=true;
label="PBP";
PBS[style=invis]; // Make it possible to treat PBP like the others
}

subgraph tmap_layer {
cluster=true;
label="TMAP";
TMAS;
}

subgraph gmap_layer {
cluster=true;
label="GMAP";
GMAS;
}

subgraph gaf_layer {
cluster=true;
label="Generic Audio Framework";

subgraph transition_and_coordination_control_layer {
cluster=true;
label="Transition and Coordination Control";
style=dashed;

subgraph cap_layer {
cluster=true;
style=solid;
label="CAP";
CAS;
}

subgraph csip_layer {
cluster=true;
style=solid;
label="CSIP";
CSIS;
}
}

subgraph stream_control_layer {
cluster=true;
label="Stream Control";
style=dashed;

subgraph bap_layer {
cluster=true;
label="BAP";
style=solid;
PACS [style=dashed];
ASCS [style=dashed];
BASS [style=dashed];
}
}

subgraph content_control_layer {
cluster=true;
label="Content Control";
style=dashed;

subgraph mcp_layer {
cluster=true;
label="MCP";
style=solid;
MCS;
}

subgraph ccp_layer {
cluster=true;
label="CCP";
style=solid;
TBS;
}
}

subgraph rendering_and_capture_control_layer {
cluster=true;
label="Rendering and Capture Control";
style=dashed;

subgraph micp_layer {
cluster=true;
label="MICP";
style=solid;
MICS;
MICP_AICS [style=dashed];
}

subgraph vcp_layer {
cluster=true;
label="VCP";
style=solid;
VCS;
VOCS [style=dashed];
VCP_AICS [style=dashed];
}
}
}

HAS -> CAS;
PBS -> CAS;
TMAS -> CAS;
GMAS -> CAS;

CAS -> MCS;
CAS -> TBS;
CAS -> ASCS;
CAS -> PACS;
CAS -> BASS;
CAS -> MICS;
CAS -> MICP_AICS;
CAS -> VCS;
CAS -> VOCS;
CAS -> VCP_AICS;

CSIS -> MCS;
CSIS -> TBS;
CSIS -> ASCS;
CSIS -> PACS;
CSIS -> BASS;
CSIS -> MICS;
CSIS -> MICP_AICS;
CSIS -> VCS;
CSIS -> VOCS;
CSIS -> VCP_AICS;
}

The top-level profiles TMAP and HAP are not part of the GAF, but rather provide
top-level requirements for how to use the GAF.
Expand Down
Loading

0 comments on commit 05b11e5

Please sign in to comment.