A bare bones example of a CoreBluetooth / CoreBluetoothMock library to handle sending/receiving of data from a BLE device.

  • Device manager’s is used by the app layer to begin scanning / connection, passing through publishers from Discoverer
  • Discoverer Implements CoreBluetooth CBCentralManager, and handles delegate callbacks for discovery, connection etc.
  • Device is an abstract representation of a BLE device, contains basic info like name, the peripheral it represents and a collection of features
  • Transport simply provides the ability to write to the peripheral, and post notifications back to features.
  • BLETransportDelegate Implements PeripheralDelegate in a protocol specific way and is separate from transport so we can reuse Transport for multiple delegates. BLETransportDelegate is also responsible for discovery of Characteristics and Services
  • Features are used to send requests + handle notifications & responses from the device (via a transport)
  • MockDevice defines a stub of all services & characteristics and builds a simulated BLE device to advertise and hnadle write/read requests.


View Github