19908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta/* 29908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Copyright (C) 2013 The Android Open Source Project 39908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 49908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Licensed under the Apache License, Version 2.0 (the "License"); 59908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * you may not use this file except in compliance with the License. 69908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * You may obtain a copy of the License at 79908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 89908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * http://www.apache.org/licenses/LICENSE-2.0 99908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 109908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Unless required by applicable law or agreed to in writing, software 119908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * distributed under the License is distributed on an "AS IS" BASIS, 129908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * See the License for the specific language governing permissions and 149908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * limitations under the License. 159908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 169908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 179908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Battapackage android.bluetooth; 189908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 199908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Battaimport java.util.UUID; 209908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 219908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta/** 22ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * Represents a Bluetooth GATT Descriptor 2333ec9840c70ddc7cd008ecf2660c441defc5f302Matthew Xie * 2433ec9840c70ddc7cd008ecf2660c441defc5f302Matthew Xie * <p> GATT Descriptors contain additional information and attributes of a GATT 2533ec9840c70ddc7cd008ecf2660c441defc5f302Matthew Xie * characteristic, {@link BluetoothGattCharacteristic}. They can be used to describe 2633ec9840c70ddc7cd008ecf2660c441defc5f302Matthew Xie * the characteristic's features or to control certain behaviours of the characteristic. 279908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 289908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Battapublic class BluetoothGattDescriptor { 299908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 309908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 319908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Value used to enable notification for a client configuration descriptor 329908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 339908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final byte[] ENABLE_NOTIFICATION_VALUE = {0x01, 0x00}; 349908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 359908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 369908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Value used to enable indication for a client configuration descriptor 379908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 389908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final byte[] ENABLE_INDICATION_VALUE = {0x02, 0x00}; 399908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 409908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 419908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Value used to disable notifications or indicatinos 429908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 439908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final byte[] DISABLE_NOTIFICATION_VALUE = {0x00, 0x00}; 449908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 459908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 469908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor read permission 479908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 489908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_READ = 0x01; 499908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 509908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 519908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow encrypted read operations 529908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 539908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_READ_ENCRYPTED = 0x02; 549908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 559908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 569908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow reading with man-in-the-middle protection 579908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 589908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_READ_ENCRYPTED_MITM = 0x04; 599908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 609908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 619908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor write permission 629908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 639908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_WRITE = 0x10; 649908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 659908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 669908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow encrypted writes 679908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 689908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_WRITE_ENCRYPTED = 0x20; 699908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 709908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 719908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow encrypted writes with man-in-the-middle 729908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * protection 739908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 749908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 0x40; 759908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 769908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 779908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow signed write operations 789908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 799908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_WRITE_SIGNED = 0x80; 809908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 819908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 829908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Descriptor permission: Allow signed write operations with 839908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * man-in-the-middle protection 849908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 859908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public static final int PERMISSION_WRITE_SIGNED_MITM = 0x100; 869908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 879908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 889908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * The UUID of this descriptor. 899908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @hide 909908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 919908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta protected UUID mUuid; 929908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 939908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 9425b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * Instance ID for this descriptor. 9525b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * @hide 9625b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach */ 9725b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach protected int mInstance; 9825b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach 9925b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach /** 1009908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Permissions for this descriptor 1019908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @hide 1029908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1039908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta protected int mPermissions; 1049908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1059908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 1069908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Back-reference to the characteristic this descriptor belongs to. 1079908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @hide 1089908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1099908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta protected BluetoothGattCharacteristic mCharacteristic; 1109908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1119908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 1129908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * The value for this descriptor. 1139908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @hide 1149908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1159908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta protected byte[] mValue; 1169908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1179908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 1189908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Create a new BluetoothGattDescriptor. 1199908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 1209908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 121ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * @param uuid The UUID for this descriptor 122ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * @param permissions Permissions for this descriptor 123ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie */ 124ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie public BluetoothGattDescriptor(UUID uuid, int permissions) { 12525b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach initDescriptor(null, uuid, 0, permissions); 126ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie } 127ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie 128ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie /** 129ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * Create a new BluetoothGattDescriptor. 130ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 131ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * 1329908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @param characteristic The characteristic this descriptor belongs to 1339908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @param uuid The UUID for this descriptor 1349908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @param permissions Permissions for this descriptor 1359908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1369908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /*package*/ BluetoothGattDescriptor(BluetoothGattCharacteristic characteristic, UUID uuid, 13725b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach int instance, int permissions) { 13825b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach initDescriptor(characteristic, uuid, instance, permissions); 139ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie } 140ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie 141ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie private void initDescriptor(BluetoothGattCharacteristic characteristic, UUID uuid, 14225b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach int instance, int permissions) { 1439908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta mCharacteristic = characteristic; 1449908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta mUuid = uuid; 14525b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach mInstance = instance; 1469908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta mPermissions = permissions; 1479908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 1489908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1499908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 1509908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Returns the characteristic this descriptor belongs to. 1519908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @return The characteristic. 1529908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1539908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public BluetoothGattCharacteristic getCharacteristic() { 1549908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta return mCharacteristic; 1559908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 1569908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1579908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 158ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * Set the back-reference to the associated characteristic 159ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * @hide 160ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie */ 161ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie /*package*/ void setCharacteristic(BluetoothGattCharacteristic characteristic) { 162ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie mCharacteristic = characteristic; 163ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie } 164ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie 165ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie /** 1669908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Returns the UUID of this descriptor. 1679908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 1689908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @return UUID of this descriptor 1699908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1709908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public UUID getUuid() { 1719908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta return mUuid; 1729908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 1739908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1749908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 17525b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * Returns the instance ID for this descriptor. 17625b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * 17725b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * <p>If a remote device offers multiple descriptors with the same UUID, 17825b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * the instance ID is used to distuinguish between descriptors. 17925b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * 18025b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 18125b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * 18225b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * @return Instance ID of this descriptor 18325b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach * @hide 18425b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach */ 18525b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach public int getInstanceId() { 18625b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach return mInstance; 18725b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach } 18825b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach 18925b9cf953bd3e97f726f8c27d7a752b27c9a2373Andre Eisenbach /** 1909908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Returns the permissions for this descriptor. 1919908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 1929908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @return Permissions of this descriptor 1939908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 1949908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public int getPermissions() { 1959908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta return mPermissions; 1969908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 1979908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 1989908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 1999908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Returns the stored value for this descriptor 2009908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 2019908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * <p>This function returns the stored value for this descriptor as 202ddf7e4756c31d0ed90802f98abeaa79df6d16b2aMatthew Xie * retrieved by calling {@link BluetoothGatt#readDescriptor}. The cached 2039908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * value of the descriptor is updated as a result of a descriptor read 2049908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * operation. 2059908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 2069908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @return Cached value of the descriptor 2079908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 2089908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public byte[] getValue() { 2099908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta return mValue; 2109908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 2119908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta 2129908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta /** 2139908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * Updates the locally stored value of this descriptor. 2149908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 2159908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * <p>This function modifies the locally stored cached value of this 2169908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * descriptor. To send the value to the remote device, call 2179908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * {@link BluetoothGatt#writeDescriptor} to send the value to the 2189908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * remote device. 2199908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * 2209908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @param value New value for this descriptor 2219908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * @return true if the locally stored value has been set, false if the 2229908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta * requested value could not be stored locally. 2239908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta */ 2249908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta public boolean setValue(byte[] value) { 2259908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta mValue = value; 2269908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta return true; 2279908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta } 2289908112fd085d8b0d91e0562d32eebd1884f09a5Ganesh Ganapathi Batta} 229