Merge "Change how services are passed up to the stack"
am: 2ebc12b
* commit '2ebc12bb485f401e27504c235da2a935ab327937':
Change how services are passed up to the stack
This commit is contained in:
@@ -6756,9 +6756,10 @@ package android.bluetooth {
|
||||
method public void onServicesDiscovered(android.bluetooth.BluetoothGatt, int);
|
||||
}
|
||||
|
||||
public class BluetoothGattCharacteristic {
|
||||
public class BluetoothGattCharacteristic implements android.os.Parcelable {
|
||||
ctor public BluetoothGattCharacteristic(java.util.UUID, int, int);
|
||||
method public boolean addDescriptor(android.bluetooth.BluetoothGattDescriptor);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
|
||||
method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
|
||||
method public java.lang.Float getFloatValue(int, int);
|
||||
@@ -6776,6 +6777,8 @@ package android.bluetooth {
|
||||
method public boolean setValue(int, int, int, int);
|
||||
method public boolean setValue(java.lang.String);
|
||||
method public void setWriteType(int);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
|
||||
field public static final int FORMAT_FLOAT = 52; // 0x34
|
||||
field public static final int FORMAT_SFLOAT = 50; // 0x32
|
||||
field public static final int FORMAT_SINT16 = 34; // 0x22
|
||||
@@ -6806,13 +6809,16 @@ package android.bluetooth {
|
||||
field protected java.util.List<android.bluetooth.BluetoothGattDescriptor> mDescriptors;
|
||||
}
|
||||
|
||||
public class BluetoothGattDescriptor {
|
||||
public class BluetoothGattDescriptor implements android.os.Parcelable {
|
||||
ctor public BluetoothGattDescriptor(java.util.UUID, int);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic();
|
||||
method public int getPermissions();
|
||||
method public java.util.UUID getUuid();
|
||||
method public byte[] getValue();
|
||||
method public boolean setValue(byte[]);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattDescriptor> CREATOR;
|
||||
field public static final byte[] DISABLE_NOTIFICATION_VALUE;
|
||||
field public static final byte[] ENABLE_INDICATION_VALUE;
|
||||
field public static final byte[] ENABLE_NOTIFICATION_VALUE;
|
||||
@@ -6855,16 +6861,19 @@ package android.bluetooth {
|
||||
method public void onServiceAdded(int, android.bluetooth.BluetoothGattService);
|
||||
}
|
||||
|
||||
public class BluetoothGattService {
|
||||
public class BluetoothGattService implements android.os.Parcelable {
|
||||
ctor public BluetoothGattService(java.util.UUID, int);
|
||||
method public boolean addCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
|
||||
method public boolean addService(android.bluetooth.BluetoothGattService);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic(java.util.UUID);
|
||||
method public java.util.List<android.bluetooth.BluetoothGattCharacteristic> getCharacteristics();
|
||||
method public java.util.List<android.bluetooth.BluetoothGattService> getIncludedServices();
|
||||
method public int getInstanceId();
|
||||
method public int getType();
|
||||
method public java.util.UUID getUuid();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattService> CREATOR;
|
||||
field public static final int SERVICE_TYPE_PRIMARY = 0; // 0x0
|
||||
field public static final int SERVICE_TYPE_SECONDARY = 1; // 0x1
|
||||
field protected java.util.List<android.bluetooth.BluetoothGattCharacteristic> mCharacteristics;
|
||||
|
||||
@@ -6977,9 +6977,10 @@ package android.bluetooth {
|
||||
method public void onServicesDiscovered(android.bluetooth.BluetoothGatt, int);
|
||||
}
|
||||
|
||||
public class BluetoothGattCharacteristic {
|
||||
public class BluetoothGattCharacteristic implements android.os.Parcelable {
|
||||
ctor public BluetoothGattCharacteristic(java.util.UUID, int, int);
|
||||
method public boolean addDescriptor(android.bluetooth.BluetoothGattDescriptor);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattDescriptor getDescriptor(java.util.UUID);
|
||||
method public java.util.List<android.bluetooth.BluetoothGattDescriptor> getDescriptors();
|
||||
method public java.lang.Float getFloatValue(int, int);
|
||||
@@ -6997,6 +6998,8 @@ package android.bluetooth {
|
||||
method public boolean setValue(int, int, int, int);
|
||||
method public boolean setValue(java.lang.String);
|
||||
method public void setWriteType(int);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattCharacteristic> CREATOR;
|
||||
field public static final int FORMAT_FLOAT = 52; // 0x34
|
||||
field public static final int FORMAT_SFLOAT = 50; // 0x32
|
||||
field public static final int FORMAT_SINT16 = 34; // 0x22
|
||||
@@ -7027,13 +7030,16 @@ package android.bluetooth {
|
||||
field protected java.util.List<android.bluetooth.BluetoothGattDescriptor> mDescriptors;
|
||||
}
|
||||
|
||||
public class BluetoothGattDescriptor {
|
||||
public class BluetoothGattDescriptor implements android.os.Parcelable {
|
||||
ctor public BluetoothGattDescriptor(java.util.UUID, int);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic();
|
||||
method public int getPermissions();
|
||||
method public java.util.UUID getUuid();
|
||||
method public byte[] getValue();
|
||||
method public boolean setValue(byte[]);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattDescriptor> CREATOR;
|
||||
field public static final byte[] DISABLE_NOTIFICATION_VALUE;
|
||||
field public static final byte[] ENABLE_INDICATION_VALUE;
|
||||
field public static final byte[] ENABLE_NOTIFICATION_VALUE;
|
||||
@@ -7076,16 +7082,19 @@ package android.bluetooth {
|
||||
method public void onServiceAdded(int, android.bluetooth.BluetoothGattService);
|
||||
}
|
||||
|
||||
public class BluetoothGattService {
|
||||
public class BluetoothGattService implements android.os.Parcelable {
|
||||
ctor public BluetoothGattService(java.util.UUID, int);
|
||||
method public boolean addCharacteristic(android.bluetooth.BluetoothGattCharacteristic);
|
||||
method public boolean addService(android.bluetooth.BluetoothGattService);
|
||||
method public int describeContents();
|
||||
method public android.bluetooth.BluetoothGattCharacteristic getCharacteristic(java.util.UUID);
|
||||
method public java.util.List<android.bluetooth.BluetoothGattCharacteristic> getCharacteristics();
|
||||
method public java.util.List<android.bluetooth.BluetoothGattService> getIncludedServices();
|
||||
method public int getInstanceId();
|
||||
method public int getType();
|
||||
method public java.util.UUID getUuid();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothGattService> CREATOR;
|
||||
field public static final int SERVICE_TYPE_PRIMARY = 0; // 0x0
|
||||
field public static final int SERVICE_TYPE_SECONDARY = 1; // 0x1
|
||||
field protected java.util.List<android.bluetooth.BluetoothGattCharacteristic> mCharacteristics;
|
||||
|
||||
@@ -196,98 +196,6 @@ public final class BluetoothGatt implements BluetoothProfile {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A new GATT service has been discovered.
|
||||
* The service is added to the internal list and the search
|
||||
* continues.
|
||||
* @hide
|
||||
*/
|
||||
public void onGetService(String address, int srvcType,
|
||||
int srvcInstId, ParcelUuid srvcUuid) {
|
||||
if (VDBG) Log.d(TAG, "onGetService() - Device=" + address + " UUID=" + srvcUuid);
|
||||
if (!address.equals(mDevice.getAddress())) {
|
||||
return;
|
||||
}
|
||||
mServices.add(new BluetoothGattService(mDevice, srvcUuid.getUuid(),
|
||||
srvcInstId, srvcType));
|
||||
}
|
||||
|
||||
/**
|
||||
* An included service has been found durig GATT discovery.
|
||||
* The included service is added to the respective parent.
|
||||
* @hide
|
||||
*/
|
||||
public void onGetIncludedService(String address, int srvcType,
|
||||
int srvcInstId, ParcelUuid srvcUuid,
|
||||
int inclSrvcType, int inclSrvcInstId,
|
||||
ParcelUuid inclSrvcUuid) {
|
||||
if (VDBG) Log.d(TAG, "onGetIncludedService() - Device=" + address
|
||||
+ " UUID=" + srvcUuid + " Included=" + inclSrvcUuid);
|
||||
|
||||
if (!address.equals(mDevice.getAddress())) {
|
||||
return;
|
||||
}
|
||||
BluetoothGattService service = getService(mDevice,
|
||||
srvcUuid.getUuid(), srvcInstId, srvcType);
|
||||
BluetoothGattService includedService = getService(mDevice,
|
||||
inclSrvcUuid.getUuid(), inclSrvcInstId, inclSrvcType);
|
||||
|
||||
if (service != null && includedService != null) {
|
||||
service.addIncludedService(includedService);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A new GATT characteristic has been discovered.
|
||||
* Add the new characteristic to the relevant service and continue
|
||||
* the remote device inspection.
|
||||
* @hide
|
||||
*/
|
||||
public void onGetCharacteristic(String address, int srvcType,
|
||||
int srvcInstId, ParcelUuid srvcUuid,
|
||||
int charInstId, ParcelUuid charUuid,
|
||||
int charProps) {
|
||||
if (VDBG) Log.d(TAG, "onGetCharacteristic() - Device=" + address + " UUID=" +
|
||||
charUuid);
|
||||
|
||||
if (!address.equals(mDevice.getAddress())) {
|
||||
return;
|
||||
}
|
||||
BluetoothGattService service = getService(mDevice, srvcUuid.getUuid(),
|
||||
srvcInstId, srvcType);
|
||||
if (service != null) {
|
||||
service.addCharacteristic(new BluetoothGattCharacteristic(
|
||||
service, charUuid.getUuid(), charInstId, charProps, 0));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A new GATT descriptor has been discovered.
|
||||
* Finally, add the descriptor to the related characteristic.
|
||||
* This should conclude the remote device update.
|
||||
* @hide
|
||||
*/
|
||||
public void onGetDescriptor(String address, int srvcType,
|
||||
int srvcInstId, ParcelUuid srvcUuid,
|
||||
int charInstId, ParcelUuid charUuid,
|
||||
int descrInstId, ParcelUuid descUuid) {
|
||||
if (VDBG) Log.d(TAG, "onGetDescriptor() - Device=" + address + " UUID=" + descUuid);
|
||||
|
||||
if (!address.equals(mDevice.getAddress())) {
|
||||
return;
|
||||
}
|
||||
BluetoothGattService service = getService(mDevice, srvcUuid.getUuid(),
|
||||
srvcInstId, srvcType);
|
||||
if (service == null) return;
|
||||
|
||||
BluetoothGattCharacteristic characteristic = service.getCharacteristic(
|
||||
charUuid.getUuid(), charInstId);
|
||||
if (characteristic == null) return;
|
||||
|
||||
characteristic.addDescriptor(new BluetoothGattDescriptor(
|
||||
characteristic, descUuid.getUuid(), descrInstId, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remote search has been completed.
|
||||
* The internal object structure should now reflect the state
|
||||
@@ -295,11 +203,37 @@ public final class BluetoothGatt implements BluetoothProfile {
|
||||
* we are done at this point.
|
||||
* @hide
|
||||
*/
|
||||
public void onSearchComplete(String address, int status) {
|
||||
public void onSearchComplete(String address, List<BluetoothGattService> services,
|
||||
int status) {
|
||||
if (DBG) Log.d(TAG, "onSearchComplete() = Device=" + address + " Status=" + status);
|
||||
if (!address.equals(mDevice.getAddress())) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (BluetoothGattService s : services) {
|
||||
//services we receive don't have device set properly.
|
||||
s.setDevice(mDevice);
|
||||
}
|
||||
|
||||
mServices.addAll(services);
|
||||
|
||||
// Fix references to included services, as they doesn't point to right objects.
|
||||
for (BluetoothGattService fixedService : mServices) {
|
||||
ArrayList<BluetoothGattService> includedServices =
|
||||
new ArrayList(fixedService.getIncludedServices());
|
||||
fixedService.getIncludedServices().clear();
|
||||
|
||||
for(BluetoothGattService brokenRef : includedServices) {
|
||||
BluetoothGattService includedService = getService(mDevice,
|
||||
brokenRef.getUuid(), brokenRef.getInstanceId(), brokenRef.getType());
|
||||
if (includedService != null) {
|
||||
fixedService.addIncludedService(includedService);
|
||||
} else {
|
||||
Log.e(TAG, "Broken GATT database: can't find included service.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
mCallback.onServicesDiscovered(BluetoothGatt.this, status);
|
||||
} catch (Exception ex) {
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.bluetooth;
|
||||
|
||||
import android.bluetooth.le.AdvertiseSettings;
|
||||
import android.bluetooth.le.ScanResult;
|
||||
import android.bluetooth.BluetoothGattService;
|
||||
import android.os.ParcelUuid;
|
||||
import android.os.RemoteException;
|
||||
|
||||
@@ -48,30 +49,8 @@ public class BluetoothGattCallbackWrapper extends IBluetoothGattCallback.Stub {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetService(String address, int srvcType, int srvcInstId, ParcelUuid srvcUuid)
|
||||
throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetIncludedService(String address, int srvcType, int srvcInstId,
|
||||
ParcelUuid srvcUuid, int inclSrvcType, int inclSrvcInstId, ParcelUuid inclSrvcUuid)
|
||||
throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetCharacteristic(String address, int srvcType, int srvcInstId,
|
||||
ParcelUuid srvcUuid, int charInstId, ParcelUuid charUuid, int charProps)
|
||||
throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetDescriptor(String address, int srvcType, int srvcInstId, ParcelUuid srvcUuid,
|
||||
int charInstId, ParcelUuid charUuid, int descrInstId, ParcelUuid descrUuid)
|
||||
throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSearchComplete(String address, int status) throws RemoteException {
|
||||
public void onSearchComplete(String address, List<BluetoothGattService> services,
|
||||
int status) throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
19
core/java/android/bluetooth/BluetoothGattCharacteristic.aidl
Normal file
19
core/java/android/bluetooth/BluetoothGattCharacteristic.aidl
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.bluetooth;
|
||||
|
||||
parcelable BluetoothGattCharacteristic;
|
||||
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package android.bluetooth;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.ParcelUuid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@@ -26,7 +29,7 @@ import java.util.UUID;
|
||||
* {@link BluetoothGattService}. The characteristic contains a value as well as
|
||||
* additional information and optional GATT descriptors, {@link BluetoothGattDescriptor}.
|
||||
*/
|
||||
public class BluetoothGattCharacteristic {
|
||||
public class BluetoothGattCharacteristic implements Parcelable {
|
||||
|
||||
/**
|
||||
* Characteristic proprty: Characteristic is broadcastable.
|
||||
@@ -242,6 +245,15 @@ public class BluetoothGattCharacteristic {
|
||||
initCharacteristic(service, uuid, instanceId, properties, permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new BluetoothGattCharacteristic
|
||||
* @hide
|
||||
*/
|
||||
public BluetoothGattCharacteristic(UUID uuid, int instanceId,
|
||||
int properties, int permissions) {
|
||||
initCharacteristic(null, uuid, instanceId, properties, permissions);
|
||||
}
|
||||
|
||||
private void initCharacteristic(BluetoothGattService service,
|
||||
UUID uuid, int instanceId,
|
||||
int properties, int permissions) {
|
||||
@@ -260,6 +272,50 @@ public class BluetoothGattCharacteristic {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeParcelable(new ParcelUuid(mUuid), 0);
|
||||
out.writeInt(mInstance);
|
||||
out.writeInt(mProperties);
|
||||
out.writeInt(mPermissions);
|
||||
out.writeTypedList(mDescriptors);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<BluetoothGattCharacteristic> CREATOR
|
||||
= new Parcelable.Creator<BluetoothGattCharacteristic>() {
|
||||
public BluetoothGattCharacteristic createFromParcel(Parcel in) {
|
||||
return new BluetoothGattCharacteristic(in);
|
||||
}
|
||||
|
||||
public BluetoothGattCharacteristic[] newArray(int size) {
|
||||
return new BluetoothGattCharacteristic[size];
|
||||
}
|
||||
};
|
||||
|
||||
private BluetoothGattCharacteristic(Parcel in) {
|
||||
mUuid = ((ParcelUuid)in.readParcelable(null)).getUuid();
|
||||
mInstance = in.readInt();
|
||||
mProperties = in.readInt();
|
||||
mPermissions = in.readInt();
|
||||
|
||||
mDescriptors = new ArrayList<BluetoothGattDescriptor>();
|
||||
|
||||
ArrayList<BluetoothGattDescriptor> descs =
|
||||
in.createTypedArrayList(BluetoothGattDescriptor.CREATOR);
|
||||
if (descs != null) {
|
||||
for (BluetoothGattDescriptor desc: descs) {
|
||||
desc.setCharacteristic(this);
|
||||
mDescriptors.add(desc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the deisred key size.
|
||||
* @hide
|
||||
|
||||
19
core/java/android/bluetooth/BluetoothGattDescriptor.aidl
Normal file
19
core/java/android/bluetooth/BluetoothGattDescriptor.aidl
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.bluetooth;
|
||||
|
||||
parcelable BluetoothGattDescriptor;
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package android.bluetooth;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.ParcelUuid;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@@ -25,7 +28,7 @@ import java.util.UUID;
|
||||
* characteristic, {@link BluetoothGattCharacteristic}. They can be used to describe
|
||||
* the characteristic's features or to control certain behaviours of the characteristic.
|
||||
*/
|
||||
public class BluetoothGattDescriptor {
|
||||
public class BluetoothGattDescriptor implements Parcelable {
|
||||
|
||||
/**
|
||||
* Value used to enable notification for a client configuration descriptor
|
||||
@@ -138,6 +141,13 @@ public class BluetoothGattDescriptor {
|
||||
initDescriptor(characteristic, uuid, instance, permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public BluetoothGattDescriptor(UUID uuid, int instance, int permissions) {
|
||||
initDescriptor(null, uuid, instance, permissions);
|
||||
}
|
||||
|
||||
private void initDescriptor(BluetoothGattCharacteristic characteristic, UUID uuid,
|
||||
int instance, int permissions) {
|
||||
mCharacteristic = characteristic;
|
||||
@@ -146,6 +156,36 @@ public class BluetoothGattDescriptor {
|
||||
mPermissions = permissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeParcelable(new ParcelUuid(mUuid), 0);
|
||||
out.writeInt(mInstance);
|
||||
out.writeInt(mPermissions);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<BluetoothGattDescriptor> CREATOR
|
||||
= new Parcelable.Creator<BluetoothGattDescriptor>() {
|
||||
public BluetoothGattDescriptor createFromParcel(Parcel in) {
|
||||
return new BluetoothGattDescriptor(in);
|
||||
}
|
||||
|
||||
public BluetoothGattDescriptor[] newArray(int size) {
|
||||
return new BluetoothGattDescriptor[size];
|
||||
}
|
||||
};
|
||||
|
||||
private BluetoothGattDescriptor(Parcel in) {
|
||||
mUuid = ((ParcelUuid)in.readParcelable(null)).getUuid();
|
||||
mInstance = in.readInt();
|
||||
mPermissions = in.readInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the characteristic this descriptor belongs to.
|
||||
* @return The characteristic.
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.bluetooth;
|
||||
|
||||
parcelable BluetoothGattIncludedService;
|
||||
110
core/java/android/bluetooth/BluetoothGattIncludedService.java
Normal file
110
core/java/android/bluetooth/BluetoothGattIncludedService.java
Normal file
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package android.bluetooth;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.ParcelUuid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Represents a Bluetooth GATT Included Service
|
||||
* @hide
|
||||
*/
|
||||
public class BluetoothGattIncludedService implements Parcelable {
|
||||
|
||||
/**
|
||||
* The UUID of this service.
|
||||
*/
|
||||
protected UUID mUuid;
|
||||
|
||||
/**
|
||||
* Instance ID for this service.
|
||||
*/
|
||||
protected int mInstanceId;
|
||||
|
||||
/**
|
||||
* Service type (Primary/Secondary).
|
||||
*/
|
||||
protected int mServiceType;
|
||||
|
||||
/**
|
||||
* Create a new BluetoothGattIncludedService
|
||||
*/
|
||||
public BluetoothGattIncludedService(UUID uuid, int instanceId, int serviceType) {
|
||||
mUuid = uuid;
|
||||
mInstanceId = instanceId;
|
||||
mServiceType = serviceType;
|
||||
}
|
||||
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeParcelable(new ParcelUuid(mUuid), 0);
|
||||
out.writeInt(mInstanceId);
|
||||
out.writeInt(mServiceType);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<BluetoothGattIncludedService> CREATOR
|
||||
= new Parcelable.Creator<BluetoothGattIncludedService>() {
|
||||
public BluetoothGattIncludedService createFromParcel(Parcel in) {
|
||||
return new BluetoothGattIncludedService(in);
|
||||
}
|
||||
|
||||
public BluetoothGattIncludedService[] newArray(int size) {
|
||||
return new BluetoothGattIncludedService[size];
|
||||
}
|
||||
};
|
||||
|
||||
private BluetoothGattIncludedService(Parcel in) {
|
||||
mUuid = ((ParcelUuid)in.readParcelable(null)).getUuid();
|
||||
mInstanceId = in.readInt();
|
||||
mServiceType = in.readInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the UUID of this service
|
||||
*
|
||||
* @return UUID of this service
|
||||
*/
|
||||
public UUID getUuid() {
|
||||
return mUuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the instance ID for this service
|
||||
*
|
||||
* <p>If a remote device offers multiple services with the same UUID
|
||||
* (ex. multiple battery services for different batteries), the instance
|
||||
* ID is used to distuinguish services.
|
||||
*
|
||||
* @return Instance ID of this service
|
||||
*/
|
||||
public int getInstanceId() {
|
||||
return mInstanceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of this service (primary/secondary)
|
||||
*/
|
||||
public int getType() {
|
||||
return mServiceType;
|
||||
}
|
||||
}
|
||||
19
core/java/android/bluetooth/BluetoothGattService.aidl
Normal file
19
core/java/android/bluetooth/BluetoothGattService.aidl
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.bluetooth;
|
||||
|
||||
parcelable BluetoothGattService;
|
||||
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package android.bluetooth;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.ParcelUuid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@@ -25,7 +28,7 @@ import java.util.UUID;
|
||||
* <p> Gatt Service contains a collection of {@link BluetoothGattCharacteristic},
|
||||
* as well as referenced services.
|
||||
*/
|
||||
public class BluetoothGattService {
|
||||
public class BluetoothGattService implements Parcelable {
|
||||
|
||||
/**
|
||||
* Primary service
|
||||
@@ -116,6 +119,81 @@ public class BluetoothGattService {
|
||||
mIncludedServices = new ArrayList<BluetoothGattService>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new BluetoothGattService
|
||||
* @hide
|
||||
*/
|
||||
public BluetoothGattService(UUID uuid, int instanceId, int serviceType) {
|
||||
mDevice = null;
|
||||
mUuid = uuid;
|
||||
mInstanceId = instanceId;
|
||||
mServiceType = serviceType;
|
||||
mCharacteristics = new ArrayList<BluetoothGattCharacteristic>();
|
||||
mIncludedServices = new ArrayList<BluetoothGattService>();
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeParcelable(new ParcelUuid(mUuid), 0);
|
||||
out.writeInt(mInstanceId);
|
||||
out.writeInt(mServiceType);
|
||||
out.writeTypedList(mCharacteristics);
|
||||
|
||||
ArrayList<BluetoothGattIncludedService> includedServices =
|
||||
new ArrayList<BluetoothGattIncludedService>(mIncludedServices.size());
|
||||
for(BluetoothGattService s : mIncludedServices) {
|
||||
includedServices.add(new BluetoothGattIncludedService(s.getUuid(),
|
||||
s.getInstanceId(), s.getType()));
|
||||
}
|
||||
out.writeTypedList(includedServices);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<BluetoothGattService> CREATOR
|
||||
= new Parcelable.Creator<BluetoothGattService>() {
|
||||
public BluetoothGattService createFromParcel(Parcel in) {
|
||||
return new BluetoothGattService(in);
|
||||
}
|
||||
|
||||
public BluetoothGattService[] newArray(int size) {
|
||||
return new BluetoothGattService[size];
|
||||
}
|
||||
};
|
||||
|
||||
private BluetoothGattService(Parcel in) {
|
||||
mUuid = ((ParcelUuid)in.readParcelable(null)).getUuid();
|
||||
mInstanceId = in.readInt();
|
||||
mServiceType = in.readInt();
|
||||
|
||||
mCharacteristics = new ArrayList<BluetoothGattCharacteristic>();
|
||||
|
||||
ArrayList<BluetoothGattCharacteristic> chrcs =
|
||||
in.createTypedArrayList(BluetoothGattCharacteristic.CREATOR);
|
||||
if (chrcs != null) {
|
||||
for (BluetoothGattCharacteristic chrc : chrcs) {
|
||||
chrc.setService(this);
|
||||
mCharacteristics.add(chrc);
|
||||
}
|
||||
}
|
||||
|
||||
mIncludedServices = new ArrayList<BluetoothGattService>();
|
||||
|
||||
ArrayList<BluetoothGattIncludedService> inclSvcs =
|
||||
in.createTypedArrayList(BluetoothGattIncludedService.CREATOR);
|
||||
if (chrcs != null) {
|
||||
for (BluetoothGattIncludedService isvc : inclSvcs) {
|
||||
mIncludedServices.add(new BluetoothGattService(null, isvc.getUuid(),
|
||||
isvc.getInstanceId(), isvc.getType()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the device associated with this service.
|
||||
* @hide
|
||||
@@ -124,6 +202,14 @@ public class BluetoothGattService {
|
||||
return mDevice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the device associated with this service.
|
||||
* @hide
|
||||
*/
|
||||
/*package*/ void setDevice(BluetoothDevice device) {
|
||||
this.mDevice = device;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an included service to this service.
|
||||
* <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
|
||||
@@ -192,7 +278,7 @@ public class BluetoothGattService {
|
||||
* Add an included service to the internal map.
|
||||
* @hide
|
||||
*/
|
||||
/*package*/ void addIncludedService(BluetoothGattService includedService) {
|
||||
public void addIncludedService(BluetoothGattService includedService) {
|
||||
mIncludedServices.add(includedService);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package android.bluetooth;
|
||||
|
||||
import android.os.ParcelUuid;
|
||||
import android.bluetooth.BluetoothGattService;
|
||||
import android.bluetooth.le.AdvertiseSettings;
|
||||
import android.bluetooth.le.ScanResult;
|
||||
|
||||
@@ -29,20 +30,7 @@ oneway interface IBluetoothGattCallback {
|
||||
in boolean connected, in String address);
|
||||
void onScanResult(in ScanResult scanResult);
|
||||
void onBatchScanResults(in List<ScanResult> batchResults);
|
||||
void onGetService(in String address, in int srvcType, in int srvcInstId,
|
||||
in ParcelUuid srvcUuid);
|
||||
void onGetIncludedService(in String address, in int srvcType, in int srvcInstId,
|
||||
in ParcelUuid srvcUuid, in int inclSrvcType,
|
||||
in int inclSrvcInstId, in ParcelUuid inclSrvcUuid);
|
||||
void onGetCharacteristic(in String address, in int srvcType,
|
||||
in int srvcInstId, in ParcelUuid srvcUuid,
|
||||
in int charInstId, in ParcelUuid charUuid,
|
||||
in int charProps);
|
||||
void onGetDescriptor(in String address, in int srvcType,
|
||||
in int srvcInstId, in ParcelUuid srvcUuid,
|
||||
in int charInstId, in ParcelUuid charUuid,
|
||||
in int descrInstId, in ParcelUuid descrUuid);
|
||||
void onSearchComplete(in String address, in int status);
|
||||
void onSearchComplete(in String address, in List<BluetoothGattService> services, in int status);
|
||||
void onCharacteristicRead(in String address, in int status, in int srvcType,
|
||||
in int srvcInstId, in ParcelUuid srvcUuid,
|
||||
in int charInstId, in ParcelUuid charUuid,
|
||||
|
||||
Reference in New Issue
Block a user