How nikhilmaity00/pulsarnav works
PulsarNav is an offline Android companion for Bajaj/Rouser motorcycle clusters. Its main workflow receives navigation notifications, parses maneuvers, builds OTC frames, and sends them to the bike over BLE. The app also provides call and handlebar media controls, bike/ride utilities, maintenance and fuel logs, settings, and backup/restore. Edges are limited to calls supported by excerpts, the source index, or README; some secondary feature wiring is not shown.
Main entry points: MainActivity.kt App interface · BajajBleManager.kt BLE manager · AppSettings.kt App settings · DataVaultManager.kt Backup and restore
Components 22
Navigation bridge
- Navigation listener
app/src/main/java/com/pulsarnav/app/service/GoogleMapsNotificationListener.kt - Notification parser
app/src/main/java/com/pulsarnav/app/parser/GoogleMapsNotificationParser.kt - Maneuver matcher
app/src/main/java/com/pulsarnav/app/parser/ManeuverMatcher.kt - Maneuver model
app/src/main/java/com/pulsarnav/app/model/Maneuver.kt - OTC packet builder
app/src/main/java/com/pulsarnav/app/protocol/OtcPacketBuilder.kt
Bike connectivity
- BLE foreground service
app/src/main/java/com/pulsarnav/app/service/BikeBleForegroundService.kt - BLE manager
app/src/main/java/com/pulsarnav/app/ble/BajajBleManager.kt - Ignition receiver
app/src/main/java/com/pulsarnav/app/receiver/BluetoothIgnitionReceiver.kt
Rider companion
- Call controls
app/src/main/java/com/pulsarnav/app/telephony/CallManager.kt - Media controls
app/src/main/java/com/pulsarnav/app/media/MediaControlManager.kt - Phone telemetry
app/src/main/java/com/pulsarnav/app/telemetry/PhoneTelemetryManager.kt - Parking location
app/src/main/java/com/pulsarnav/app/location/ParkingManager.kt - Ride tracking
app/src/main/java/com/pulsarnav/app/tracking/RideTracker.kt - Maintenance records
app/src/main/java/com/pulsarnav/app/maintenance/MaintenanceManager.kt - Fuel log
app/src/main/java/com/pulsarnav/app/maintenance/FuelLogManager.kt - App interface
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt
Settings and records
- Vehicle catalog
app/src/main/java/com/pulsarnav/app/data/VehicleCatalog.kt - App settings
app/src/main/java/com/pulsarnav/app/data/AppSettings.kt - Backup and restore
app/src/main/java/com/pulsarnav/app/data/DataVaultManager.kt
Other components
- Rider
- Google Maps / Waze
- Motorcycle cluster
Connections 31
- Google Maps / Waze → Navigation listener: posts directions
- Navigation listener → Notification parser: parses notices
app/src/main/java/com/pulsarnav/app/service/GoogleMapsNotificationListener.kt - Notification parser → Maneuver matcher: matches maneuvers
app/src/main/java/com/pulsarnav/app/parser/GoogleMapsNotificationParser.kt - Notification parser → Maneuver model: produces steps
app/src/main/java/com/pulsarnav/app/parser/GoogleMapsNotificationParser.kt - Maneuver matcher → Maneuver model: selects opcode
app/src/main/java/com/pulsarnav/app/parser/ManeuverMatcher.kt - Navigation listener → BLE manager: dispatches steps
app/src/main/java/com/pulsarnav/app/service/GoogleMapsNotificationListener.kt - BLE manager → OTC packet builder: builds frames
app/src/main/java/com/pulsarnav/app/ble/BajajBleManager.kt - OTC packet builder → Maneuver model: encodes opcode
app/src/main/java/com/pulsarnav/app/protocol/OtcPacketBuilder.kt - BLE manager → Motorcycle cluster: writes frames
- Rider → App interface: uses app
- App interface → Vehicle catalog: selects bike
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → App settings: configures
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → Backup and restore: backs up data
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → Parking location: manages parking
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → Maintenance records: manages services
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → Fuel log: logs refuels
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - App interface → Ride tracking: views rides
app/src/main/java/com/pulsarnav/app/ui/MainActivity.kt - Backup and restore → App settings: exports settings
app/src/main/java/com/pulsarnav/app/data/DataVaultManager.kt - Backup and restore → Maintenance records: exports records
app/src/main/java/com/pulsarnav/app/data/DataVaultManager.kt - Backup and restore → Fuel log: exports entries
app/src/main/java/com/pulsarnav/app/data/DataVaultManager.kt - Backup and restore → Ride tracking: exports trips
app/src/main/java/com/pulsarnav/app/data/DataVaultManager.kt - Ignition receiver → BLE foreground service: starts service
app/src/main/java/com/pulsarnav/app/receiver/BluetoothIgnitionReceiver.kt - BLE foreground service → Call controls: initializes calls
app/src/main/java/com/pulsarnav/app/service/BikeBleForegroundService.kt - Call controls → BLE manager: sends call alerts
app/src/main/java/com/pulsarnav/app/telephony/CallManager.kt - BLE manager → Media controls: dispatches buttons
app/src/main/java/com/pulsarnav/app/ble/BajajBleManager.kt - Media controls → App settings: reads preferences
app/src/main/java/com/pulsarnav/app/media/MediaControlManager.kt - Phone telemetry → BLE manager: reads bike data
app/src/main/java/com/pulsarnav/app/telemetry/PhoneTelemetryManager.kt - Parking location → App settings: reads auto-park
app/src/main/java/com/pulsarnav/app/location/ParkingManager.kt - Maintenance records → App settings: reads settings
app/src/main/java/com/pulsarnav/app/maintenance/MaintenanceManager.kt - Ride tracking → App settings: reads settings
app/src/main/java/com/pulsarnav/app/tracking/RideTracker.kt - Fuel log → Maintenance records: shares odometer
app/src/main/java/com/pulsarnav/app/maintenance/FuelLogManager.kt