public IGattCharacteristicBuilder SetWrite(Func <WriteRequest, GattState> onWrite, WriteOptions options = WriteOptions.Write) { this.onWrite = onWrite; if (options.HasFlag(NotificationOptions.EncryptionRequired)) { this.permissions = GattPermission.WriteEncrypted; } if (options.HasFlag(WriteOptions.AuthenticatedSignedWrites)) { this.properties |= GattProperty.SignedWrite; } if (options.HasFlag(WriteOptions.Write)) { this.properties |= GattProperty.Write; } if (options.HasFlag(WriteOptions.WriteWithoutResponse)) { this.properties |= GattProperty.WriteNoResponse; } return(this); }
/// <summary> /// Convert abstracted permissions to android native permissions /// </summary> /// <param name="permissions"></param> /// <returns></returns> GattPermission GetNativePermissions(CharacterisiticPermissionType permissions) { GattPermission nativePermissions = 0; foreach (CharacterisiticPermissionType value in Enum.GetValues(typeof(CharacterisiticPermissionType))) { if (permissions.HasFlag(value)) { switch (value) { case CharacterisiticPermissionType.Read: nativePermissions |= GattPermission.Read; break; case CharacterisiticPermissionType.Write: nativePermissions |= GattPermission.Write; break; case CharacterisiticPermissionType.ReadEncrypted: nativePermissions |= GattPermission.ReadEncrypted; break; case CharacterisiticPermissionType.WriteEncrypted: nativePermissions |= GattPermission.WriteEncrypted; break; } } } return(nativePermissions); }
public IGattCharacteristicBuilder SetRead(Func <ReadRequest, ReadResult> onRead, bool encrypted = false) { this.onRead = onRead; this.properties |= GattProperty.Read; if (encrypted) { this.permissions |= GattPermission.ReadEncrypted; } return(this); }
public BluetoothGattCharacteristicModel( Guid serviceUuid, Guid uuid, GattProperty properties, GattPermission permissions, IEnumerable <BluetoothGattDescriptorModel> descriptors) { ServiceUuid = serviceUuid; Uuid = uuid; Properties = properties; Permissions = permissions; Descriptors = descriptors; }
/// <summary> /// Convert native permissions to abstracted permissions /// </summary> /// <param name="permission"></param> /// <returns></returns> CharacterisiticPermissionType GetPermissions(GattPermission permission) { CharacterisiticPermissionType t = 0; foreach (GattPermission value in Enum.GetValues(typeof(GattPermission))) { switch (value) { case GattPermission.Read: t |= CharacterisiticPermissionType.Read; break; case GattPermission.ReadEncrypted: t |= CharacterisiticPermissionType.ReadEncrypted; break; case GattPermission.ReadEncryptedMitm: t |= CharacterisiticPermissionType.ReadEncryptedMitm; break; case GattPermission.Write: t |= CharacterisiticPermissionType.Write; break; case GattPermission.WriteEncrypted: t |= CharacterisiticPermissionType.WriteEncrypted; break; case GattPermission.WriteEncryptedMitm: t |= CharacterisiticPermissionType.WriteEncryptedMitm; break; case GattPermission.WriteSigned: t |= CharacterisiticPermissionType.WriteSigned; break; case GattPermission.WriteSignedMitm: t |= CharacterisiticPermissionType.WriteSignedMitm; break; default: throw new ArgumentOutOfRangeException(); } } return(t); }
public Characteristic(Guid uuid, CharacterisiticPermissionType permissions, CharacteristicPropertyType properties) { GattPermission gattPermissions = GetNativePermissions(permissions); _nativeCharacteristic = new BluetoothGattCharacteristic(UUID.FromString(uuid.ToString()), (GattProperty)properties, gattPermissions); }