Core-Library (PCL)


The library provides a common Bluetooth Low Energy API for multiple core stacks (iOS and Android) and dongles (Windows). It handles all the various API's of the different BLE adapters and offers a common high level interface for the application.

The library comes with a core assembly (PCL) that provides high level Bluetooth Low Energy functionality. This PCL library may be referenced by other PCL libraries providing project specific implementation.

Satellite assemblies are provided for each supported BLE adapter with the adapter specific implementation. Some adapters need a license to run without limitation. Detailed information on how to use an adapter may be found in the documentation of the sattelite assemblies.

Supported Adapters by Arendi

iOS (Xamarin.iOS)

The iOS adapter supports BLE on iOS devices with hardware BLE support.
Supported Versions: iOS 7.x, iOS 8.x, iOS 9.x and iOS 10.x

Android (Xamarin.Android)

The Android adapter supports BLE on Android devices supporting BLE. Our implementation is normally tested on the reference devices for a platform (e.g. Nexus 9 and Nexus 6 for Android 5). As the manufacturer of other Android devices sometimes modifys the Android system some devices may not work as good as the reference devices.
Supported Versions: Android 4.4.4, Android 5.x, Android 6.x and Android 7.x

Bluegiga/Silicon Labs BLED112 (.NET 4.5)

The Bluegiga adapter is compatible with the Bluetooth Dongle BLED112 from Bluegiga/Silicon Labs. It is NOT compatible with integrated Bluetooth hardware driven by the Windows driver.

Asynchronous Programming Patterns

Most bluetooth operations take some time and are typical asynchronous operations. In the library we support two version of asynchronous programming.

Event-based Asynchronous Pattern (EAP), which requires one or more events, event handler delegate types, and EventArg-derived types. EAP was introduced in the .NET Framework 2.0. It is no longer recommended for new development. In the early versions of the library only EAP was supported. The methods to initiate an EAP operation have no suffix (e.g. "ReadData").

Task-based Asynchronous Pattern (TAP), which uses a single method to represent the initiation and completion of an asynchronous operation. TAP was introduced in the .NET Framework 4 and is the recommended approach to asynchronous programming in the .NET Framework. The async and await keywords add language support for TAP.


The central element of the library is the central implementation (see ICentral). To get a central object methods of the CentralFactory class of each adapter satellite assembly must be used. To discover visible peripherals the scanning has be started in the central. Every time a peripheral (see IPeripheral) is discovered a event with the advertisement information is sent to the application.

The received peripherals can be connected. After establishing a connection the services (see IService) can be discovered. The characteristics (see ICharacteristic) of the found services can be read, written or monitored by enabling notification or indication if there value changes.

Optional is the use of the EnhancedPeripheral and the PeripheralManager. The EnhancedPeripheral contains a higher level peripheral handling with integrated connection management. To simplify the management of the visible and connected peripherals the PeripheralManager may be used.

Class Diagram

Class Diagram