diff --git a/ProftaakRH/BLEReciever.cs b/ProftaakRH/BLEReciever.cs new file mode 100644 index 0000000..29cd2ec --- /dev/null +++ b/ProftaakRH/BLEReciever.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ProftaakRH +{ + class Class1 + { + } +} diff --git a/ProftaakRH/BikeSimulator.cs b/ProftaakRH/BikeSimulator.cs new file mode 100644 index 0000000..29cd2ec --- /dev/null +++ b/ProftaakRH/BikeSimulator.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ProftaakRH +{ + class Class1 + { + } +} diff --git a/ProftaakRH/DataConverter.cs b/ProftaakRH/DataConverter.cs new file mode 100644 index 0000000..436d08f --- /dev/null +++ b/ProftaakRH/DataConverter.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ProftaakRH +{ + class DataConverter + { + } +} diff --git a/ProftaakRH/FietsDemo.cs b/ProftaakRH/FietsDemo.cs index 4edbdc1..b97a0df 100644 --- a/ProftaakRH/FietsDemo.cs +++ b/ProftaakRH/FietsDemo.cs @@ -9,103 +9,141 @@ namespace FietsDemo { internal class Program { - private static async Task Main(string[] args) + static void Main(string[] args) { - 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($"Device: {name}"); - } - - // Connecting - errorCode = errorCode = await bleBike.OpenDevice("Avans Bike AC48"); - // __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("Avans Bike AC48"); - - await bleHeart.SetService("HeartRate"); - - bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; - await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); - + foo foo = new foo(); + BLEReceiver bLEReceiver = new BLEReceiver(foo); + bLEReceiver.ConnectToBLE(); Console.Read(); } - private static void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e) + interface IFoo { - Console.WriteLine("Received from {0}: {1}, {2}", e.ServiceName, - BitConverter.ToString(e.Data).Replace("-", " "), - Encoding.UTF8.GetString(e.Data)); + void doStuff(byte[] bytes); + } - string[] bytes = BitConverter.ToString(e.Data).Split('-'); - string[] ANT = new string[5]; - if (e.ServiceName == "6e40fec2-b5a3-f393-e0a9-e50e24dcca9e") + class BLEReceiver + { + IFoo foo; + + public BLEReceiver(IFoo foo) { - Console.WriteLine("SYNC : " + bytes[0]); - ANT[0] = bytes[0]; - Console.WriteLine("LENGTH : " + bytes[1]); + this.foo = foo; + } - int length = Convert.ToInt32(bytes[1], 16); - ANT[1] = length.ToString(); - Console.WriteLine("MSG ID : " + bytes[2]); - ANT[2] = bytes[2]; - string msg = string.Empty; - for (int i = 3; i < 3 + length; i++) + public async void ConnectToBLE() + { + 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) { - msg += bytes[i]; + Console.WriteLine($"Device: {name}"); } - ANT[3] = msg; - byte[] message = new byte[length]; + // Connecting + errorCode = errorCode = await bleBike.OpenDevice("Avans Bike AC48"); + // __TODO__ Error check - Array.Copy(e.Data, 3, message, 0, length); + var services = bleBike.GetServices; + foreach (var service in services) + { + Console.WriteLine($"Service: {service}"); + } - DoCrazyShitWithMsg(message); + // Set service + errorCode = await bleBike.SetService("6e40fec1-b5a3-f393-e0a9-e50e24dcca9e"); + // __TODO__ error check - Console.WriteLine("MSG : " + msg); - string checksum = bytes[3 + length]; - ANT[4] = checksum; - Console.WriteLine("CHECKSUM : " + checksum); + // Subscribe + bleBike.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + errorCode = await bleBike.SubscribeToCharacteristic("6e40fec2-b5a3-f393-e0a9-e50e24dcca9e"); + // Heart rate + errorCode = await bleHeart.OpenDevice("Avans Bike AC48"); - Console.WriteLine(BitConverter.ToString(e.Data)); - - } else - { - Console.WriteLine("BPM: " + Convert.ToInt32(bytes[1], 16)); + await bleHeart.SetService("HeartRate"); + + bleHeart.SubscriptionValueChanged += BleBike_SubscriptionValueChanged; + await bleHeart.SubscribeToCharacteristic("HeartRateMeasurement"); + + Console.Read(); + } + + 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)); + + //string[] bytes = BitConverter.ToString(e.Data).Split('-'); + //string[] ANT = new string[5]; + //if (e.ServiceName == "6e40fec2-b5a3-f393-e0a9-e50e24dcca9e") + //{ + // Console.WriteLine("SYNC : " + bytes[0]); + // ANT[0] = bytes[0]; + // Console.WriteLine("LENGTH : " + bytes[1]); + + // int length = Convert.ToInt32(bytes[1], 16); + // ANT[1] = length.ToString(); + // Console.WriteLine("MSG ID : " + bytes[2]); + // ANT[2] = bytes[2]; + // string msg = string.Empty; + // for (int i = 3; i < 3 + length; i++) + // { + // msg += bytes[i]; + // } + // ANT[3] = msg; + + // byte[] message = new byte[length]; + + // Array.Copy(e.Data, 3, message, 0, length); + + // DoCrazyShitWithMsg(message); + + // Console.WriteLine("MSG : " + msg); + // string checksum = bytes[3 + length]; + // ANT[4] = checksum; + // Console.WriteLine("CHECKSUM : " + checksum); + + + // Console.WriteLine(BitConverter.ToString(e.Data)); + + //} + //else + //{ + // Console.WriteLine("BPM: " + Convert.ToInt32(bytes[1], 16)); + //} + //Console.WriteLine(); + + this.foo.doStuff(e.Data); + } + + private static void DoCrazyShitWithMsg(byte[] bytes) + { + String[] hexvalues = BitConverter.ToString(bytes).Split('-'); + for (int i = 0; i < hexvalues.Length; i++) + { + Console.WriteLine("Byte {0}: {1}", i, hexvalues[i]); + } } - Console.WriteLine(); } - private static void DoCrazyShitWithMsg(byte[] bytes) + class foo : IFoo { - String[] hexvalues = BitConverter.ToString(bytes).Split('-'); - for (int i = 0; i < hexvalues.Length; i++) + public void doStuff(byte[] bytes) { - Console.WriteLine("Byte {0}: {1}" , i, hexvalues[i]); + + Console.WriteLine("Foo class received {0}", Convert.ToString(bytes)); + } } + + } } \ No newline at end of file