public DetectorSetup() { this.InitializeComponent(); btleConn = new BtleConnection(); btleConn.writeGattChar = new Fn_IntPtr_IntPtr_ByteArray(writeCharacteristic); btleConn.readGattChar = new Fn_IntPtr_IntPtr(readCharacteristic); initDelegate = new Fn_IntPtr_Int(initialized); dataprocDelegates = new Dictionary <string, Fn_IntPtr>(); logReadyDelegates = new Fn_IntPtr[2]; }
/// <summary> /// Initialize the API /// </summary> /// <returns>Status value from calling <see cref="mbl_mw_metawearboard_initialize(IntPtr, Fn_IntPtr_Int)"/></returns> public async Task <int> Initialize() { if (notifyChar == null) { notifyChar = btleDevice.GetGattService(GattCharGuid.METAWEAR_NOTIFY_CHAR.serviceGuid).GetCharacteristics(GattCharGuid.METAWEAR_NOTIFY_CHAR.guid).FirstOrDefault(); notifyChar.ValueChanged += notifyHandler; await notifyChar.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify); } initTaskSource = new TaskCompletionSource <int>(); initDelegate = new Fn_IntPtr_Int((caller, status) => { initTaskSource.SetResult(status); }); mbl_mw_metawearboard_initialize(cppBoard, initDelegate); return(await initTaskSource.Task); }