Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
 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);
 }
Example #4
0
 public BluetoothGattCharacteristicModel(
     Guid serviceUuid,
     Guid uuid,
     GattProperty properties,
     GattPermission permissions,
     IEnumerable <BluetoothGattDescriptorModel> descriptors)
 {
     ServiceUuid = serviceUuid;
     Uuid        = uuid;
     Properties  = properties;
     Permissions = permissions;
     Descriptors = descriptors;
 }
Example #5
0
        /// <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);
        }
Example #6
0
        public Characteristic(Guid uuid, CharacterisiticPermissionType permissions, CharacteristicPropertyType properties)
        {
            GattPermission gattPermissions = GetNativePermissions(permissions);

            _nativeCharacteristic = new BluetoothGattCharacteristic(UUID.FromString(uuid.ToString()), (GattProperty)properties, gattPermissions);
        }