private void FindAttributes (BlePeripheralService service)
		{
			byte[] findInfo = Ble.Lib.BLECommandATTClientFindInformation (this.Connection, service.StartHandle, service.EndHandle);

			FindInformationFoundEventHandler infoHandler = (sender, e) => this.AttributeFound (service, e);
				
			Ble.Lib.BLEEventATTClientFindInformationFound += infoHandler;

			ProcedureCompletedEventArgs procedureResponse = null;
			ProcedureCompletedEventHandler handler = (sender, e) => {
				procedureResponse = e;
			};
			Ble.Lib.BLEEventATTClientProcedureCompleted += handler;

			Ble.SendCommand (this.Port, findInfo);

			this.WaitEvent (() => procedureResponse != null);

			Ble.Lib.BLEEventATTClientFindInformationFound -= infoHandler;
			Ble.Lib.BLEEventATTClientProcedureCompleted -= handler;
		}
		private void ConvertAttributesToCharacteristics (BlePeripheralService service)
		{
			#region Example attr table

//			*=== Service: 42 48 12 4a 7f 2c 48 47 b9 de 04 a9 02 00 06 d5 
//			*====== Att: 26 - 00 28 
//			*====== Att: 27 - 03 28 
//			*====== Att: 28 - 42 48 12 4a 7f 2c 48 47 b9 de 04 a9 02 04 06 d5 
//			*====== Att: 29 - 02 29 
//			*====== Att: 30 - 03 28 
//			*====== Att: 31 - 42 48 12 4a 7f 2c 48 47 b9 de 04 a9 02 05 06 d5 
//			*====== Att: 32 - 02 29 

			#endregion

			BlePeripheralCharacteristic current = null;
			bool createCharacteristic = false;

			foreach (BlePeripheralAttribute attr in service.Attributes)
			{
				if (attr.AttributeUUID.Equals (BlePeripheralAttribute.SERVICE_UUID))
				{
					// defines service - do nothing
				}
				else if (attr.AttributeUUID.Equals (BlePeripheralAttribute.CHARACTERISTIC_UUID))
				{
					// finish previous characteristic
					current = null;

					// crete characteristic from next attribute
					createCharacteristic = true;
				}
				else if (attr.AttributeUUID.Equals (BlePeripheralAttribute.CHARACTERISTIC_CCC_UUID))
				{
					// add ccc capabilities to characteristic
					current.SetCCCHandle (attr.Handle);
				}
				else
				{
					// if new characteristic begins - create it else skip and do nothing
					if (createCharacteristic)
					{
						current = new BlePeripheralCharacteristic (attr.AttributeUUID, attr.Handle);
						createCharacteristic = false;

						service.Characteristics.Add (current);
					}
				}
			}
		}
		private void AttributeFound (BlePeripheralService service, FindInformationFoundEventArgs e)
		{
			service.Attributes.Add (new BlePeripheralAttribute (e.uuid, e.chrhandle));
		}