tinkerforge 2.1.22 → 2.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. checksums.yaml +5 -5
  2. data/lib/tinkerforge/brick_dc.rb +157 -76
  3. data/lib/tinkerforge/brick_hat.rb +115 -32
  4. data/lib/tinkerforge/brick_hat_zero.rb +119 -21
  5. data/lib/tinkerforge/brick_imu.rb +192 -87
  6. data/lib/tinkerforge/brick_imu_v2.rb +220 -119
  7. data/lib/tinkerforge/brick_master.rb +498 -198
  8. data/lib/tinkerforge/brick_red.rb +197 -74
  9. data/lib/tinkerforge/brick_servo.rb +187 -103
  10. data/lib/tinkerforge/brick_silent_stepper.rb +249 -169
  11. data/lib/tinkerforge/brick_stepper.rb +214 -102
  12. data/lib/tinkerforge/bricklet_accelerometer.rb +61 -36
  13. data/lib/tinkerforge/bricklet_accelerometer_v2.rb +167 -48
  14. data/lib/tinkerforge/bricklet_air_quality.rb +123 -76
  15. data/lib/tinkerforge/bricklet_ambient_light.rb +62 -46
  16. data/lib/tinkerforge/bricklet_ambient_light_v2.rb +41 -28
  17. data/lib/tinkerforge/bricklet_ambient_light_v3.rb +61 -28
  18. data/lib/tinkerforge/bricklet_analog_in.rb +66 -45
  19. data/lib/tinkerforge/bricklet_analog_in_v2.rb +60 -43
  20. data/lib/tinkerforge/bricklet_analog_in_v3.rb +68 -32
  21. data/lib/tinkerforge/bricklet_analog_out.rb +25 -16
  22. data/lib/tinkerforge/bricklet_analog_out_v2.rb +21 -10
  23. data/lib/tinkerforge/bricklet_analog_out_v3.rb +55 -22
  24. data/lib/tinkerforge/bricklet_barometer.rb +108 -58
  25. data/lib/tinkerforge/bricklet_barometer_v2.rb +109 -67
  26. data/lib/tinkerforge/bricklet_can.rb +84 -24
  27. data/lib/tinkerforge/bricklet_can_v2.rb +173 -72
  28. data/lib/tinkerforge/bricklet_co2.rb +36 -25
  29. data/lib/tinkerforge/bricklet_co2_v2.rb +119 -60
  30. data/lib/tinkerforge/bricklet_color.rb +77 -49
  31. data/lib/tinkerforge/bricklet_color_v2.rb +493 -0
  32. data/lib/tinkerforge/bricklet_compass.rb +397 -0
  33. data/lib/tinkerforge/bricklet_current12.rb +61 -40
  34. data/lib/tinkerforge/bricklet_current25.rb +61 -40
  35. data/lib/tinkerforge/bricklet_distance_ir.rb +60 -38
  36. data/lib/tinkerforge/bricklet_distance_ir_v2.rb +85 -45
  37. data/lib/tinkerforge/bricklet_distance_us.rb +43 -30
  38. data/lib/tinkerforge/bricklet_distance_us_v2.rb +335 -0
  39. data/lib/tinkerforge/bricklet_dmx.rb +92 -48
  40. data/lib/tinkerforge/bricklet_dual_button.rb +23 -12
  41. data/lib/tinkerforge/bricklet_dual_button_v2.rb +64 -29
  42. data/lib/tinkerforge/bricklet_dual_relay.rb +27 -14
  43. data/lib/tinkerforge/bricklet_dust_detector.rb +43 -30
  44. data/lib/tinkerforge/bricklet_e_paper_296x128.rb +115 -63
  45. data/lib/tinkerforge/bricklet_energy_monitor.rb +416 -0
  46. data/lib/tinkerforge/bricklet_gps.rb +72 -48
  47. data/lib/tinkerforge/bricklet_gps_v2.rb +124 -73
  48. data/lib/tinkerforge/bricklet_hall_effect.rb +43 -28
  49. data/lib/tinkerforge/bricklet_hall_effect_v2.rb +76 -44
  50. data/lib/tinkerforge/bricklet_humidity.rb +54 -38
  51. data/lib/tinkerforge/bricklet_humidity_v2.rb +86 -49
  52. data/lib/tinkerforge/bricklet_imu_v3.rb +784 -0
  53. data/lib/tinkerforge/bricklet_industrial_analog_out.rb +41 -18
  54. data/lib/tinkerforge/bricklet_industrial_analog_out_v2.rb +84 -40
  55. data/lib/tinkerforge/bricklet_industrial_counter.rb +102 -59
  56. data/lib/tinkerforge/bricklet_industrial_digital_in_4.rb +51 -24
  57. data/lib/tinkerforge/bricklet_industrial_digital_in_4_v2.rb +79 -40
  58. data/lib/tinkerforge/bricklet_industrial_digital_out_4.rb +36 -15
  59. data/lib/tinkerforge/bricklet_industrial_digital_out_4_v2.rb +75 -33
  60. data/lib/tinkerforge/bricklet_industrial_dual_0_20ma.rb +43 -29
  61. data/lib/tinkerforge/bricklet_industrial_dual_0_20ma_v2.rb +81 -44
  62. data/lib/tinkerforge/bricklet_industrial_dual_ac_relay.rb +325 -0
  63. data/lib/tinkerforge/bricklet_industrial_dual_analog_in.rb +51 -30
  64. data/lib/tinkerforge/bricklet_industrial_dual_analog_in_v2.rb +139 -40
  65. data/lib/tinkerforge/bricklet_industrial_dual_relay.rb +63 -28
  66. data/lib/tinkerforge/bricklet_industrial_quad_relay.rb +36 -15
  67. data/lib/tinkerforge/bricklet_industrial_quad_relay_v2.rb +67 -28
  68. data/lib/tinkerforge/bricklet_io16.rb +57 -32
  69. data/lib/tinkerforge/bricklet_io16_v2.rb +93 -48
  70. data/lib/tinkerforge/bricklet_io4.rb +56 -31
  71. data/lib/tinkerforge/bricklet_io4_v2.rb +109 -57
  72. data/lib/tinkerforge/bricklet_isolator.rb +111 -35
  73. data/lib/tinkerforge/bricklet_joystick.rb +63 -42
  74. data/lib/tinkerforge/bricklet_joystick_v2.rb +71 -35
  75. data/lib/tinkerforge/bricklet_laser_range_finder.rb +87 -59
  76. data/lib/tinkerforge/bricklet_laser_range_finder_v2.rb +101 -53
  77. data/lib/tinkerforge/bricklet_lcd_128x64.rb +241 -131
  78. data/lib/tinkerforge/bricklet_lcd_16x2.rb +49 -25
  79. data/lib/tinkerforge/bricklet_lcd_20x4.rb +59 -29
  80. data/lib/tinkerforge/bricklet_led_strip.rb +69 -47
  81. data/lib/tinkerforge/bricklet_led_strip_v2.rb +105 -48
  82. data/lib/tinkerforge/bricklet_line.rb +35 -22
  83. data/lib/tinkerforge/bricklet_linear_poti.rb +53 -35
  84. data/lib/tinkerforge/bricklet_linear_poti_v2.rb +55 -24
  85. data/lib/tinkerforge/bricklet_load_cell.rb +64 -40
  86. data/lib/tinkerforge/bricklet_load_cell_v2.rb +81 -41
  87. data/lib/tinkerforge/bricklet_moisture.rb +43 -30
  88. data/lib/tinkerforge/bricklet_motion_detector.rb +21 -10
  89. data/lib/tinkerforge/bricklet_motion_detector_v2.rb +62 -29
  90. data/lib/tinkerforge/bricklet_motorized_linear_poti.rb +71 -32
  91. data/lib/tinkerforge/bricklet_multi_touch.rb +30 -17
  92. data/lib/tinkerforge/bricklet_multi_touch_v2.rb +371 -0
  93. data/lib/tinkerforge/bricklet_nfc.rb +130 -80
  94. data/lib/tinkerforge/bricklet_nfc_rfid.rb +32 -13
  95. data/lib/tinkerforge/bricklet_oled_128x64.rb +30 -17
  96. data/lib/tinkerforge/bricklet_oled_128x64_v2.rb +97 -40
  97. data/lib/tinkerforge/bricklet_oled_64x48.rb +30 -17
  98. data/lib/tinkerforge/bricklet_one_wire.rb +65 -24
  99. data/lib/tinkerforge/bricklet_outdoor_weather.rb +84 -41
  100. data/lib/tinkerforge/bricklet_particulate_matter.rb +85 -37
  101. data/lib/tinkerforge/bricklet_piezo_buzzer.rb +19 -13
  102. data/lib/tinkerforge/bricklet_piezo_speaker.rb +22 -19
  103. data/lib/tinkerforge/bricklet_piezo_speaker_v2.rb +84 -57
  104. data/lib/tinkerforge/bricklet_ptc.rb +76 -51
  105. data/lib/tinkerforge/bricklet_ptc_v2.rb +96 -54
  106. data/lib/tinkerforge/bricklet_real_time_clock.rb +45 -36
  107. data/lib/tinkerforge/bricklet_real_time_clock_v2.rb +78 -47
  108. data/lib/tinkerforge/bricklet_remote_switch.rb +38 -29
  109. data/lib/tinkerforge/bricklet_remote_switch_v2.rb +86 -49
  110. data/lib/tinkerforge/bricklet_rgb_led.rb +17 -8
  111. data/lib/tinkerforge/bricklet_rgb_led_button.rb +61 -30
  112. data/lib/tinkerforge/bricklet_rgb_led_matrix.rb +78 -33
  113. data/lib/tinkerforge/bricklet_rgb_led_v2.rb +51 -20
  114. data/lib/tinkerforge/bricklet_rotary_encoder.rb +40 -25
  115. data/lib/tinkerforge/bricklet_rotary_encoder_v2.rb +60 -27
  116. data/lib/tinkerforge/bricklet_rotary_poti.rb +55 -37
  117. data/lib/tinkerforge/bricklet_rotary_poti_v2.rb +290 -0
  118. data/lib/tinkerforge/bricklet_rs232.rb +89 -28
  119. data/lib/tinkerforge/bricklet_rs232_v2.rb +121 -47
  120. data/lib/tinkerforge/bricklet_rs485.rb +303 -207
  121. data/lib/tinkerforge/bricklet_segment_display_4x7.rb +24 -14
  122. data/lib/tinkerforge/bricklet_segment_display_4x7_v2.rb +75 -36
  123. data/lib/tinkerforge/bricklet_solid_state_relay.rb +24 -13
  124. data/lib/tinkerforge/bricklet_solid_state_relay_v2.rb +58 -25
  125. data/lib/tinkerforge/bricklet_sound_intensity.rb +36 -24
  126. data/lib/tinkerforge/bricklet_sound_pressure_level.rb +77 -41
  127. data/lib/tinkerforge/bricklet_temperature.rb +43 -28
  128. data/lib/tinkerforge/bricklet_temperature_ir.rb +63 -47
  129. data/lib/tinkerforge/bricklet_temperature_ir_v2.rb +75 -53
  130. data/lib/tinkerforge/bricklet_temperature_v2.rb +62 -31
  131. data/lib/tinkerforge/bricklet_thermal_imaging.rb +118 -68
  132. data/lib/tinkerforge/bricklet_thermocouple.rb +46 -30
  133. data/lib/tinkerforge/bricklet_thermocouple_v2.rb +65 -30
  134. data/lib/tinkerforge/bricklet_tilt.rb +23 -10
  135. data/lib/tinkerforge/bricklet_uv_light.rb +37 -24
  136. data/lib/tinkerforge/bricklet_uv_light_v2.rb +87 -46
  137. data/lib/tinkerforge/bricklet_voltage.rb +54 -37
  138. data/lib/tinkerforge/bricklet_voltage_current.rb +94 -85
  139. data/lib/tinkerforge/bricklet_voltage_current_v2.rb +103 -77
  140. data/lib/tinkerforge/bricklet_xmc1400_breakout.rb +410 -0
  141. data/lib/tinkerforge/device_display_names.rb +165 -0
  142. data/lib/tinkerforge/ip_connection.rb +155 -33
  143. data/lib/tinkerforge/version.rb +1 -1
  144. metadata +14 -4
@@ -1,14 +1,16 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2019-05-21. #
3
+ # This file was automatically generated on 2020-11-02. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.22 #
5
+ # Ruby Bindings Version 2.1.27 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
9
9
  # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
+ require_relative './ip_connection'
13
+
12
14
  module Tinkerforge
13
15
  # 16-channel digital input/output
14
16
  class BrickletIO16 < Device
@@ -60,7 +62,7 @@ module Tinkerforge
60
62
  # Creates an object with the unique device ID <tt>uid</tt> and adds it to
61
63
  # the IP Connection <tt>ipcon</tt>.
62
64
  def initialize(uid, ipcon)
63
- super uid, ipcon
65
+ super uid, ipcon, DEVICE_IDENTIFIER, DEVICE_DISPLAY_NAME
64
66
 
65
67
  @api_version = [2, 0, 1]
66
68
 
@@ -80,9 +82,10 @@ module Tinkerforge
80
82
  @response_expected[FUNCTION_GET_EDGE_COUNT_CONFIG] = RESPONSE_EXPECTED_ALWAYS_TRUE
81
83
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
82
84
 
83
- @callback_formats[CALLBACK_INTERRUPT] = 'k C C'
84
- @callback_formats[CALLBACK_MONOFLOP_DONE] = 'k C C'
85
+ @callback_formats[CALLBACK_INTERRUPT] = [11, 'k C C']
86
+ @callback_formats[CALLBACK_MONOFLOP_DONE] = [11, 'k C C']
85
87
 
88
+ @ipcon.add_device self
86
89
  end
87
90
 
88
91
  # Sets the output value (high or low) for a port ("a" or "b") with a bitmask
@@ -98,14 +101,18 @@ module Tinkerforge
98
101
  # This function does nothing for pins that are configured as input.
99
102
  # Pull-up resistors can be switched on with BrickletIO16#set_port_configuration.
100
103
  def set_port(port, value_mask)
101
- send_request FUNCTION_SET_PORT, [port, value_mask], 'k C', 0, ''
104
+ check_validity
105
+
106
+ send_request FUNCTION_SET_PORT, [port, value_mask], 'k C', 8, ''
102
107
  end
103
108
 
104
109
  # Returns a bitmask of the values that are currently measured on the
105
110
  # specified port. This function works if the pin is configured to input
106
111
  # as well as if it is configured to output.
107
112
  def get_port(port)
108
- send_request FUNCTION_GET_PORT, [port], 'k', 1, 'C'
113
+ check_validity
114
+
115
+ send_request FUNCTION_GET_PORT, [port], 'k', 9, 'C'
109
116
  end
110
117
 
111
118
  # Configures the value and direction of a specified port. Possible directions
@@ -126,10 +133,10 @@ module Tinkerforge
126
133
  #
127
134
  # Running monoflop timers for the selected pins will be aborted if this
128
135
  # function is called.
129
- #
130
- # The default configuration is input with pull-up.
131
136
  def set_port_configuration(port, selection_mask, direction, value)
132
- send_request FUNCTION_SET_PORT_CONFIGURATION, [port, selection_mask, direction, value], 'k C k ?', 0, ''
137
+ check_validity
138
+
139
+ send_request FUNCTION_SET_PORT_CONFIGURATION, [port, selection_mask, direction, value], 'k C k ?', 8, ''
133
140
  end
134
141
 
135
142
  # Returns a direction bitmask and a value bitmask for the specified port. A 1 in
@@ -143,23 +150,27 @@ module Tinkerforge
143
150
  # * pins 4 and 5 are configured as output high
144
151
  # * and pins 6 and 7 are configured as output low.
145
152
  def get_port_configuration(port)
146
- send_request FUNCTION_GET_PORT_CONFIGURATION, [port], 'k', 2, 'C C'
153
+ check_validity
154
+
155
+ send_request FUNCTION_GET_PORT_CONFIGURATION, [port], 'k', 10, 'C C'
147
156
  end
148
157
 
149
- # Sets the debounce period of the CALLBACK_INTERRUPT callback in ms.
158
+ # Sets the debounce period of the CALLBACK_INTERRUPT callback.
150
159
  #
151
160
  # For example: If you set this value to 100, you will get the interrupt
152
161
  # maximal every 100ms. This is necessary if something that bounces is
153
162
  # connected to the IO-16 Bricklet, such as a button.
154
- #
155
- # The default value is 100.
156
163
  def set_debounce_period(debounce)
157
- send_request FUNCTION_SET_DEBOUNCE_PERIOD, [debounce], 'L', 0, ''
164
+ check_validity
165
+
166
+ send_request FUNCTION_SET_DEBOUNCE_PERIOD, [debounce], 'L', 8, ''
158
167
  end
159
168
 
160
169
  # Returns the debounce period as set by BrickletIO16#set_debounce_period.
161
170
  def get_debounce_period
162
- send_request FUNCTION_GET_DEBOUNCE_PERIOD, [], '', 4, 'L'
171
+ check_validity
172
+
173
+ send_request FUNCTION_GET_DEBOUNCE_PERIOD, [], '', 12, 'L'
163
174
  end
164
175
 
165
176
  # Sets the pins on which an interrupt is activated with a bitmask.
@@ -171,13 +182,17 @@ module Tinkerforge
171
182
  #
172
183
  # The interrupt is delivered with the CALLBACK_INTERRUPT callback.
173
184
  def set_port_interrupt(port, interrupt_mask)
174
- send_request FUNCTION_SET_PORT_INTERRUPT, [port, interrupt_mask], 'k C', 0, ''
185
+ check_validity
186
+
187
+ send_request FUNCTION_SET_PORT_INTERRUPT, [port, interrupt_mask], 'k C', 8, ''
175
188
  end
176
189
 
177
190
  # Returns the interrupt bitmask for the specified port as set by
178
191
  # BrickletIO16#set_port_interrupt.
179
192
  def get_port_interrupt(port)
180
- send_request FUNCTION_GET_PORT_INTERRUPT, [port], 'k', 1, 'C'
193
+ check_validity
194
+
195
+ send_request FUNCTION_GET_PORT_INTERRUPT, [port], 'k', 9, 'C'
181
196
  end
182
197
 
183
198
  # Configures a monoflop of the pins specified by the second parameter as 8 bit
@@ -187,7 +202,7 @@ module Tinkerforge
187
202
  # The third parameter is a bitmask with the desired value of the specified
188
203
  # output pins. A 1 in the bitmask means high and a 0 in the bitmask means low.
189
204
  #
190
- # The forth parameter indicates the time (in ms) that the pins should hold
205
+ # The forth parameter indicates the time that the pins should hold
191
206
  # the value.
192
207
  #
193
208
  # If this function is called with the parameters ('a', 9, 1, 1500) or
@@ -200,7 +215,9 @@ module Tinkerforge
200
215
  # of two seconds and pin 0 set to high. Pin 0 will be high all the time. If now
201
216
  # the RS485 connection is lost, then pin 0 will get low in at most two seconds.
202
217
  def set_port_monoflop(port, selection_mask, value_mask, time)
203
- send_request FUNCTION_SET_PORT_MONOFLOP, [port, selection_mask, value_mask, time], 'k C C L', 0, ''
218
+ check_validity
219
+
220
+ send_request FUNCTION_SET_PORT_MONOFLOP, [port, selection_mask, value_mask, time], 'k C C L', 8, ''
204
221
  end
205
222
 
206
223
  # Returns (for the given pin) the current value and the time as set by
@@ -209,7 +226,9 @@ module Tinkerforge
209
226
  # If the timer is not running currently, the remaining time will be returned
210
227
  # as 0.
211
228
  def get_port_monoflop(port, pin)
212
- send_request FUNCTION_GET_PORT_MONOFLOP, [port, pin], 'k C', 9, 'C L L'
229
+ check_validity
230
+
231
+ send_request FUNCTION_GET_PORT_MONOFLOP, [port, pin], 'k C', 17, 'C L L'
213
232
  end
214
233
 
215
234
  # Sets the output value (high or low) for a port ("a" or "b" with a bitmask,
@@ -226,7 +245,9 @@ module Tinkerforge
226
245
  # This function does nothing for pins that are configured as input.
227
246
  # Pull-up resistors can be switched on with BrickletIO16#set_port_configuration.
228
247
  def set_selected_values(port, selection_mask, value_mask)
229
- send_request FUNCTION_SET_SELECTED_VALUES, [port, selection_mask, value_mask], 'k C C', 0, ''
248
+ check_validity
249
+
250
+ send_request FUNCTION_SET_SELECTED_VALUES, [port, selection_mask, value_mask], 'k C C', 8, ''
230
251
  end
231
252
 
232
253
  # Returns the current value of the edge counter for the selected pin on port A.
@@ -237,7 +258,9 @@ module Tinkerforge
237
258
  #
238
259
  # .. versionadded:: 2.0.3$nbsp;(Plugin)
239
260
  def get_edge_count(pin, reset_counter)
240
- send_request FUNCTION_GET_EDGE_COUNT, [pin, reset_counter], 'C ?', 4, 'L'
261
+ check_validity
262
+
263
+ send_request FUNCTION_GET_EDGE_COUNT, [pin, reset_counter], 'C ?', 12, 'L'
241
264
  end
242
265
 
243
266
  # Configures the edge counter for the selected pin of port A. Pins 0 and 1
@@ -246,22 +269,20 @@ module Tinkerforge
246
269
  # The edge type parameter configures if rising edges, falling edges or
247
270
  # both are counted if the pin is configured for input. Possible edge types are:
248
271
  #
249
- # * 0 = rising (default)
272
+ # * 0 = rising
250
273
  # * 1 = falling
251
274
  # * 2 = both
252
275
  #
253
- # The debounce time is given in ms.
254
- #
255
276
  # Configuring an edge counter resets its value to 0.
256
277
  #
257
278
  # If you don't know what any of this means, just leave it at default. The
258
279
  # default configuration is very likely OK for you.
259
280
  #
260
- # Default values: 0 (edge type) and 100ms (debounce time)
261
- #
262
281
  # .. versionadded:: 2.0.3$nbsp;(Plugin)
263
282
  def set_edge_count_config(pin, edge_type, debounce)
264
- send_request FUNCTION_SET_EDGE_COUNT_CONFIG, [pin, edge_type, debounce], 'C C C', 0, ''
283
+ check_validity
284
+
285
+ send_request FUNCTION_SET_EDGE_COUNT_CONFIG, [pin, edge_type, debounce], 'C C C', 8, ''
265
286
  end
266
287
 
267
288
  # Returns the edge type and debounce time for the selected pin of port A as set by
@@ -269,19 +290,23 @@ module Tinkerforge
269
290
  #
270
291
  # .. versionadded:: 2.0.3$nbsp;(Plugin)
271
292
  def get_edge_count_config(pin)
272
- send_request FUNCTION_GET_EDGE_COUNT_CONFIG, [pin], 'C', 2, 'C C'
293
+ check_validity
294
+
295
+ send_request FUNCTION_GET_EDGE_COUNT_CONFIG, [pin], 'C', 10, 'C C'
273
296
  end
274
297
 
275
298
  # Returns the UID, the UID where the Bricklet is connected to,
276
299
  # the position, the hardware and firmware version as well as the
277
300
  # device identifier.
278
301
  #
279
- # The position can be 'a', 'b', 'c' or 'd'.
302
+ # The position can be 'a', 'b', 'c', 'd', 'e', 'f', 'g' or 'h' (Bricklet Port).
303
+ # A Bricklet connected to an :ref:`Isolator Bricklet <isolator_bricklet>` is always at
304
+ # position 'z'.
280
305
  #
281
306
  # The device identifier numbers can be found :ref:`here <device_identifier>`.
282
307
  # |device_identifier_constant|
283
308
  def get_identity
284
- send_request FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S'
309
+ send_request FUNCTION_GET_IDENTITY, [], '', 33, 'Z8 Z8 k C3 C3 S'
285
310
  end
286
311
 
287
312
  # Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.
@@ -1,14 +1,16 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
2
  #############################################################
3
- # This file was automatically generated on 2019-05-21. #
3
+ # This file was automatically generated on 2020-11-02. #
4
4
  # #
5
- # Ruby Bindings Version 2.1.22 #
5
+ # Ruby Bindings Version 2.1.27 #
6
6
  # #
7
7
  # If you have a bugfix for this file and want to commit it, #
8
8
  # please fix the bug in the generator. You can find a link #
9
9
  # to the generators git repository on tinkerforge.com #
10
10
  #############################################################
11
11
 
12
+ require_relative './ip_connection'
13
+
12
14
  module Tinkerforge
13
15
  # 16-channel digital input/output
14
16
  class BrickletIO16V2 < Device
@@ -87,7 +89,7 @@ module Tinkerforge
87
89
  # Creates an object with the unique device ID <tt>uid</tt> and adds it to
88
90
  # the IP Connection <tt>ipcon</tt>.
89
91
  def initialize(uid, ipcon)
90
- super uid, ipcon
92
+ super uid, ipcon, DEVICE_IDENTIFIER, DEVICE_DISPLAY_NAME
91
93
 
92
94
  @api_version = [2, 0, 0]
93
95
 
@@ -118,10 +120,11 @@ module Tinkerforge
118
120
  @response_expected[FUNCTION_READ_UID] = RESPONSE_EXPECTED_ALWAYS_TRUE
119
121
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
120
122
 
121
- @callback_formats[CALLBACK_INPUT_VALUE] = 'C ? ?'
122
- @callback_formats[CALLBACK_ALL_INPUT_VALUE] = '?16 ?16'
123
- @callback_formats[CALLBACK_MONOFLOP_DONE] = 'C ?'
123
+ @callback_formats[CALLBACK_INPUT_VALUE] = [11, 'C ? ?']
124
+ @callback_formats[CALLBACK_ALL_INPUT_VALUE] = [12, '?16 ?16']
125
+ @callback_formats[CALLBACK_MONOFLOP_DONE] = [10, 'C ?']
124
126
 
127
+ @ipcon.add_device self
125
128
  end
126
129
 
127
130
  # Sets the output value of all sixteen channels. A value of *true* or *false* outputs
@@ -138,14 +141,18 @@ module Tinkerforge
138
141
  # This function does nothing for channels that are configured as input. Pull-up
139
142
  # resistors can be switched on with BrickletIO16V2#set_configuration.
140
143
  def set_value(value)
141
- send_request FUNCTION_SET_VALUE, [value], '?16', 0, ''
144
+ check_validity
145
+
146
+ send_request FUNCTION_SET_VALUE, [value], '?16', 8, ''
142
147
  end
143
148
 
144
149
  # Returns the logic levels that are currently measured on the channels.
145
150
  # This function works if the channel is configured as input as well as if it is
146
151
  # configured as output.
147
152
  def get_value
148
- send_request FUNCTION_GET_VALUE, [], '', 16, '?16'
153
+ check_validity
154
+
155
+ send_request FUNCTION_GET_VALUE, [], '', 10, '?16'
149
156
  end
150
157
 
151
158
  # Sets the output value of a specific channel without affecting the other channels.
@@ -157,7 +164,9 @@ module Tinkerforge
157
164
  # This function does nothing for channels that are configured as input. Pull-up
158
165
  # resistors can be switched on with BrickletIO16V2#set_configuration.
159
166
  def set_selected_value(channel, value)
160
- send_request FUNCTION_SET_SELECTED_VALUE, [channel, value], 'C ?', 0, ''
167
+ check_validity
168
+
169
+ send_request FUNCTION_SET_SELECTED_VALUE, [channel, value], 'C ?', 8, ''
161
170
  end
162
171
 
163
172
  # Configures the value and direction of a specific channel. Possible directions
@@ -178,20 +187,22 @@ module Tinkerforge
178
187
  #
179
188
  # A running monoflop timer for the specific channel will be aborted if this
180
189
  # function is called.
181
- #
182
- # The default configuration is input with pull-up.
183
190
  def set_configuration(channel, direction, value)
184
- send_request FUNCTION_SET_CONFIGURATION, [channel, direction, value], 'C k ?', 0, ''
191
+ check_validity
192
+
193
+ send_request FUNCTION_SET_CONFIGURATION, [channel, direction, value], 'C k ?', 8, ''
185
194
  end
186
195
 
187
196
  # Returns the channel configuration as set by BrickletIO16V2#set_configuration.
188
197
  def get_configuration(channel)
189
- send_request FUNCTION_GET_CONFIGURATION, [channel], 'C', 2, 'k ?'
198
+ check_validity
199
+
200
+ send_request FUNCTION_GET_CONFIGURATION, [channel], 'C', 10, 'k ?'
190
201
  end
191
202
 
192
203
  # This callback can be configured per channel.
193
204
  #
194
- # The period in ms is the period with which the CALLBACK_INPUT_VALUE
205
+ # The period is the period with which the CALLBACK_INPUT_VALUE
195
206
  # callback is triggered periodically. A value of 0 turns the callback off.
196
207
  #
197
208
  # If the `value has to change`-parameter is set to true, the callback is only
@@ -200,19 +211,21 @@ module Tinkerforge
200
211
  #
201
212
  # If it is set to false, the callback is continuously triggered with the period,
202
213
  # independent of the value.
203
- #
204
- # The default value is (0, false).
205
214
  def set_input_value_callback_configuration(channel, period, value_has_to_change)
206
- send_request FUNCTION_SET_INPUT_VALUE_CALLBACK_CONFIGURATION, [channel, period, value_has_to_change], 'C L ?', 0, ''
215
+ check_validity
216
+
217
+ send_request FUNCTION_SET_INPUT_VALUE_CALLBACK_CONFIGURATION, [channel, period, value_has_to_change], 'C L ?', 8, ''
207
218
  end
208
219
 
209
220
  # Returns the callback configuration as set by
210
221
  # BrickletIO16V2#set_input_value_callback_configuration.
211
222
  def get_input_value_callback_configuration(channel)
212
- send_request FUNCTION_GET_INPUT_VALUE_CALLBACK_CONFIGURATION, [channel], 'C', 5, 'L ?'
223
+ check_validity
224
+
225
+ send_request FUNCTION_GET_INPUT_VALUE_CALLBACK_CONFIGURATION, [channel], 'C', 13, 'L ?'
213
226
  end
214
227
 
215
- # The period in ms is the period with which the CALLBACK_ALL_INPUT_VALUE
228
+ # The period is the period with which the CALLBACK_ALL_INPUT_VALUE
216
229
  # callback is triggered periodically. A value of 0 turns the callback off.
217
230
  #
218
231
  # If the `value has to change`-parameter is set to true, the callback is only
@@ -221,16 +234,18 @@ module Tinkerforge
221
234
  #
222
235
  # If it is set to false, the callback is continuously triggered with the period,
223
236
  # independent of the value.
224
- #
225
- # The default value is (0, false).
226
237
  def set_all_input_value_callback_configuration(period, value_has_to_change)
227
- send_request FUNCTION_SET_ALL_INPUT_VALUE_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 0, ''
238
+ check_validity
239
+
240
+ send_request FUNCTION_SET_ALL_INPUT_VALUE_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
228
241
  end
229
242
 
230
243
  # Returns the callback configuration as set by
231
244
  # BrickletIO16V2#set_all_input_value_callback_configuration.
232
245
  def get_all_input_value_callback_configuration
233
- send_request FUNCTION_GET_ALL_INPUT_VALUE_CALLBACK_CONFIGURATION, [], '', 5, 'L ?'
246
+ check_validity
247
+
248
+ send_request FUNCTION_GET_ALL_INPUT_VALUE_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
234
249
  end
235
250
 
236
251
  # Configures a monoflop of the specified channel.
@@ -238,7 +253,7 @@ module Tinkerforge
238
253
  # The second parameter is the desired value of the specified
239
254
  # channel. A *true* means relay closed and a *false* means relay open.
240
255
  #
241
- # The third parameter indicates the time (in ms) that the channels should hold
256
+ # The third parameter indicates the time that the channels should hold
242
257
  # the value.
243
258
  #
244
259
  # If this function is called with the parameters (0, 1, 1500) channel 0 will
@@ -251,7 +266,9 @@ module Tinkerforge
251
266
  # time. If now the RS485 connection is lost, then channel 0 will be opened in at
252
267
  # most two seconds.
253
268
  def set_monoflop(channel, value, time)
254
- send_request FUNCTION_SET_MONOFLOP, [channel, value, time], 'C ? L', 0, ''
269
+ check_validity
270
+
271
+ send_request FUNCTION_SET_MONOFLOP, [channel, value, time], 'C ? L', 8, ''
255
272
  end
256
273
 
257
274
  # Returns (for the given channel) the current value and the time as set by
@@ -260,7 +277,9 @@ module Tinkerforge
260
277
  # If the timer is not running currently, the remaining time will be returned
261
278
  # as 0.
262
279
  def get_monoflop(channel)
263
- send_request FUNCTION_GET_MONOFLOP, [channel], 'C', 9, '? L L'
280
+ check_validity
281
+
282
+ send_request FUNCTION_GET_MONOFLOP, [channel], 'C', 17, '? L L'
264
283
  end
265
284
 
266
285
  # Returns the current value of the edge counter for the selected channel. You can
@@ -269,7 +288,9 @@ module Tinkerforge
269
288
  # If you set the reset counter to *true*, the count is set back to 0
270
289
  # directly after it is read.
271
290
  def get_edge_count(channel, reset_counter)
272
- send_request FUNCTION_GET_EDGE_COUNT, [channel, reset_counter], 'C ?', 4, 'L'
291
+ check_validity
292
+
293
+ send_request FUNCTION_GET_EDGE_COUNT, [channel, reset_counter], 'C ?', 12, 'L'
273
294
  end
274
295
 
275
296
  # Configures the edge counter for a specific channel.
@@ -277,26 +298,26 @@ module Tinkerforge
277
298
  # The edge type parameter configures if rising edges, falling edges or
278
299
  # both are counted if the channel is configured for input. Possible edge types are:
279
300
  #
280
- # * 0 = rising (default)
301
+ # * 0 = rising
281
302
  # * 1 = falling
282
303
  # * 2 = both
283
304
  #
284
- # The debounce time is given in ms.
285
- #
286
305
  # Configuring an edge counter resets its value to 0.
287
306
  #
288
307
  # If you don't know what any of this means, just leave it at default. The
289
308
  # default configuration is very likely OK for you.
290
- #
291
- # Default values: 0 (edge type) and 100ms (debounce time)
292
309
  def set_edge_count_configuration(channel, edge_type, debounce)
293
- send_request FUNCTION_SET_EDGE_COUNT_CONFIGURATION, [channel, edge_type, debounce], 'C C C', 0, ''
310
+ check_validity
311
+
312
+ send_request FUNCTION_SET_EDGE_COUNT_CONFIGURATION, [channel, edge_type, debounce], 'C C C', 8, ''
294
313
  end
295
314
 
296
315
  # Returns the edge type and debounce time for the selected channel as set by
297
316
  # BrickletIO16V2#set_edge_count_configuration.
298
317
  def get_edge_count_configuration(channel)
299
- send_request FUNCTION_GET_EDGE_COUNT_CONFIGURATION, [channel], 'C', 2, 'C C'
318
+ check_validity
319
+
320
+ send_request FUNCTION_GET_EDGE_COUNT_CONFIGURATION, [channel], 'C', 10, 'C C'
300
321
  end
301
322
 
302
323
  # Returns the error count for the communication between Brick and Bricklet.
@@ -311,7 +332,9 @@ module Tinkerforge
311
332
  # The errors counts are for errors that occur on the Bricklet side. All
312
333
  # Bricks have a similar function that returns the errors on the Brick side.
313
334
  def get_spitfp_error_count
314
- send_request FUNCTION_GET_SPITFP_ERROR_COUNT, [], '', 16, 'L L L L'
335
+ check_validity
336
+
337
+ send_request FUNCTION_GET_SPITFP_ERROR_COUNT, [], '', 24, 'L L L L'
315
338
  end
316
339
 
317
340
  # Sets the bootloader mode and returns the status after the requested
@@ -324,12 +347,16 @@ module Tinkerforge
324
347
  # This function is used by Brick Viewer during flashing. It should not be
325
348
  # necessary to call it in a normal user program.
326
349
  def set_bootloader_mode(mode)
327
- send_request FUNCTION_SET_BOOTLOADER_MODE, [mode], 'C', 1, 'C'
350
+ check_validity
351
+
352
+ send_request FUNCTION_SET_BOOTLOADER_MODE, [mode], 'C', 9, 'C'
328
353
  end
329
354
 
330
355
  # Returns the current bootloader mode, see BrickletIO16V2#set_bootloader_mode.
331
356
  def get_bootloader_mode
332
- send_request FUNCTION_GET_BOOTLOADER_MODE, [], '', 1, 'C'
357
+ check_validity
358
+
359
+ send_request FUNCTION_GET_BOOTLOADER_MODE, [], '', 9, 'C'
333
360
  end
334
361
 
335
362
  # Sets the firmware pointer for BrickletIO16V2#write_firmware. The pointer has
@@ -339,7 +366,9 @@ module Tinkerforge
339
366
  # This function is used by Brick Viewer during flashing. It should not be
340
367
  # necessary to call it in a normal user program.
341
368
  def set_write_firmware_pointer(pointer)
342
- send_request FUNCTION_SET_WRITE_FIRMWARE_POINTER, [pointer], 'L', 0, ''
369
+ check_validity
370
+
371
+ send_request FUNCTION_SET_WRITE_FIRMWARE_POINTER, [pointer], 'L', 8, ''
343
372
  end
344
373
 
345
374
  # Writes 64 Bytes of firmware at the position as written by
@@ -351,7 +380,9 @@ module Tinkerforge
351
380
  # This function is used by Brick Viewer during flashing. It should not be
352
381
  # necessary to call it in a normal user program.
353
382
  def write_firmware(data)
354
- send_request FUNCTION_WRITE_FIRMWARE, [data], 'C64', 1, 'C'
383
+ check_validity
384
+
385
+ send_request FUNCTION_WRITE_FIRMWARE, [data], 'C64', 9, 'C'
355
386
  end
356
387
 
357
388
  # Sets the status LED configuration. By default the LED shows
@@ -362,22 +393,28 @@ module Tinkerforge
362
393
  #
363
394
  # If the Bricklet is in bootloader mode, the LED is will show heartbeat by default.
364
395
  def set_status_led_config(config)
365
- send_request FUNCTION_SET_STATUS_LED_CONFIG, [config], 'C', 0, ''
396
+ check_validity
397
+
398
+ send_request FUNCTION_SET_STATUS_LED_CONFIG, [config], 'C', 8, ''
366
399
  end
367
400
 
368
401
  # Returns the configuration as set by BrickletIO16V2#set_status_led_config
369
402
  def get_status_led_config
370
- send_request FUNCTION_GET_STATUS_LED_CONFIG, [], '', 1, 'C'
403
+ check_validity
404
+
405
+ send_request FUNCTION_GET_STATUS_LED_CONFIG, [], '', 9, 'C'
371
406
  end
372
407
 
373
- # Returns the temperature in °C as measured inside the microcontroller. The
408
+ # Returns the temperature as measured inside the microcontroller. The
374
409
  # value returned is not the ambient temperature!
375
410
  #
376
411
  # The temperature is only proportional to the real temperature and it has bad
377
412
  # accuracy. Practically it is only useful as an indicator for
378
413
  # temperature changes.
379
414
  def get_chip_temperature
380
- send_request FUNCTION_GET_CHIP_TEMPERATURE, [], '', 2, 's'
415
+ check_validity
416
+
417
+ send_request FUNCTION_GET_CHIP_TEMPERATURE, [], '', 10, 's'
381
418
  end
382
419
 
383
420
  # Calling this function will reset the Bricklet. All configurations
@@ -387,7 +424,9 @@ module Tinkerforge
387
424
  # calling functions on the existing ones will result in
388
425
  # undefined behavior!
389
426
  def reset
390
- send_request FUNCTION_RESET, [], '', 0, ''
427
+ check_validity
428
+
429
+ send_request FUNCTION_RESET, [], '', 8, ''
391
430
  end
392
431
 
393
432
  # Writes a new UID into flash. If you want to set a new UID
@@ -396,25 +435,31 @@ module Tinkerforge
396
435
  #
397
436
  # We recommend that you use Brick Viewer to change the UID.
398
437
  def write_uid(uid)
399
- send_request FUNCTION_WRITE_UID, [uid], 'L', 0, ''
438
+ check_validity
439
+
440
+ send_request FUNCTION_WRITE_UID, [uid], 'L', 8, ''
400
441
  end
401
442
 
402
443
  # Returns the current UID as an integer. Encode as
403
444
  # Base58 to get the usual string version.
404
445
  def read_uid
405
- send_request FUNCTION_READ_UID, [], '', 4, 'L'
446
+ check_validity
447
+
448
+ send_request FUNCTION_READ_UID, [], '', 12, 'L'
406
449
  end
407
450
 
408
451
  # Returns the UID, the UID where the Bricklet is connected to,
409
452
  # the position, the hardware and firmware version as well as the
410
453
  # device identifier.
411
454
  #
412
- # The position can be 'a', 'b', 'c' or 'd'.
455
+ # The position can be 'a', 'b', 'c', 'd', 'e', 'f', 'g' or 'h' (Bricklet Port).
456
+ # A Bricklet connected to an :ref:`Isolator Bricklet <isolator_bricklet>` is always at
457
+ # position 'z'.
413
458
  #
414
459
  # The device identifier numbers can be found :ref:`here <device_identifier>`.
415
460
  # |device_identifier_constant|
416
461
  def get_identity
417
- send_request FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S'
462
+ send_request FUNCTION_GET_IDENTITY, [], '', 33, 'Z8 Z8 k C3 C3 S'
418
463
  end
419
464
 
420
465
  # Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.