Example #1
0
        public static IObservable <ushort> WhenHeartRateBpm(this IPeripheral peripheral) => peripheral
        .WhenConnectedGetKnownService(HeartRateServiceUuid)
        .Select(x => x.DiscoverCharacteristics())
        .Switch()
        .Take(1)
        .Select(x => x.ReadInterval(TimeSpan.FromSeconds(3)))
        .Switch()
        .Select(x =>
        {
            if ((x.Data[0] & 0x01) == 0)
            {
                return((ushort)x.Data[1]);
            }

            var bpm = (ushort)x.Data[1];
            bpm     = (ushort)(((bpm >> 8) & 0xFF) | ((bpm << 8) & 0xFF00));
            return(bpm);
        });