error handling

This commit is contained in:
shinichi
2020-09-09 13:43:59 +02:00
parent 3e3a0cf4c4
commit 87abee1207
2 changed files with 47 additions and 19 deletions

View File

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

View File

@@ -13,9 +13,9 @@ namespace ProftaakRH
IDataConverter dataConverter = new DataConverter(); IDataConverter dataConverter = new DataConverter();
BLEReciever bLEReceiver = new BLEReciever(dataConverter); BLEReciever bLEReceiver = new BLEReciever(dataConverter);
bLEReceiver.Connect("sdkgjnzsoifgnzaiof"); bLEReceiver.Connect();
//Console.ReadLine(); Console.ReadLine();
} }
} }
} }