package org.skylight1.hrm; import java.util.UUID; import android.bluetooth.BluetoothGattCharacteristic; public class BleProfiles { public final static UUID UUID_HEART_RATE_MEASUREMENT = UUID.fromString(BleCharacteristics.HEART_RATE_MEASUREMENT); public final static UUID UUID_MANUFACTURER_NAME = UUID.fromString(BleCharacteristics.MANUFACTURER_NAME_STRING); public final static UUID UUID_SOFTWARE_REVISION_STRING = UUID.fromString(BleCharacteristics.SOFTWARE_REVISION_STRING); public final static UUID UUID_DEVICE_NAME_STRING = UUID.fromString(BleCharacteristics.DEVICE_NAME); public final static UUID UUID_FIND_CENTRAL = UUID.fromString(BleCharacteristics.FIND_CENTRAL_CONFIG); public final static UUID UUID_ALERT_LEVEL = UUID.fromString(BleCharacteristics.ALERT_LEVEL); public static String CLIENT_CHARACTERISTIC_CONFIG = "00002902-0000-1000-8000-00805f9b34fb"; public static String processReadCharacteristic(BluetoothGattCharacteristic characteristic) { String result = ""; if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) { int flag = characteristic.getProperties(); int format = -1; if ((flag & 0x01) != 0) { format = BluetoothGattCharacteristic.FORMAT_UINT16; } else { format = BluetoothGattCharacteristic.FORMAT_UINT8; } final int heartRate = characteristic.getIntValue(format, 1); result = String.valueOf(heartRate); } else if(UUID_MANUFACTURER_NAME.equals(characteristic.getUuid()) || UUID_SOFTWARE_REVISION_STRING.equals(characteristic.getUuid()) || UUID_DEVICE_NAME_STRING.equals(characteristic.getUuid()) ) { result = new String(characteristic.getValue()); } return result; } public static BluetoothGattCharacteristic processWriteCharacteristic(BluetoothGattCharacteristic characteristic, byte value) { BluetoothGattCharacteristic writeCharacteristic = characteristic; if(UUID_ALERT_LEVEL.equals(writeCharacteristic.getUuid())) { byte[] values = { value }; writeCharacteristic.setValue(values); writeCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE); } else { writeCharacteristic = null; } return writeCharacteristic; } public static UUID getdescriptor(BluetoothGattCharacteristic characteristic) { UUID descriptor = null; if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid()) || UUID_FIND_CENTRAL.equals(characteristic.getUuid()) ) { descriptor = UUID.fromString(CLIENT_CHARACTERISTIC_CONFIG); } else if(UUID_ALERT_LEVEL.equals(characteristic.getUuid())) { descriptor = UUID.fromString(BleCharacteristics.ALERT_NOTIFICATION_CONTROL_POINT); } return descriptor; } }