1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/**
* Author: Sven Gothel <sgothel@jausoft.com>
* Copyright (c) 2020 Gothel Software e.K.
* Copyright (c) 2020 ZAFENA AB
*
* Author: Andrei Vasiliu <andrei.vasiliu@intel.com>
* 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();
}
|