/// <summary>
 /// Will discover all services/characteristics when connected state occurs
 /// </summary>
 /// <param name="peripheral"></param>
 /// <returns></returns>
 public static IObservable <IGattCharacteristic> WhenAnyCharacteristicDiscovered(this IPeripheral peripheral) =>
 peripheral
 .WhenConnected()
 .Select(x => peripheral.DiscoverServices())
 .Switch()
 .SelectMany(x => x.DiscoverCharacteristics());