summaryrefslogtreecommitdiffstats
path: root/java/org/tinyb/BluetoothGattCharacteristic.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2020-02-09 08:50:22 +0100
committerSven Gothel <[email protected]>2020-02-09 08:50:22 +0100
commit4f99bad3abcabb2c37ef6543ec5ed8467914cd53 (patch)
tree5848e3fdaa3ebc2acc6f6ca0abae517b0b6253a2 /java/org/tinyb/BluetoothGattCharacteristic.java
parent0c76e289ad011f1c616176a896da02e9b255275e (diff)
Java Refactory: Expose intefaces via org.tinyb.* and D-Bus implementation via tinyb.dbus.*
Allows alternative interface implementations and delegated wrapper implementations for debug and tracing. Original D-Bus implementation can be retrieved via: 'BluetoothManager org.tinyb.BluetoothFactory.getDBusBluetoothManager()' A HCI native implementation will follow up w/o use of D-Bus. Otherwise the Java API is unchanged and this tinyb can replace previous implementation. Due to the major API change (despite interface is unchanged but BluetoothManager instantiation) the jar file has been renamed from 'tinyb.jar' to 'tinyb2.jar'. Same goes with the version number, which will be set to 'v2.0.0'. The native library and class definition is kept unchanged using the original names so far.
Diffstat (limited to 'java/org/tinyb/BluetoothGattCharacteristic.java')
-rw-r--r--java/org/tinyb/BluetoothGattCharacteristic.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/java/org/tinyb/BluetoothGattCharacteristic.java b/java/org/tinyb/BluetoothGattCharacteristic.java
new file mode 100644
index 00000000..327fde69
--- /dev/null
+++ b/java/org/tinyb/BluetoothGattCharacteristic.java
@@ -0,0 +1,130 @@
+/**
+ * Author: Sven Gothel <[email protected]>
+ * Copyright (c) 2020 Gothel Software e.K.
+ * Copyright (c) 2020 ZAFENA AB
+ *
+ * Author: Andrei Vasiliu <[email protected]>
+ * Copyright (c) 2016 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+package org.tinyb;
+
+import java.util.List;
+
+/**
+ * Provides access to Bluetooth GATT characteristic. Follows the BlueZ adapter API
+ * available at: http://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt
+ */
+public interface BluetoothGattCharacteristic extends BluetoothObject
+{
+ @Override
+ public BluetoothGattCharacteristic clone();
+
+ /** Find a BluetoothGattDescriptor. If parameter UUID is not null,
+ * the returned object will have to match it.
+ * It will first check for existing objects. It will not turn on discovery
+ * or connect to devices.
+ * @parameter UUID optionally specify the UUID of the BluetoothGattDescriptor you are
+ * waiting for
+ * @parameter timeoutMS the function will return after timeout time in milliseconds, a
+ * value of zero means wait forever. If object is not found during this time null will be returned.
+ * @return An object matching the UUID or null if not found before
+ * timeout expires or event is canceled.
+ */
+ public BluetoothGattDescriptor find(final String UUID, final long timeoutMS);
+
+ /** Find a BluetoothGattDescriptor. If parameter UUID is not null,
+ * the returned object will have to match it.
+ * It will first check for existing objects. It will not turn on discovery
+ * or connect to devices.
+ * @parameter UUID optionally specify the UUID of the BluetoothGattDescriptor you are
+ * waiting for
+ * @return An object matching the UUID or null if not found before
+ * timeout expires or event is canceled.
+ */
+ public BluetoothGattDescriptor find(final String UUID);
+
+ /* D-Bus method calls: */
+
+ /** Reads the value of this characteristic.
+ * @return A std::vector<unsgined char> containing the value of this characteristic.
+ */
+ public byte[] readValue() throws BluetoothException;
+
+ /**
+ * Enables notifications for the value and calls run function of the BluetoothNotification
+ * object. It enables notifications for this characteristic at BLE level.
+ * @param callback A BluetoothNotification<byte[]> object. Its run function will be called
+ * when a notification is issued. The run function will deliver the new value of the value
+ * property.
+ */
+ public void enableValueNotifications(BluetoothNotification<byte[]> callback);
+
+ /**
+ * Disables notifications of the value and unregisters the callback object
+ * passed through the corresponding enable method. It disables notications
+ * at BLE level for this characteristic.
+ */
+ public void disableValueNotifications();
+
+ /** Writes the value of this characteristic.
+ * @param[in] arg_value The data as vector<uchar>
+ * to be written packed in a GBytes struct
+ * @return TRUE if value was written succesfully
+ */
+ public boolean writeValue(byte[] argValue) throws BluetoothException;
+
+
+ /* D-Bus property accessors: */
+
+ /** Get the UUID of this characteristic.
+ * @return The 128 byte UUID of this characteristic, NULL if an error occurred
+ */
+ public String getUUID();
+
+ /** Returns the service to which this characteristic belongs to.
+ * @return The service.
+ */
+ public BluetoothGattService getService();
+
+ /** Returns the cached value of this characteristic, if any.
+ * @return The cached value of this characteristic.
+ */
+ public byte[] getValue();
+
+ /** Returns true if notification for changes of this characteristic are
+ * activated.
+ * @return True if notificatios are activated.
+ */
+ public boolean getNotifying();
+
+ /** Returns the flags this characterstic has.
+ * @return A list of flags for this characteristic.
+ */
+ public String[] getFlags();
+
+ /** Returns a list of BluetoothGattDescriptors this characteristic exposes.
+ * @return A list of BluetoothGattDescriptors exposed by this characteristic
+ * NULL if an error occurred
+ */
+ public List<BluetoothGattDescriptor> getDescriptors();
+}