...
The process of connecting, disconnecting, reading, and writing to a Bluetooth device often requires multiple steps. To help soften the workflow when dealing with this process, the aim for each of the abstract classes is to wrap this behavior in single call functions.
Detailed Design
The Windows BLE Communications Interface will enable communication with a BLE device by wrapping functionality within the Windows BLE library in an abstract class. This class will provide the ability to connect to and disconnect from a device. A BLEVictorDevice will derive from this abstract class to define how users can read from and write to specific characteristics. These calls will be handled asynchronously to allow for the continued execution of code while the device performs the requested action and reports back the success of the read or write operation. Subscription functionality is also defined in the BLEVictorDevice class to raise events when a characteristic’s value has changed, as long as the characteristic in question supports notifications. The BluetoothLEDevice within the BLEVictorDevice class is what allows for the communication with a VictoR device connected through bluetooth. The BluetoothLEDevice will be hidden from the user, only allowing modifications to be made to the device through the available functions within the BLEVictorDevice class. A device manager will contain a dictionary of devices (both Bluetooth and USB) to allow for the management of these devices, and ensuring the user does not need to retain their own collection of devices within their application.
...