diff --git a/doc/connectivity/bluetooth/api/audio/bluetooth-le-audio-arch.rst b/doc/connectivity/bluetooth/api/audio/bluetooth-le-audio-arch.rst index 2ed98221bff..886d644ed0b 100644 --- a/doc/connectivity/bluetooth/api/audio/bluetooth-le-audio-arch.rst +++ b/doc/connectivity/bluetooth/api/audio/bluetooth-le-audio-arch.rst @@ -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 +.. graphviz:: + :caption: Generic Audio Framework (GAF) - Generic Audio Framework + 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. diff --git a/doc/connectivity/bluetooth/api/audio/img/gaf.svg b/doc/connectivity/bluetooth/api/audio/img/gaf.svg deleted file mode 100644 index 1cc2739b534..00000000000 --- a/doc/connectivity/bluetooth/api/audio/img/gaf.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Generic Audio Framework
















Generic Audio Framework...
Stream Control
Stream Control
Rendering and Capture Control
Rendering and Capture Control
Content Control
Content Control
BAP



BAP...
PACS
PACS
ACSS
ACSS
BASS
BASS
MCP


 
MCP...
MCS
MCS
CCP


 
CCP...
TBS
TBS
CSIP


 
CSIP...
CSIS
CSIS
MICP


 
MICP...
MICS
MICS
VCP


 
VCP...
VCS
VCS
VOCS
VOCS
AICS
AICS
CAP


 
CAP...
CAS
CAS
TMAP


 
TMAP...
TMAS
TMAS
HAP


 
HAP...
HAS
HAS
BAS
BAS
IAS
IAS
AICS
AICS
PBP



PBP...
Transition and Coordination Control
Transition and Coordination Contr...
Text is not SVG - cannot display
\ No newline at end of file