public static void WriteUsingAsyncWrite <T>(this IDevice <T> device, T value)
        {
            var wait = new AutoResetEvent(false);

            device
            .AsyncWrite(value)
            .Subscribe((x) => wait.Set());
            wait.WaitOne();
            wait.Dispose();
        }
 public static IObservable <Unit> AsyncWrite(this IDevice <bool> device)
 {
     return(device.AsyncWrite(device.Value));
 }
        public static IObservable <Unit> AsyncWriteInverse(this IDevice <bool> device)
        {
            var oldValue = device.Value;

            return(device.AsyncWrite(oldValue));
        }