# vitaliykurokhtin/oem-aa-mod architecture

> Architecture diagram of the GitHub repository vitaliykurokhtin/oem-aa-mod, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vitaliykurokhtin/oem-aa-mod
- Repository: https://github.com/vitaliykurokhtin/oem-aa-mod

## Overview

oem-aa-mod is a set of process-scoped LD_PRELOAD shims for Mazda’s infotainment unit. Android Auto navigation data is enhanced by the aap_service shim and relayed to the blmjciaapa shim for HUD display; an optional svcjcinavi shim merges that guidance with OEM navigation. The blmjciaapa shim also provides touch passthrough, pairing, audio behavior, and a mute-to-media bridge. The graph preserves README-documented capabilities; connections among unsampled implementation details are omitted rather than inferred.

Main entry points: [`mazda/patches/blmjciaapa/lifecycle.cpp`](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/lifecycle.cpp) (Feature lifecycle), [`mazda/patches/blmjciaapa/hud/hud.cpp`](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/hud/hud.cpp) (HUD guidance), [`mazda/patches/aap_service/main.cpp`](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/main.cpp) (Service startup), [`mazda/patches/aap_service/navi/navi.cpp`](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/navi/navi.cpp) (GAL 1.6 navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_projection["Projection service"]
  node_aap_entry["Service startup<br/>[main.cpp]"]
  node_aap_nav["GAL 1.6 navigation<br/>[navi.cpp]"]
  node_aap_audio["Low-latency audio<br/>[audio.cpp]"]
end

subgraph group_headunit["Headunit shim"]
  node_blm_entry["Shim startup<br/>[main.cpp]"]
  node_lifecycle["Feature lifecycle<br/>[lifecycle.cpp]"]
  node_touch["Touch passthrough<br/>[touch.cpp]"]
  node_hud["HUD guidance<br/>[hud.cpp]"]
  node_hud_transport["HUD transport<br/>[vbs_tx.cpp]"]
  node_pairing["Wireless pairing<br/>[bt16pair.cpp]"]
  node_audio_tuning["Audio behavior"]
  node_mute_bridge["Mute media bridge<br/>[playpause.cpp]"]
  node_navigation_monitor["Navigation monitor<br/>[navi_monitor.cpp]"]
end

subgraph group_navigation["Navigation service"]
  node_svc_entry["Navigation startup<br/>[main.cpp]"]
  node_nav_merge["Guidance merge<br/>[merge.cpp]"]
  node_compass["Compass behavior<br/>[compass.cpp]"]
end

subgraph group_shared["Shared runtime"]
  node_config["Runtime configuration<br/>[config.h]"]
  node_preload["Preload interposition<br/>[preload.h]"]
end

node_phone(("Android Auto phone"))
node_cmu(("Mazda head unit"))

node_aap_entry -->|"starts when enabled"| node_aap_nav
node_aap_entry -->|"starts when enabled"| node_aap_audio
node_phone -->|"sends richer guidance"| node_aap_nav
node_aap_nav -->|"relays guidance"| node_hud
node_cmu -->|"displays guidance"| node_hud
node_hud -->|"uses transport"| node_hud_transport
node_cmu -->|"provides touch input"| node_touch
node_cmu -->|"uses pairing shim"| node_pairing
node_cmu -->|"mute triggers media control"| node_mute_bridge
node_cmu -->|"uses audio shim"| node_audio_tuning
node_phone -->|"receives play pause"| node_mute_bridge
node_svc_entry -->|"loads merge feature"| node_nav_merge
node_phone -->|"guidance is merged"| node_nav_merge
node_nav_merge -->|"merges with OEM navigation"| node_cmu
node_cmu -->|"runs navigation service"| node_compass
node_blm_entry -->|"loads settings"| node_config
node_aap_entry -->|"loads settings"| node_config
node_svc_entry -->|"reads settings"| node_config
node_lifecycle -->|"manages lifecycle"| node_touch
node_lifecycle -->|"manages lifecycle"| node_hud
node_lifecycle -->|"manages lifecycle"| node_pairing
node_lifecycle -->|"manages lifecycle"| node_audio_tuning

click node_aap_entry "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/main.cpp"
click node_aap_nav "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/navi/navi.cpp"
click node_aap_audio "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/audio/audio.cpp"
click node_blm_entry "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/main.cpp"
click node_lifecycle "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/lifecycle.cpp"
click node_touch "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/touch/touch.cpp"
click node_hud "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/hud/hud.cpp"
click node_hud_transport "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/hud/vbs_tx.cpp"
click node_pairing "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/bt16pair/bt16pair.cpp"
click node_audio_tuning "https://github.com/vitaliykurokhtin/oem-aa-mod/tree/main/mazda/patches/blmjciaapa/audio"
click node_mute_bridge "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/playpause/playpause.cpp"
click node_navigation_monitor "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/monitor/navi_monitor.cpp"
click node_svc_entry "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/main.cpp"
click node_nav_merge "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/merge.cpp"
click node_compass "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/compass.cpp"
click node_config "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/common/config.h"
click node_preload "https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/common/preload.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_aap_entry,node_aap_nav,node_aap_audio toneBlue
class node_blm_entry,node_lifecycle,node_touch,node_hud,node_hud_transport,node_pairing,node_audio_tuning,node_mute_bridge,node_navigation_monitor toneAmber
class node_svc_entry,node_nav_merge,node_compass toneMint
class node_config,node_preload toneRose
class node_phone,node_cmu toneIndigo
```

## Components

### Projection service

- [Service startup](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/main.cpp): `mazda/patches/aap_service/main.cpp`
- [GAL 1.6 navigation](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/navi/navi.cpp): `mazda/patches/aap_service/navi/navi.cpp`
- [Low-latency audio](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/aap_service/audio/audio.cpp): `mazda/patches/aap_service/audio/audio.cpp`

### Headunit shim

- [Shim startup](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/main.cpp): `mazda/patches/blmjciaapa/main.cpp`
- [Feature lifecycle](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/lifecycle.cpp): `mazda/patches/blmjciaapa/lifecycle.cpp`
- [Touch passthrough](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/touch/touch.cpp): `mazda/patches/blmjciaapa/touch/touch.cpp`
- [HUD guidance](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/hud/hud.cpp): `mazda/patches/blmjciaapa/hud/hud.cpp`
- [HUD transport](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/hud/vbs_tx.cpp): `mazda/patches/blmjciaapa/hud/vbs_tx.cpp`
- [Wireless pairing](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/bt16pair/bt16pair.cpp): `mazda/patches/blmjciaapa/bt16pair/bt16pair.cpp`
- [Audio behavior](https://github.com/vitaliykurokhtin/oem-aa-mod/tree/main/mazda/patches/blmjciaapa/audio): `mazda/patches/blmjciaapa/audio`
- [Mute media bridge](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/playpause/playpause.cpp): `mazda/patches/blmjciaapa/playpause/playpause.cpp`
- [Navigation monitor](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/blmjciaapa/monitor/navi_monitor.cpp): `mazda/patches/blmjciaapa/monitor/navi_monitor.cpp`

### Navigation service

- [Navigation startup](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/main.cpp): `mazda/patches/svcjcinavi/main.cpp`
- [Guidance merge](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/merge.cpp): `mazda/patches/svcjcinavi/merge.cpp`
- [Compass behavior](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/svcjcinavi/compass.cpp): `mazda/patches/svcjcinavi/compass.cpp`

### Shared runtime

- [Runtime configuration](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/common/config.h): `mazda/patches/common/config.h`
- [Preload interposition](https://github.com/vitaliykurokhtin/oem-aa-mod/blob/main/mazda/patches/common/preload.h): `mazda/patches/common/preload.h`

### Other components

- **Android Auto phone**
- **Mazda head unit**

## Connections

- Service startup → GAL 1.6 navigation: starts when enabled (evidence: `mazda/patches/aap_service/main.cpp`)
- Service startup → Low-latency audio: starts when enabled (evidence: `mazda/patches/aap_service/main.cpp`)
- Android Auto phone → GAL 1.6 navigation: sends richer guidance (evidence: `README.md`)
- GAL 1.6 navigation → HUD guidance: relays guidance (evidence: `README.md`)
- Mazda head unit → HUD guidance: displays guidance (evidence: `README.md`)
- HUD guidance → HUD transport: uses transport (evidence: `mazda/patches/blmjciaapa/hud/hud.cpp`)
- Mazda head unit → Touch passthrough: provides touch input (evidence: `README.md`)
- Mazda head unit → Wireless pairing: uses pairing shim (evidence: `README.md`)
- Mazda head unit → Mute media bridge: mute triggers media control (evidence: `README.md`)
- Mazda head unit → Audio behavior: uses audio shim (evidence: `README.md`)
- Android Auto phone → Mute media bridge: receives play pause (evidence: `README.md`)
- Navigation startup → Guidance merge: loads merge feature (evidence: `mazda/patches/svcjcinavi/main.cpp`)
- Android Auto phone → Guidance merge: guidance is merged (evidence: `README.md`)
- Guidance merge → Mazda head unit: merges with OEM navigation (evidence: `README.md`)
- Mazda head unit → Compass behavior: runs navigation service (evidence: `README.md`)
- Shim startup → Runtime configuration: loads settings (evidence: `mazda/patches/blmjciaapa/main.cpp`)
- Service startup → Runtime configuration: loads settings (evidence: `mazda/patches/aap_service/main.cpp`)
- Navigation startup → Runtime configuration: reads settings (evidence: `mazda/patches/svcjcinavi/main.cpp`)
- Feature lifecycle → Touch passthrough: manages lifecycle (evidence: `mazda/patches/blmjciaapa/lifecycle.cpp`)
- Feature lifecycle → HUD guidance: manages lifecycle (evidence: `mazda/patches/blmjciaapa/lifecycle.cpp`)
- Feature lifecycle → Wireless pairing: manages lifecycle (evidence: `mazda/patches/blmjciaapa/lifecycle.cpp`)
- Feature lifecycle → Audio behavior: manages lifecycle (evidence: `mazda/patches/blmjciaapa/lifecycle.cpp`)
