How robertnisipeanu/idrive-apps works
This repository provides an iDrive app for enabling and managing CarPlay/Android Auto map patches, a native map-stream decoder, and a shared renderer for the instrument cluster and HUD. The principal workflow is: the driver configures the app, the app requests patching through the root helper, the native service decodes the captured map stream, and cluster-render displays it. The README documents HUD sizing, positioning, yielding, and error handling. Several app and native implementation files were not sampled, so links beyond documented behavior or indexed references are omitted.
Main entry points: patchd.js Patch daemon · server.cpp Client server · main.cpp Map service · robertn_waze_cluster.js Waze app
Components 24
Driver app
- Waze app
apps/robertn_waze_cluster/src/robertn_waze_cluster.js - Patch control
apps/robertn_waze_cluster/src/waze_cluster_control.js - Profile sync
apps/robertn_waze_cluster/src/profile_sync.js - QR support
apps/robertn_waze_cluster/src/qr.js - Localization
apps/robertn_waze_cluster/src/i18n.js
Head-unit patching
- Patch daemon
native/waze-on-cluster/patch/patchd.js - CarPlay patch
native/waze-on-cluster/patch/carplay_patch.js - Android Auto patch
native/waze-on-cluster/patch/aapd_patch.js - Boot recovery
native/waze-on-cluster/patch/recovery.js - Patch records
native/waze-on-cluster/patch/patch_record.js - Unit compatibility
native/waze-on-cluster/patch/head_unit.js
Map capture
- Map service
native/waze-on-cluster/src/main.cpp - Stream feeds
native/waze-on-cluster/src/map_feeds.cpp - Video producer
native/waze-on-cluster/src/video_producer.cpp - H.264 decoder
native/waze-on-cluster/src/decoder_msdk.cpp - Map state
native/waze-on-cluster/src/map_state.cpp
Cluster rendering
- Render service
native/cluster-render/src/main.cpp - Client server
native/cluster-render/src/server.cpp - Compositor
native/cluster-render/src/compositor.cpp - Display slots
native/cluster-render/src/slots.cpp - Native client
native/cluster-render/client/client.cpp - JavaScript client
native/cluster-render/js/cluster_render_client.js
Other components
- Driver
- Head-unit display
Connections 24
- Driver → Waze app: configures
README.md - Waze app → Patch control: uses control
- Waze app → Localization: localizes
- Waze app → QR support: uses QR
- Patch control → Patch daemon: requests patching
- Patch control → Profile sync: syncs profile
- Patch daemon → CarPlay patch: dispatches
native/waze-on-cluster/patch/patchd.js - Patch daemon → Android Auto patch: dispatches
native/waze-on-cluster/patch/patchd.js - Patch daemon → Boot recovery: dispatches
native/waze-on-cluster/patch/patchd.js - Patch daemon → Unit compatibility: checks support
native/waze-on-cluster/patch/patchd.js - CarPlay patch → Patch records: records changes
native/waze-on-cluster/patch/carplay_patch.js - Android Auto patch → Patch records: records changes
native/waze-on-cluster/patch/aapd_patch.js - Boot recovery → Patch records: checks records
native/waze-on-cluster/patch/recovery.js - Map service → Stream feeds: manages feeds
native/waze-on-cluster/src/main.cpp - Map service → Video producer: produces video
native/waze-on-cluster/src/main.cpp - Map service → Map state: tracks state
native/waze-on-cluster/src/main.cpp - Video producer → H.264 decoder: decodes frames
- Map service → Render service: sends map
README.md - Native client → Client server: sends layers
- JavaScript client → Client server: sends layers
- Render service → Client server: starts service
- Client server → Compositor: composes layers
- Client server → Display slots: uses slots
- Render service → Head-unit display: draws cluster and HUD
README.md