Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7d47a73 authored by Rahul Arya's avatar Rahul Arya
Browse files

[Private GATT] Rename writable -> writable_with_response

Based on comments from aosp/2503097.

Test: unit
Bug: 274945531
Change-Id: I566daa99e5ba23faac4eb0c993b9e100919c1a9e
parent 0fd67b00
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -328,7 +328,7 @@ fn consume_descriptors<'a>(
    {
        let mut att_permissions = AttPermissions::empty();
        att_permissions.set(AttPermissions::READABLE, permissions & 0x01 != 0);
        att_permissions.set(AttPermissions::WRITABLE, permissions & 0x10 != 0);
        att_permissions.set(AttPermissions::WRITABLE_WITH_RESPONSE, permissions & 0x10 != 0);

        out.push(GattDescriptorWithHandle {
            handle: AttHandle(*attribute_handle),
@@ -638,7 +638,7 @@ mod test {
        ])
        .unwrap();

        assert_eq!(service.characteristics[0].permissions, AttPermissions::WRITABLE);
        assert_eq!(service.characteristics[0].permissions, AttPermissions::WRITABLE_WITH_RESPONSE);
    }

    #[test]
@@ -651,7 +651,7 @@ mod test {

        assert_eq!(
            service.characteristics[0].permissions,
            AttPermissions::READABLE | AttPermissions::WRITABLE
            AttPermissions::READABLE | AttPermissions::WRITABLE_WITH_RESPONSE
        );
    }

@@ -684,10 +684,13 @@ mod test {
        .unwrap();

        assert_eq!(service.characteristics[0].descriptors[0].permissions, AttPermissions::READABLE);
        assert_eq!(service.characteristics[0].descriptors[1].permissions, AttPermissions::WRITABLE);
        assert_eq!(
            service.characteristics[0].descriptors[1].permissions,
            AttPermissions::WRITABLE_WITH_RESPONSE
        );
        assert_eq!(
            service.characteristics[0].descriptors[2].permissions,
            AttPermissions::READABLE | AttPermissions::WRITABLE
            AttPermissions::READABLE | AttPermissions::WRITABLE_WITH_RESPONSE
        );
    }

+3 −3
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ bitflags! {
        /// Attribute can be written to using WRITE_CMD
        const WRITABLE_WITHOUT_RESPONSE = 0x04;
        /// Attribute can be written to using WRITE_REQ
        const WRITABLE = 0x08;
        const WRITABLE_WITH_RESPONSE = 0x08;
        /// Attribute value may be sent using indications
        const INDICATE = 0x20;
    }
@@ -52,8 +52,8 @@ impl AttPermissions {
        self.contains(AttPermissions::READABLE)
    }
    /// Attribute can be written to using WRITE_REQ
    pub fn writable(&self) -> bool {
        self.contains(AttPermissions::WRITABLE)
    pub fn writable_with_response(&self) -> bool {
        self.contains(AttPermissions::WRITABLE_WITH_RESPONSE)
    }
    /// Attribute can be written to using WRITE_CMD
    pub fn writable_without_response(&self) -> bool {
+17 −13
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ impl GattDatabase {
                                .permissions
                                .writable_without_response()
                                .into(),
                            write: characteristic.permissions.writable().into(),
                            write: characteristic.permissions.writable_with_response().into(),
                            notify: 0,
                            indicate: characteristic.permissions.indicate().into(),
                            authenticated_signed_writes: 0,
@@ -399,7 +399,7 @@ impl AttDatabase for AttDatabaseImpl {
            let Some(attr) = services.attributes.get(&handle) else {
                return Err(AttErrorCode::INVALID_HANDLE);
            };
            if !attr.attribute.permissions.writable() {
            if !attr.attribute.permissions.writable_with_response() {
                return Err(AttErrorCode::WRITE_NOT_PERMITTED);
            }
            Ok(attr.value.clone())
@@ -682,7 +682,7 @@ mod test {
                        handle: CHARACTERISTIC_VALUE_HANDLE,
                        type_: CHARACTERISTIC_TYPE,
                        permissions: AttPermissions::READABLE
                            | AttPermissions::WRITABLE
                            | AttPermissions::WRITABLE_WITH_RESPONSE
                            | AttPermissions::INDICATE,
                        descriptors: vec![],
                    }],
@@ -712,7 +712,7 @@ mod test {
                handle: CHARACTERISTIC_VALUE_HANDLE,
                type_: CHARACTERISTIC_TYPE,
                permissions: AttPermissions::READABLE
                    | AttPermissions::WRITABLE
                    | AttPermissions::WRITABLE_WITH_RESPONSE
                    | AttPermissions::INDICATE
            }
        );
@@ -871,7 +871,7 @@ mod test {
                characteristics: vec![GattCharacteristicWithHandle {
                    handle: SERVICE_HANDLE,
                    type_: CHARACTERISTIC_TYPE,
                    permissions: AttPermissions::WRITABLE,
                    permissions: AttPermissions::WRITABLE_WITH_RESPONSE,
                    descriptors: vec![],
                }],
            },
@@ -923,7 +923,7 @@ mod test {
                    characteristics: vec![GattCharacteristicWithHandle {
                        handle: CHARACTERISTIC_VALUE_HANDLE,
                        type_: CHARACTERISTIC_TYPE,
                        permissions: AttPermissions::WRITABLE,
                        permissions: AttPermissions::WRITABLE_WITH_RESPONSE,
                        descriptors: vec![],
                    }],
                },
@@ -977,7 +977,7 @@ mod test {
                    characteristics: vec![GattCharacteristicWithHandle {
                        handle: CHARACTERISTIC_VALUE_HANDLE,
                        type_: CHARACTERISTIC_TYPE,
                        permissions: AttPermissions::WRITABLE,
                        permissions: AttPermissions::WRITABLE_WITH_RESPONSE,
                        descriptors: vec![],
                    }],
                },
@@ -1102,7 +1102,7 @@ mod test {
                        descriptors: vec![GattDescriptorWithHandle {
                            handle: DESCRIPTOR_HANDLE,
                            type_: DESCRIPTOR_TYPE,
                            permissions: AttPermissions::WRITABLE,
                            permissions: AttPermissions::WRITABLE_WITH_RESPONSE,
                        }],
                    }],
                },
@@ -1163,13 +1163,13 @@ mod test {
                                GattDescriptorWithHandle {
                                    handle: AttHandle(7),
                                    type_: DESCRIPTOR_TYPE,
                                    permissions: AttPermissions::WRITABLE,
                                    permissions: AttPermissions::WRITABLE_WITH_RESPONSE,
                                },
                                GattDescriptorWithHandle {
                                    handle: AttHandle(8),
                                    type_: DESCRIPTOR_TYPE,
                                    permissions: AttPermissions::READABLE
                                        | AttPermissions::WRITABLE,
                                        | AttPermissions::WRITABLE_WITH_RESPONSE,
                                },
                            ],
                        },
@@ -1198,8 +1198,11 @@ mod test {
        assert_eq!(attributes[7].handle, AttHandle(8));
        // assert: check the permissions of the descriptors are correct
        assert_eq!(attributes[3].permissions, AttPermissions::READABLE);
        assert_eq!(attributes[6].permissions, AttPermissions::WRITABLE);
        assert_eq!(attributes[7].permissions, AttPermissions::READABLE | AttPermissions::WRITABLE);
        assert_eq!(attributes[6].permissions, AttPermissions::WRITABLE_WITH_RESPONSE);
        assert_eq!(
            attributes[7].permissions,
            AttPermissions::READABLE | AttPermissions::WRITABLE_WITH_RESPONSE
        );
    }

    #[test]
@@ -1530,7 +1533,8 @@ mod test {
                    characteristics: vec![GattCharacteristicWithHandle {
                        handle: CHARACTERISTIC_VALUE_HANDLE,
                        type_: CHARACTERISTIC_TYPE,
                        permissions: AttPermissions::READABLE | AttPermissions::WRITABLE,
                        permissions: AttPermissions::READABLE
                            | AttPermissions::WRITABLE_WITH_RESPONSE,
                        descriptors: vec![],
                    }],
                },
+5 −2
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ pub fn register_gatt_service(database: &mut GattDatabase) -> Result<()> {
                descriptors: vec![GattDescriptorWithHandle {
                    handle: SERVICE_CHANGE_CCC_DESCRIPTOR_HANDLE,
                    type_: CLIENT_CHARACTERISTIC_CONFIGURATION_UUID,
                    permissions: AttPermissions::READABLE | AttPermissions::WRITABLE,
                    permissions: AttPermissions::READABLE | AttPermissions::WRITABLE_WITH_RESPONSE,
                }],
            }],
        },
@@ -245,7 +245,10 @@ mod test {
        assert_eq!(attrs[3].type_, CLIENT_CHARACTERISTIC_CONFIGURATION_UUID);
        // assert: permissions of value attrs are correct
        assert_eq!(attrs[2].permissions, AttPermissions::INDICATE);
        assert_eq!(attrs[3].permissions, AttPermissions::READABLE | AttPermissions::WRITABLE);
        assert_eq!(
            attrs[3].permissions,
            AttPermissions::READABLE | AttPermissions::WRITABLE_WITH_RESPONSE
        );
    }

    #[test]
+2 −2
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ impl AttDatabase for TestAttDatabase {
    ) -> Result<(), AttErrorCode> {
        match self.attributes.get(&handle) {
            Some(TestAttributeWithData { attribute: AttAttribute { permissions, .. }, .. })
                if !permissions.writable() =>
                if !permissions.writable_with_response() =>
            {
                Err(AttErrorCode::WRITE_NOT_PERMITTED)
            }
@@ -78,7 +78,7 @@ impl AttDatabase for TestAttDatabase {
            Some(TestAttributeWithData {
                attribute: AttAttribute { permissions, .. },
                data: data_cell,
            }) if !permissions.writable() => {
            }) if !permissions.writable_with_response() => {
                data_cell.replace(data.get_raw_payload().collect());
            }
            _ => {
Loading