-
Notifications
You must be signed in to change notification settings - Fork 0
/
bricklet_dual_button.h
executable file
·278 lines (242 loc) · 8.1 KB
/
bricklet_dual_button.h
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
/* ***********************************************************
* This file was automatically generated on 2015-07-28. *
* *
* Bindings Version 2.1.7 *
* *
* If you have a bugfix for this file and want to commit it, *
* please fix the bug in the generator. You can find a link *
* to the generators git repository on tinkerforge.com *
*************************************************************/
#ifndef BRICKLET_DUAL_BUTTON_H
#define BRICKLET_DUAL_BUTTON_H
#include "ip_connection.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \defgroup BrickletDualButton Dual Button Bricklet
*/
/**
* \ingroup BrickletDualButton
*
* Two tactile buttons with built-in blue LEDs
*/
typedef Device DualButton;
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_FUNCTION_SET_LED_STATE 1
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_FUNCTION_GET_LED_STATE 2
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_FUNCTION_GET_BUTTON_STATE 3
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_FUNCTION_SET_SELECTED_LED_STATE 5
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_FUNCTION_GET_IDENTITY 255
/**
* \ingroup BrickletDualButton
*
* Signature: \code void callback(uint8_t button_l, uint8_t button_r, uint8_t led_l, uint8_t led_r, void *user_data) \endcode
*
* This callback is called whenever a button is pressed.
*
* Possible states for buttons are:
*
* * 0 = pressed
* * 1 = released
*
* Possible states for LEDs are:
*
* * 0 = AutoToggleOn: Auto toggle enabled and LED on.
* * 1 = AutoToggleOff: Auto toggle enabled and LED off.
* * 2 = On: LED on (auto toggle is disabled).
* * 3 = Off: LED off (auto toggle is disabled).
*/
#define DUAL_BUTTON_CALLBACK_STATE_CHANGED 4
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_STATE_AUTO_TOGGLE_ON 0
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_STATE_AUTO_TOGGLE_OFF 1
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_STATE_ON 2
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_STATE_OFF 3
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_BUTTON_STATE_PRESSED 0
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_BUTTON_STATE_RELEASED 1
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_LEFT 0
/**
* \ingroup BrickletDualButton
*/
#define DUAL_BUTTON_LED_RIGHT 1
/**
* \ingroup BrickletDualButton
*
* This constant is used to identify a Dual Button Bricklet.
*
* The {@link dual_button_get_identity} function and the
* {@link IPCON_CALLBACK_ENUMERATE} callback of the IP Connection have a
* \c device_identifier parameter to specify the Brick's or Bricklet's type.
*/
#define DUAL_BUTTON_DEVICE_IDENTIFIER 230
/**
* \ingroup BrickletDualButton
*
* This constant represents the display name of a Dual Button Bricklet.
*/
#define DUAL_BUTTON_DEVICE_DISPLAY_NAME "Dual Button Bricklet"
/**
* \ingroup BrickletDualButton
*
* Creates the device object \c dual_button with the unique device ID \c uid and adds
* it to the IPConnection \c ipcon.
*/
void dual_button_create(DualButton *dual_button, const char *uid, IPConnection *ipcon);
/**
* \ingroup BrickletDualButton
*
* Removes the device object \c dual_button from its IPConnection and destroys it.
* The device object cannot be used anymore afterwards.
*/
void dual_button_destroy(DualButton *dual_button);
/**
* \ingroup BrickletDualButton
*
* Returns the response expected flag for the function specified by the
* \c function_id parameter. It is *true* if the function is expected to
* send a response, *false* otherwise.
*
* For getter functions this is enabled by default and cannot be disabled,
* because those functions will always send a response. For callback
* configuration functions it is enabled by default too, but can be disabled
* via the dual_button_set_response_expected function. For setter functions it is
* disabled by default and can be enabled.
*
* Enabling the response expected flag for a setter function allows to
* detect timeouts and other error conditions calls of this setter as well.
* The device will then send a response for this purpose. If this flag is
* disabled for a setter function then no response is send and errors are
* silently ignored, because they cannot be detected.
*/
int dual_button_get_response_expected(DualButton *dual_button, uint8_t function_id, bool *ret_response_expected);
/**
* \ingroup BrickletDualButton
*
* Changes the response expected flag of the function specified by the
* \c function_id parameter. This flag can only be changed for setter
* (default value: *false*) and callback configuration functions
* (default value: *true*). For getter functions it is always enabled and
* callbacks it is always disabled.
*
* Enabling the response expected flag for a setter function allows to detect
* timeouts and other error conditions calls of this setter as well. The device
* will then send a response for this purpose. If this flag is disabled for a
* setter function then no response is send and errors are silently ignored,
* because they cannot be detected.
*/
int dual_button_set_response_expected(DualButton *dual_button, uint8_t function_id, bool response_expected);
/**
* \ingroup BrickletDualButton
*
* Changes the response expected flag for all setter and callback configuration
* functions of this device at once.
*/
int dual_button_set_response_expected_all(DualButton *dual_button, bool response_expected);
/**
* \ingroup BrickletDualButton
*
* Registers a callback with ID \c id to the function \c callback. The
* \c user_data will be given as a parameter of the callback.
*/
void dual_button_register_callback(DualButton *dual_button, uint8_t id, void *callback, void *user_data);
/**
* \ingroup BrickletDualButton
*
* Returns the API version (major, minor, release) of the bindings for this
* device.
*/
int dual_button_get_api_version(DualButton *dual_button, uint8_t ret_api_version[3]);
/**
* \ingroup BrickletDualButton
*
* Sets the state of the LEDs. Possible states are:
*
* * 0 = AutoToggleOn: Enables auto toggle with initially enabled LED.
* * 1 = AutoToggleOff: Activates auto toggle with initially disabled LED.
* * 2 = On: Enables LED (auto toggle is disabled).
* * 3 = Off: Disables LED (auto toggle is disabled).
*
* In auto toggle mode the LED is toggled automatically at each press of a button.
*
* If you just want to set one of the LEDs and don't know the current state
* of the other LED, you can get the state with {@link dual_button_get_led_state} or you
* can use {@link dual_button_set_selected_led_state}.
*
* The default value is (1, 1).
*/
int dual_button_set_led_state(DualButton *dual_button, uint8_t led_l, uint8_t led_r);
/**
* \ingroup BrickletDualButton
*
* Returns the current state of the LEDs, as set by {@link dual_button_set_led_state}.
*/
int dual_button_get_led_state(DualButton *dual_button, uint8_t *ret_led_l, uint8_t *ret_led_r);
/**
* \ingroup BrickletDualButton
*
* Returns the current state for both buttons. Possible states are:
*
* * 0 = pressed
* * 1 = released
*/
int dual_button_get_button_state(DualButton *dual_button, uint8_t *ret_button_l, uint8_t *ret_button_r);
/**
* \ingroup BrickletDualButton
*
* Sets the state of the selected LED (0 or 1).
*
* The other LED remains untouched.
*/
int dual_button_set_selected_led_state(DualButton *dual_button, uint8_t led, uint8_t state);
/**
* \ingroup BrickletDualButton
*
* Returns the UID, the UID where the Bricklet is connected to,
* the position, the hardware and firmware version as well as the
* device identifier.
*
* The position can be 'a', 'b', 'c' or 'd'.
*
* The device identifier numbers can be found :ref:`here <device_identifier>`.
* |device_identifier_constant|
*/
int dual_button_get_identity(DualButton *dual_button, char ret_uid[8], char ret_connected_uid[8], char *ret_position, uint8_t ret_hardware_version[3], uint8_t ret_firmware_version[3], uint16_t *ret_device_identifier);
#ifdef __cplusplus
}
#endif
#endif