Java Code Examples for android.bluetooth.BluetoothGattCharacteristic#FORMAT_SINT32

The following examples show how to use android.bluetooth.BluetoothGattCharacteristic#FORMAT_SINT32 . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BluetoothLEGatt.java    From EFRConnect-android with Apache License 2.0 5 votes vote down vote up
private static Object getCharacteristicsValue(BluetoothGattCharacteristic gattCharacteristic) {
    if (gattCharacteristic.getValue() == null) {
        return null;
    }

    GattCharacteristic characteristic = GATT_CHARACTER_DESCS.get(getIdentification(gattCharacteristic.getUuid()));
    if (characteristic == null) {
        return gattCharacteristic.getValue();
    }

    final int format = characteristic.format;
    switch (format) {
        case BluetoothGattCharacteristic.FORMAT_UINT8:
        case BluetoothGattCharacteristic.FORMAT_UINT16:
        case BluetoothGattCharacteristic.FORMAT_UINT32:
        case BluetoothGattCharacteristic.FORMAT_SINT8:
        case BluetoothGattCharacteristic.FORMAT_SINT16:
        case BluetoothGattCharacteristic.FORMAT_SINT32:
            return gattCharacteristic.getIntValue(format, 0);

        case BluetoothGattCharacteristic.FORMAT_FLOAT:
        case BluetoothGattCharacteristic.FORMAT_SFLOAT:
            return gattCharacteristic.getFloatValue(format, 0);

        case 0:
            final String value = gattCharacteristic.getStringValue(0);
            final int firstNullCharPos = value.indexOf('\u0000');
            return (firstNullCharPos >= 0) ? value.substring(0, firstNullCharPos) : value;

        default:
            return characteristic.createValue(gattCharacteristic);
    }
}
 
Example 2
Source File: ParserUtils.java    From Android-nRF-Beacon-for-Eddystone with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public static int getIntValue(final byte[] source, final int offset, final int formatType) {
    if ((offset + getTypeLen(formatType)) > source.length)
        throw new ArrayIndexOutOfBoundsException();

    switch (formatType) {
        case BluetoothGattCharacteristic.FORMAT_UINT8:
            return unsignedByteToInt(source[offset]);

        case BluetoothGattCharacteristic.FORMAT_UINT16:
            return unsignedBytesToInt(source[offset], source[offset + 1]);

        case FORMAT_UINT24:
            return unsignedBytesToInt(source[offset], source[offset + 1], source[offset + 2]);

        case BluetoothGattCharacteristic.FORMAT_UINT32:
            return unsignedBytesToInt(source[offset], source[offset + 1], source[offset + 2], source[offset + 3]);

        case FORMAT_UINT16_BIG_INDIAN:
            return unsignedBytesToInt(source[offset + 1], source[offset]);

        case FORMAT_UINT32_BIG_INDIAN:
            return unsignedBytesToInt(source[offset + 3], source[offset + 2], source[offset + 1], source[offset]);

        case BluetoothGattCharacteristic.FORMAT_SINT8:
            return unsignedToSigned(unsignedByteToInt(source[offset]), 8);

        case BluetoothGattCharacteristic.FORMAT_SINT16:
            return unsignedToSigned(unsignedBytesToInt(source[offset], source[offset + 1]), 16);

        case FORMAT_SINT24:
            return unsignedToSigned(unsignedBytesToInt(source[offset], source[offset + 1], source[offset + 2]), 24);

        case BluetoothGattCharacteristic.FORMAT_SINT32:
            return unsignedToSigned(unsignedBytesToInt(source[offset], source[offset + 1], source[offset + 2], source[offset + 3]), 32);
    }
    return 0;
}
 
Example 3
Source File: ByteUtil.java    From EasyBle with Apache License 2.0 5 votes vote down vote up
/**
 * Return the stored value of this characteristic.
 *
 * <p>The formatType parameter determines how the characteristic value
 * is to be interpreted. For example, settting formatType to
 * {@link #FORMAT_UINT16} specifies that the first two bytes of the
 * characteristic value at the given offset are interpreted to generate the
 * return value.
 *
 * @param formatType The format type used to interpret the characteristic
 *                   value.
 * @param offset Offset at which the integer value can be found.
 * @return Cached value of the characteristic or null of offset exceeds
 *         value size.
 */
public static Integer getIntValue(byte[] data, int formatType, int offset) {
    if ((offset + getTypeLen(formatType)) > data.length) return null;

    switch (formatType) {
        case BluetoothGattCharacteristic.FORMAT_UINT8:
            return unsignedByteToInt(data[offset]);

        case BluetoothGattCharacteristic.FORMAT_UINT16:
            return unsignedBytesToInt(data[offset], data[offset+1]);

        case BluetoothGattCharacteristic.FORMAT_UINT32:
            return unsignedBytesToInt(data[offset],   data[offset+1],
                    data[offset+2], data[offset+3]);
        case BluetoothGattCharacteristic.FORMAT_SINT8:
            return unsignedToSigned(unsignedByteToInt(data[offset]), 8);

        case BluetoothGattCharacteristic.FORMAT_SINT16:
            return unsignedToSigned(unsignedBytesToInt(data[offset],
                    data[offset+1]), 16);

        case BluetoothGattCharacteristic.FORMAT_SINT32:
            return unsignedToSigned(unsignedBytesToInt(data[offset],
                    data[offset+1], data[offset+2], data[offset+3]), 32);
    }

    return null;
}
 
Example 4
Source File: CharacteristicDetailsActivity.java    From BLEService with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public int getValueFormat(BluetoothGattCharacteristic ch) {
	int properties = ch.getProperties();
	
	if((BluetoothGattCharacteristic.FORMAT_FLOAT & properties) != 0) return BluetoothGattCharacteristic.FORMAT_FLOAT;
	if((BluetoothGattCharacteristic.FORMAT_SFLOAT & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SFLOAT;
	if((BluetoothGattCharacteristic.FORMAT_SINT16 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT16;
	if((BluetoothGattCharacteristic.FORMAT_SINT32 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT32;
	if((BluetoothGattCharacteristic.FORMAT_SINT8 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT8;
	if((BluetoothGattCharacteristic.FORMAT_UINT16 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT16;
	if((BluetoothGattCharacteristic.FORMAT_UINT32 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT32;
	if((BluetoothGattCharacteristic.FORMAT_UINT8 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT8;
	
	return 0;
}
 
Example 5
Source File: BleWrapper.java    From BLEService with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public int getValueFormat(BluetoothGattCharacteristic ch) {
	int properties = ch.getProperties();
	
	if((BluetoothGattCharacteristic.FORMAT_FLOAT & properties) != 0) return BluetoothGattCharacteristic.FORMAT_FLOAT;
	if((BluetoothGattCharacteristic.FORMAT_SFLOAT & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SFLOAT;
	if((BluetoothGattCharacteristic.FORMAT_SINT16 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT16;
	if((BluetoothGattCharacteristic.FORMAT_SINT32 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT32;
	if((BluetoothGattCharacteristic.FORMAT_SINT8 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_SINT8;
	if((BluetoothGattCharacteristic.FORMAT_UINT16 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT16;
	if((BluetoothGattCharacteristic.FORMAT_UINT32 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT32;
	if((BluetoothGattCharacteristic.FORMAT_UINT8 & properties) != 0) return BluetoothGattCharacteristic.FORMAT_UINT8;
	
	return 0;
}
 
Example 6
Source File: ParserUtils.java    From Android-nRF-Beacon-for-Eddystone with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
public static int setValue(final byte[] dest, int offset, int value, int formatType) {
    int len = offset + getTypeLen(formatType);
    if (len > dest.length)
        return offset;

    switch (formatType) {
        case BluetoothGattCharacteristic.FORMAT_SINT8:
            value = intToSignedBits(value, 8);
            // Fall-through intended
        case BluetoothGattCharacteristic.FORMAT_UINT8:
            dest[offset] = (byte) (value & 0xFF);
            break;

        case BluetoothGattCharacteristic.FORMAT_SINT16:
            value = intToSignedBits(value, 16);
            // Fall-through intended
        case BluetoothGattCharacteristic.FORMAT_UINT16:
            dest[offset++] = (byte) (value & 0xFF);
            dest[offset] = (byte) ((value >> 8) & 0xFF);
            break;

        case FORMAT_SINT24:
            value = intToSignedBits(value, 24);
            // Fall-through intended
        case FORMAT_UINT24:
            dest[offset++] = (byte) (value & 0xFF);
            dest[offset++] = (byte) ((value >> 8) & 0xFF);
            dest[offset] = (byte) ((value >> 16) & 0xFF);
            break;

        case FORMAT_UINT16_BIG_INDIAN:
            dest[offset++] = (byte) ((value >> 8) & 0xFF);
            dest[offset] = (byte) (value & 0xFF);
            break;

        case BluetoothGattCharacteristic.FORMAT_SINT32:
            value = intToSignedBits(value, 32);
            // Fall-through intended
        case BluetoothGattCharacteristic.FORMAT_UINT32:
            dest[offset++] = (byte) (value & 0xFF);
            dest[offset++] = (byte) ((value >> 8) & 0xFF);
            dest[offset++] = (byte) ((value >> 16) & 0xFF);
            dest[offset] = (byte) ((value >> 24) & 0xFF);
            break;

        case FORMAT_UINT32_BIG_INDIAN:
            dest[offset++] = (byte) ((value >> 24) & 0xFF);
            dest[offset++] = (byte) ((value >> 16) & 0xFF);
            dest[offset++] = (byte) ((value >> 8) & 0xFF);
            dest[offset] = (byte) (value & 0xFF);
            break;

        default:
            return offset;
    }
    return len;
}