How steamclock/bluejay works
Bluejay is a Swift framework for reliable Bluetooth LE communication with a single peripheral. Its main workflow is to scan for peripherals, connect, discover services and characteristics, then read, write, or listen for characteristic updates through a FIFO operation queue. It also supports connection observation, serialization, logging, and background restoration. The README documents these capabilities, but most implementation files were not sampled; links among those subsystems are therefore limited to documented behavior. The two demo apps illustrate a heart-sensor client and a virtual peripheral.
Main entry points: Bluejay.swift Bluejay API · Queue.swift FIFO operation queue · DittojayViewController.swift Virtual BLE sensor · Scan.swift Peripheral scanning
Components 19
Bluejay runtime
- Bluejay API
Bluejay/Bluejay/Bluejay.swift - FIFO operation queue
Bluejay/Bluejay/Queue.swift
Peripheral operations
- Peripheral scanning
Bluejay/Bluejay/Scan.swift - Connection management
Bluejay/Bluejay/Connection.swift - Service discovery
Bluejay/Bluejay/DiscoverService.swift - Characteristic reads
Bluejay/Bluejay/ReadCharacteristic.swift - Characteristic writes
Bluejay/Bluejay/WriteCharacteristic.swift - Characteristic listening
Bluejay/Bluejay/ListenCharacteristic.swift - Data serialization
Bluejay/Bluejay/Receivable.swift
Events and restoration
- Connection observers
Bluejay/Bluejay/ConnectionObserver.swift - Disconnect handling
Bluejay/Bluejay/DisconnectHandler.swift - Background restoration
Bluejay/Bluejay/BackgroundRestorer.swift - Logging observers
Bluejay/Bluejay/LogObserver.swift
Heart sensor demos
- Heart sensor client
Bluejay/BluejayHeartSensorDemo/ScanViewController.swift - Sensor interaction UI
Bluejay/BluejayHeartSensorDemo/SensorViewController.swift - Virtual BLE sensor
Bluejay/DittojayHeartSensorDemo/DittojayViewController.swift - Heart-rate data
Bluejay/DittojayHeartSensorDemo/HeartRateMeasurement.swift
Other components
- Calling app
- CoreBluetooth
Connections 27
- Calling app → Bluejay API: calls API
- Bluejay API → Peripheral scanning: starts scan
- Peripheral scanning → CoreBluetooth: scans for
- Peripheral scanning → Calling app: returns discoveries
- Bluejay API → Connection management: connects or disconnects
- Connection management → CoreBluetooth: manages connection
- Connection management → FIFO operation queue: schedules operations
- FIFO operation queue → Service discovery: runs operations
- FIFO operation queue → Characteristic reads: runs operations
- FIFO operation queue → Characteristic writes: runs operations
- FIFO operation queue → Characteristic listening: runs operations
- Service discovery → CoreBluetooth: discovers services
- Characteristic reads → CoreBluetooth: reads characteristic
- Characteristic writes → CoreBluetooth: writes characteristic
- Characteristic listening → CoreBluetooth: subscribes to updates
- Data serialization → Characteristic reads: decodes data
- Data serialization → Characteristic writes: encodes data
- Bluejay API → Connection observers: notifies events
- Bluejay API → Disconnect handling: notifies disconnection
- Bluejay API → Background restoration: supports restoration
- Bluejay API → Logging observers: emits logs
- Heart sensor client → Bluejay API: scans and connects
- Sensor interaction UI → Bluejay API: reads and listens
- Sensor interaction UI → Connection observers: registers observers
- Virtual BLE sensor → CoreBluetooth: advertises services
- Virtual BLE sensor → Heart-rate data: creates measurements
- Virtual BLE sensor → CoreBluetooth: publishes updates