diff --git a/ProftaakRH/BLEReciever.cs b/ProftaakRH/BLEReciever.cs index 1105362..280fc73 100644 --- a/ProftaakRH/BLEReciever.cs +++ b/ProftaakRH/BLEReciever.cs @@ -1,11 +1,112 @@ using System; using System.Collections.Generic; using System.Text; +using Avans.TI.BLE; +using System.Threading; + namespace Hardware { class BLEReciever { IDataConverter dataConverter; + private BLE bleBike; + private BLE bleHeart; + public bool running { get; } + + public BLEReciever(IDataConverter dataConverter) + { + this.dataConverter = dataConverter; + bool running = false; + } + + public void Connect() + { + BLE bleBike = 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")) + { + Console.WriteLine("connecting to {0}", name); + Connect(name); + break; + + } + } + } + public async void Connect(string deviceName) + { + int errorCode = 0; + bleBike = new BLE(); + bleHeart = new BLE(); + + errorCode = errorCode = await bleBike.OpenDevice(deviceName); + if (errorCode > 0) + { + disposeBLE(); + return; + } + + // Set service + errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"); + if (errorCode > 0) + { + disposeBLE(); + return; + } + + // Subscribe + bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"); + if (errorCode > 0) + { + disposeBLE(); + return; + } + + // Heart rate + errorCode = await bleHeart.OpenDevice(deviceName); + if (errorCode > 0) + { + disposeBLE(); + return; + } + + errorCode = await bleHeart.SetService("HeartRate"); + if (errorCode > 0) + { + disposeBLE(); + return; + } + + bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + errorCode = await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); + if (errorCode > 0) + { + disposeBLE(); + return; + } + this.running = true; + } + + private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) + { + Console.WriteLine("Received from {0}: {1}", e.ServiceName, + BitConverter.ToString(e.Data).Replace("-", " ")); + //send to dataconverter + } + + private void disposeBLE() + { + this.bleBike?.Dispose(); + this.bleHeart?.Dispose(); + this.running = false; + } } } diff --git a/ProftaakRH/FietsDemo.cs b/ProftaakRH/FietsDemo.cs index d95c24f..eb6d7fb 100644 --- a/ProftaakRH/FietsDemo.cs +++ b/ProftaakRH/FietsDemo.cs @@ -11,15 +11,14 @@ namespace FietsDemo { internal class Program { - static void Main(string[] args) - { - foo foo = new foo(); - //BLEReceiver bLEReceiver = new BLEReceiver(foo); + //static void Main(string[] args) + //{ + // foo foo = new foo(); + // BLEReceiver bLEReceiver = new BLEReceiver(foo); - - //bLEReceiver.ConnectToBLE(); - Console.Read(); - } + // bLEReceiver.ConnectToBLE(); + // Console.Read(); + //} interface IFoo { @@ -144,7 +143,7 @@ namespace FietsDemo { Console.WriteLine("Foo class received {0}", Convert.ToString(bytes)); - + } } diff --git a/ProftaakRH/Main.cs b/ProftaakRH/Main.cs index 207d831..4625f5d 100644 --- a/ProftaakRH/Main.cs +++ b/ProftaakRH/Main.cs @@ -1,10 +1,21 @@ using System; using System.Collections.Generic; using System.Text; +using Hardware; namespace ProftaakRH { - class Main + class Program { + + static void Main(string[] args) + { + IDataConverter dataConverter = new DataConverter(); + BLEReciever bLEReceiver = new BLEReciever(dataConverter); + + bLEReceiver.Connect(); + + Console.ReadLine(); + } } }