using System; using System.Collections.Generic; using System.Text; using Avans.TI.BLE; using System.Threading; namespace Hardware { class BLEReciever { IDataConverter dataConverter; public BLEReciever(IDataConverter dataConverter) { this.dataConverter = dataConverter; } public async void Connect() { int errorCode = 0; BLE bleBike = new BLE(); BLE bleHeart = new BLE(); Thread.Sleep(1000); // We need some time to list available devices // List available devices List bleBikeList = bleBike.ListDevices(); Console.WriteLine("Devices found: "); foreach (var name in bleBikeList) { Console.WriteLine(name); if (name.Contains("Avans Bike")) { Connect(name); Console.WriteLine("connecting to {0}", name); break; } } } public async void Connect(string deviceName) { int errorCode = 0; BLE bleBike = new BLE(); BLE bleHeart = new BLE(); errorCode = errorCode = await bleBike.OpenDevice(deviceName); // __TODO__ Error check var services = bleBike.GetServices; foreach (var service in services) { Console.WriteLine($"Service: {service}"); } // Set service errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"); // __TODO__ error check // Subscribe bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"); // Heart rate errorCode = await bleHeart.OpenDevice(deviceName); await bleHeart.SetService("HeartRate"); bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); } private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) { Console.WriteLine("Received from {0}: {1}, {2}", e.ServiceName, BitConverter.ToString(e.Data).Replace("-", " "), Encoding.UTF8.GetString(e.Data)); //send to dataconverter } } }