/// <summary> /// Bind the inquired GattDeviceService to send and receive data to and from the pen. /// (It is not used unless it is a special case.) /// </summary> /// <param name="gattDeviceServices">GattDeviceService found</param> /// <returns>True on success false on failure</returns> public async Task <bool> Bind(IReadOnlyList <GattDeviceService> gattDeviceServices) { Debug.WriteLine("Bind Try"); try { foreach (var gds in gattDeviceServices) { if (gds.Uuid.Equals(OldServiceUuidV2) || gds.Uuid.Equals(ServiceUuidV2)) { gattDeviceService = gds; mtuSize = gattDeviceService.Session.MaxPduSize; var result = await gds.GetCharacteristicsAsync(); if (result.Status == GattCommunicationStatus.Success) { var characteristics = result.Characteristics; await InitCharacteristics(characteristics); if (writeCharacteristic != null && indicateCharacteristic != null) { writeTask = Task.Run(GattSendDataTask); PenController.PenClient = this; PenController.Protocol = Protocols.V2; PenController.OnConnected(); return(true); } else { // TODO error Debug.WriteLine("Bind cannot init Characteristics"); } } else { // todo error Debug.WriteLine("Bind GattCommunicationStatus is not Success"); } break; } } return(false); } catch (Exception exp) { Debug.WriteLine("Bind Exception occured : " + exp.Message); return(false); } }