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
  # Silently drives one bipolar stepper motor with up to 46V and 1.6A per phase
14
16
  class BrickSilentStepper < Device
@@ -16,8 +18,7 @@ module Tinkerforge
16
18
  DEVICE_DISPLAY_NAME = 'Silent Stepper Brick' # :nodoc:
17
19
 
18
20
  # This callback is triggered when the input voltage drops below the value set by
19
- # BrickSilentStepper#set_minimum_voltage. The parameter is the current voltage given
20
- # in mV.
21
+ # BrickSilentStepper#set_minimum_voltage. The parameter is the current voltage.
21
22
  CALLBACK_UNDER_VOLTAGE = 40
22
23
 
23
24
  # This callback is triggered when a position set by BrickSilentStepper#set_steps or
@@ -95,6 +96,8 @@ module Tinkerforge
95
96
  FUNCTION_GET_PROTOCOL1_BRICKLET_NAME = 241 # :nodoc:
96
97
  FUNCTION_GET_CHIP_TEMPERATURE = 242 # :nodoc:
97
98
  FUNCTION_RESET = 243 # :nodoc:
99
+ FUNCTION_WRITE_BRICKLET_PLUGIN = 246 # :nodoc:
100
+ FUNCTION_READ_BRICKLET_PLUGIN = 247 # :nodoc:
98
101
  FUNCTION_GET_IDENTITY = 255 # :nodoc:
99
102
 
100
103
  STEP_RESOLUTION_1 = 8 # :nodoc:
@@ -153,7 +156,7 @@ module Tinkerforge
153
156
  # Creates an object with the unique device ID <tt>uid</tt> and adds it to
154
157
  # the IP Connection <tt>ipcon</tt>.
155
158
  def initialize(uid, ipcon)
156
- super uid, ipcon
159
+ super uid, ipcon, DEVICE_IDENTIFIER, DEVICE_DISPLAY_NAME
157
160
 
158
161
  @api_version = [2, 0, 1]
159
162
 
@@ -212,36 +215,45 @@ module Tinkerforge
212
215
  @response_expected[FUNCTION_GET_PROTOCOL1_BRICKLET_NAME] = RESPONSE_EXPECTED_ALWAYS_TRUE
213
216
  @response_expected[FUNCTION_GET_CHIP_TEMPERATURE] = RESPONSE_EXPECTED_ALWAYS_TRUE
214
217
  @response_expected[FUNCTION_RESET] = RESPONSE_EXPECTED_FALSE
218
+ @response_expected[FUNCTION_WRITE_BRICKLET_PLUGIN] = RESPONSE_EXPECTED_FALSE
219
+ @response_expected[FUNCTION_READ_BRICKLET_PLUGIN] = RESPONSE_EXPECTED_ALWAYS_TRUE
215
220
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
216
221
 
217
- @callback_formats[CALLBACK_UNDER_VOLTAGE] = 'S'
218
- @callback_formats[CALLBACK_POSITION_REACHED] = 'l'
219
- @callback_formats[CALLBACK_ALL_DATA] = 'S l l S S S'
220
- @callback_formats[CALLBACK_NEW_STATE] = 'C C'
222
+ @callback_formats[CALLBACK_UNDER_VOLTAGE] = [10, 'S']
223
+ @callback_formats[CALLBACK_POSITION_REACHED] = [12, 'l']
224
+ @callback_formats[CALLBACK_ALL_DATA] = [24, 'S l l S S S']
225
+ @callback_formats[CALLBACK_NEW_STATE] = [10, 'C C']
221
226
 
227
+ @ipcon.add_device self
222
228
  end
223
229
 
224
- # Sets the maximum velocity of the stepper motor in steps per second.
230
+ # Sets the maximum velocity of the stepper motor.
225
231
  # This function does *not* start the motor, it merely sets the maximum
226
232
  # velocity the stepper motor is accelerated to. To get the motor running use
227
233
  # either BrickSilentStepper#set_target_position, BrickSilentStepper#set_steps, BrickSilentStepper#drive_forward or
228
234
  # BrickSilentStepper#drive_backward.
229
235
  def set_max_velocity(velocity)
230
- send_request FUNCTION_SET_MAX_VELOCITY, [velocity], 'S', 0, ''
236
+ check_validity
237
+
238
+ send_request FUNCTION_SET_MAX_VELOCITY, [velocity], 'S', 8, ''
231
239
  end
232
240
 
233
241
  # Returns the velocity as set by BrickSilentStepper#set_max_velocity.
234
242
  def get_max_velocity
235
- send_request FUNCTION_GET_MAX_VELOCITY, [], '', 2, 'S'
243
+ check_validity
244
+
245
+ send_request FUNCTION_GET_MAX_VELOCITY, [], '', 10, 'S'
236
246
  end
237
247
 
238
- # Returns the *current* velocity of the stepper motor in steps per second.
248
+ # Returns the *current* velocity of the stepper motor.
239
249
  def get_current_velocity
240
- send_request FUNCTION_GET_CURRENT_VELOCITY, [], '', 2, 'S'
250
+ check_validity
251
+
252
+ send_request FUNCTION_GET_CURRENT_VELOCITY, [], '', 10, 'S'
241
253
  end
242
254
 
243
- # Sets the acceleration and deacceleration of the stepper motor. The values
244
- # are given in *steps/s²*. An acceleration of 1000 means, that
255
+ # Sets the acceleration and deacceleration of the stepper motor.
256
+ # An acceleration of 1000 means, that
245
257
  # every second the velocity is increased by 1000 *steps/s*.
246
258
  #
247
259
  # For example: If the current velocity is 0 and you want to accelerate to a
@@ -250,16 +262,18 @@ module Tinkerforge
250
262
  #
251
263
  # An acceleration/deacceleration of 0 means instantaneous
252
264
  # acceleration/deacceleration (not recommended)
253
- #
254
- # The default value is 1000 for both
255
265
  def set_speed_ramping(acceleration, deacceleration)
256
- send_request FUNCTION_SET_SPEED_RAMPING, [acceleration, deacceleration], 'S S', 0, ''
266
+ check_validity
267
+
268
+ send_request FUNCTION_SET_SPEED_RAMPING, [acceleration, deacceleration], 'S S', 8, ''
257
269
  end
258
270
 
259
271
  # Returns the acceleration and deacceleration as set by
260
272
  # BrickSilentStepper#set_speed_ramping.
261
273
  def get_speed_ramping
262
- send_request FUNCTION_GET_SPEED_RAMPING, [], '', 4, 'S S'
274
+ check_validity
275
+
276
+ send_request FUNCTION_GET_SPEED_RAMPING, [], '', 12, 'S S'
263
277
  end
264
278
 
265
279
  # Executes an active full brake.
@@ -271,14 +285,18 @@ module Tinkerforge
271
285
  #
272
286
  # Call BrickSilentStepper#stop if you just want to stop the motor.
273
287
  def full_brake
274
- send_request FUNCTION_FULL_BRAKE, [], '', 0, ''
288
+ check_validity
289
+
290
+ send_request FUNCTION_FULL_BRAKE, [], '', 8, ''
275
291
  end
276
292
 
277
293
  # Sets the current steps of the internal step counter. This can be used to
278
294
  # set the current position to 0 when some kind of starting position
279
295
  # is reached (e.g. when a CNC machine reaches a corner).
280
296
  def set_current_position(position)
281
- send_request FUNCTION_SET_CURRENT_POSITION, [position], 'l', 0, ''
297
+ check_validity
298
+
299
+ send_request FUNCTION_SET_CURRENT_POSITION, [position], 'l', 8, ''
282
300
  end
283
301
 
284
302
  # Returns the current position of the stepper motor in steps. On startup
@@ -287,7 +305,9 @@ module Tinkerforge
287
305
  # BrickSilentStepper#drive_backward). It also is possible to reset the steps to 0 or
288
306
  # set them to any other desired value with BrickSilentStepper#set_current_position.
289
307
  def get_current_position
290
- send_request FUNCTION_GET_CURRENT_POSITION, [], '', 4, 'l'
308
+ check_validity
309
+
310
+ send_request FUNCTION_GET_CURRENT_POSITION, [], '', 12, 'l'
291
311
  end
292
312
 
293
313
  # Sets the target position of the stepper motor in steps. For example,
@@ -300,12 +320,16 @@ module Tinkerforge
300
320
  # a call of BrickSilentStepper#set_steps with the parameter
301
321
  # (*x* - BrickSilentStepper#get_current_position).
302
322
  def set_target_position(position)
303
- send_request FUNCTION_SET_TARGET_POSITION, [position], 'l', 0, ''
323
+ check_validity
324
+
325
+ send_request FUNCTION_SET_TARGET_POSITION, [position], 'l', 8, ''
304
326
  end
305
327
 
306
328
  # Returns the last target position as set by BrickSilentStepper#set_target_position.
307
329
  def get_target_position
308
- send_request FUNCTION_GET_TARGET_POSITION, [], '', 4, 'l'
330
+ check_validity
331
+
332
+ send_request FUNCTION_GET_TARGET_POSITION, [], '', 12, 'l'
309
333
  end
310
334
 
311
335
  # Sets the number of steps the stepper motor should run. Positive values
@@ -313,12 +337,16 @@ module Tinkerforge
313
337
  # The velocity, acceleration and deacceleration as set by
314
338
  # BrickSilentStepper#set_max_velocity and BrickSilentStepper#set_speed_ramping will be used.
315
339
  def set_steps(steps)
316
- send_request FUNCTION_SET_STEPS, [steps], 'l', 0, ''
340
+ check_validity
341
+
342
+ send_request FUNCTION_SET_STEPS, [steps], 'l', 8, ''
317
343
  end
318
344
 
319
345
  # Returns the last steps as set by BrickSilentStepper#set_steps.
320
346
  def get_steps
321
- send_request FUNCTION_GET_STEPS, [], '', 4, 'l'
347
+ check_validity
348
+
349
+ send_request FUNCTION_GET_STEPS, [], '', 12, 'l'
322
350
  end
323
351
 
324
352
  # Returns the remaining steps of the last call of BrickSilentStepper#set_steps.
@@ -326,7 +354,9 @@ module Tinkerforge
326
354
  # BrickSilentStepper#get_remaining_steps is called after the motor has run for 500 steps,
327
355
  # it will return 1500.
328
356
  def get_remaining_steps
329
- send_request FUNCTION_GET_REMAINING_STEPS, [], '', 4, 'l'
357
+ check_validity
358
+
359
+ send_request FUNCTION_GET_REMAINING_STEPS, [], '', 12, 'l'
330
360
  end
331
361
 
332
362
  # Sets the step resolution from full-step up to 1/256-step.
@@ -340,45 +370,55 @@ module Tinkerforge
340
370
  #
341
371
  # If you often change the speed with high acceleration you should turn the
342
372
  # interpolation off.
343
- #
344
- # The default is 1/256-step with interpolation on.
345
373
  def set_step_configuration(step_resolution, interpolation)
346
- send_request FUNCTION_SET_STEP_CONFIGURATION, [step_resolution, interpolation], 'C ?', 0, ''
374
+ check_validity
375
+
376
+ send_request FUNCTION_SET_STEP_CONFIGURATION, [step_resolution, interpolation], 'C ?', 8, ''
347
377
  end
348
378
 
349
379
  # Returns the step mode as set by BrickSilentStepper#set_step_configuration.
350
380
  def get_step_configuration
351
- send_request FUNCTION_GET_STEP_CONFIGURATION, [], '', 2, 'C ?'
381
+ check_validity
382
+
383
+ send_request FUNCTION_GET_STEP_CONFIGURATION, [], '', 10, 'C ?'
352
384
  end
353
385
 
354
386
  # Drives the stepper motor forward until BrickSilentStepper#drive_backward or
355
387
  # BrickSilentStepper#stop is called. The velocity, acceleration and deacceleration as
356
388
  # set by BrickSilentStepper#set_max_velocity and BrickSilentStepper#set_speed_ramping will be used.
357
389
  def drive_forward
358
- send_request FUNCTION_DRIVE_FORWARD, [], '', 0, ''
390
+ check_validity
391
+
392
+ send_request FUNCTION_DRIVE_FORWARD, [], '', 8, ''
359
393
  end
360
394
 
361
395
  # Drives the stepper motor backward until BrickSilentStepper#drive_forward or
362
396
  # BrickSilentStepper#stop is triggered. The velocity, acceleration and deacceleration as
363
397
  # set by BrickSilentStepper#set_max_velocity and BrickSilentStepper#set_speed_ramping will be used.
364
398
  def drive_backward
365
- send_request FUNCTION_DRIVE_BACKWARD, [], '', 0, ''
399
+ check_validity
400
+
401
+ send_request FUNCTION_DRIVE_BACKWARD, [], '', 8, ''
366
402
  end
367
403
 
368
404
  # Stops the stepper motor with the deacceleration as set by
369
405
  # BrickSilentStepper#set_speed_ramping.
370
406
  def stop
371
- send_request FUNCTION_STOP, [], '', 0, ''
407
+ check_validity
408
+
409
+ send_request FUNCTION_STOP, [], '', 8, ''
372
410
  end
373
411
 
374
- # Returns the stack input voltage in mV. The stack input voltage is the
412
+ # Returns the stack input voltage. The stack input voltage is the
375
413
  # voltage that is supplied via the stack, i.e. it is given by a
376
414
  # Step-Down or Step-Up Power Supply.
377
415
  def get_stack_input_voltage
378
- send_request FUNCTION_GET_STACK_INPUT_VOLTAGE, [], '', 2, 'S'
416
+ check_validity
417
+
418
+ send_request FUNCTION_GET_STACK_INPUT_VOLTAGE, [], '', 10, 'S'
379
419
  end
380
420
 
381
- # Returns the external input voltage in mV. The external input voltage is
421
+ # Returns the external input voltage. The external input voltage is
382
422
  # given via the black power input connector on the Silent Stepper Brick.
383
423
  #
384
424
  # If there is an external input voltage and a stack input voltage, the motor
@@ -391,40 +431,58 @@ module Tinkerforge
391
431
  # the external connection, it will immediately be driven by the high
392
432
  # stack voltage
393
433
  def get_external_input_voltage
394
- send_request FUNCTION_GET_EXTERNAL_INPUT_VOLTAGE, [], '', 2, 'S'
434
+ check_validity
435
+
436
+ send_request FUNCTION_GET_EXTERNAL_INPUT_VOLTAGE, [], '', 10, 'S'
395
437
  end
396
438
 
397
- # Sets the current in mA with which the motor will be driven.
398
- # The minimum value is 360mA, the maximum value 1640mA and the
399
- # default value is 800mA.
439
+ # Sets the current with which the motor will be driven.
400
440
  #
401
441
  # .. warning::
402
442
  # Do not set this value above the specifications of your stepper motor.
403
443
  # Otherwise it may damage your motor.
404
444
  def set_motor_current(current)
405
- send_request FUNCTION_SET_MOTOR_CURRENT, [current], 'S', 0, ''
445
+ check_validity
446
+
447
+ send_request FUNCTION_SET_MOTOR_CURRENT, [current], 'S', 8, ''
406
448
  end
407
449
 
408
450
  # Returns the current as set by BrickSilentStepper#set_motor_current.
409
451
  def get_motor_current
410
- send_request FUNCTION_GET_MOTOR_CURRENT, [], '', 2, 'S'
452
+ check_validity
453
+
454
+ send_request FUNCTION_GET_MOTOR_CURRENT, [], '', 10, 'S'
411
455
  end
412
456
 
413
457
  # Enables the driver chip. The driver parameters can be configured (maximum velocity,
414
458
  # acceleration, etc) before it is enabled.
415
459
  def enable
416
- send_request FUNCTION_ENABLE, [], '', 0, ''
460
+ check_validity
461
+
462
+ send_request FUNCTION_ENABLE, [], '', 8, ''
417
463
  end
418
464
 
419
465
  # Disables the driver chip. The configurations are kept (maximum velocity,
420
466
  # acceleration, etc) but the motor is not driven until it is enabled again.
467
+ #
468
+ # .. warning::
469
+ # Disabling the driver chip while the motor is still turning can damage the
470
+ # driver chip. The motor should be stopped calling BrickSilentStepper#stop function
471
+ # before disabling the motor power. The BrickSilentStepper#stop function will **not**
472
+ # wait until the motor is actually stopped. You have to explicitly wait for the
473
+ # appropriate time after calling the BrickSilentStepper#stop function before calling
474
+ # the BrickSilentStepper#disable function.
421
475
  def disable
422
- send_request FUNCTION_DISABLE, [], '', 0, ''
476
+ check_validity
477
+
478
+ send_request FUNCTION_DISABLE, [], '', 8, ''
423
479
  end
424
480
 
425
481
  # Returns *true* if the driver chip is enabled, *false* otherwise.
426
482
  def is_enabled
427
- send_request FUNCTION_IS_ENABLED, [], '', 1, '?'
483
+ check_validity
484
+
485
+ send_request FUNCTION_IS_ENABLED, [], '', 9, '?'
428
486
  end
429
487
 
430
488
  # Sets the basic configuration parameters for the different modes (Stealth, Coolstep, Classic).
@@ -434,12 +492,12 @@ module Tinkerforge
434
492
  # the configured motor phase current will be driven until the configured
435
493
  # Power Down Time is elapsed. After that the phase current will be reduced to the standstill
436
494
  # current. The elapsed time for this reduction can be configured with the Standstill Delay Time.
437
- # The unit is in mA and the maximum allowed value is the configured maximum motor current
495
+ # The maximum allowed value is the configured maximum motor current
438
496
  # (see BrickSilentStepper#set_motor_current).
439
497
  #
440
498
  # * Motor Run Current: The value sets the motor current when the motor is running.
441
499
  # Use a value of at least one half of the global maximum motor current for a good
442
- # microstep performance. The unit is in mA and the maximum allowed value is the current
500
+ # microstep performance. The maximum allowed value is the current
443
501
  # motor current. The API maps the entered value to 1/32 ... 32/32 of the maximum
444
502
  # motor current. This value should be used to change the motor current during motor movement,
445
503
  # whereas the global maximum motor current should not be changed while the motor is moving
@@ -448,44 +506,35 @@ module Tinkerforge
448
506
  # * Standstill Delay Time: Controls the duration for motor power down after a motion
449
507
  # as soon as standstill is detected and the Power Down Time is expired. A high Standstill Delay
450
508
  # Time results in a smooth transition that avoids motor jerk during power down.
451
- # The value range is 0 to 307ms
452
509
  #
453
510
  # * Power Down Time: Sets the delay time after a stand still.
454
- # The value range is 0 to 5222ms.
455
511
  #
456
- # * Stealth Threshold: Sets the upper threshold for Stealth mode in steps/s. The value range is
457
- # 0-65536 steps/s. If the velocity of the motor goes above this value, Stealth mode is turned
512
+ # * Stealth Threshold: Sets the upper threshold for Stealth mode.
513
+ # If the velocity of the motor goes above this value, Stealth mode is turned
458
514
  # off. Otherwise it is turned on. In Stealth mode the torque declines with high speed.
459
515
  #
460
- # * Coolstep Threshold: Sets the lower threshold for Coolstep mode in steps/s. The value range is
461
- # 0-65536 steps/s. The Coolstep Threshold needs to be above the Stealth Threshold.
516
+ # * Coolstep Threshold: Sets the lower threshold for Coolstep mode.
517
+ # The Coolstep Threshold needs to be above the Stealth Threshold.
462
518
  #
463
- # * Classic Threshold: Sets the lower threshold for classic mode. The value range is
464
- # 0-65536 steps/s. In classic mode the stepper becomes more noisy, but the torque is maximized.
519
+ # * Classic Threshold: Sets the lower threshold for classic mode.
520
+ # In classic mode the stepper becomes more noisy, but the torque is maximized.
465
521
  #
466
- # * High Velocity Shopper Mode: If High Velocity Shopper Mode is enabled, the stepper control
522
+ # * High Velocity Chopper Mode: If High Velocity Chopper Mode is enabled, the stepper control
467
523
  # is optimized to run the stepper motors at high velocities.
468
524
  #
469
525
  # If you want to use all three thresholds make sure that
470
526
  # Stealth Threshold < Coolstep Threshold < Classic Threshold.
471
- #
472
- # The default values are:
473
- #
474
- # * Standstill Current: 200
475
- # * Motor Run Current: 800
476
- # * Standstill Delay Time: 0
477
- # * Power Down Time: 1000
478
- # * Stealth Threshold: 500
479
- # * Coolstep Threshold: 500
480
- # * Classic Threshold: 1000
481
- # * High Velocity Shopper Mode: false
482
527
  def set_basic_configuration(standstill_current, motor_run_current, standstill_delay_time, power_down_time, stealth_threshold, coolstep_threshold, classic_threshold, high_velocity_chopper_mode)
483
- send_request FUNCTION_SET_BASIC_CONFIGURATION, [standstill_current, motor_run_current, standstill_delay_time, power_down_time, stealth_threshold, coolstep_threshold, classic_threshold, high_velocity_chopper_mode], 'S S S S S S S ?', 0, ''
528
+ check_validity
529
+
530
+ send_request FUNCTION_SET_BASIC_CONFIGURATION, [standstill_current, motor_run_current, standstill_delay_time, power_down_time, stealth_threshold, coolstep_threshold, classic_threshold, high_velocity_chopper_mode], 'S S S S S S S ?', 8, ''
484
531
  end
485
532
 
486
533
  # Returns the configuration as set by BrickSilentStepper#set_basic_configuration.
487
534
  def get_basic_configuration
488
- send_request FUNCTION_GET_BASIC_CONFIGURATION, [], '', 15, 'S S S S S S S ?'
535
+ check_validity
536
+
537
+ send_request FUNCTION_GET_BASIC_CONFIGURATION, [], '', 23, 'S S S S S S S ?'
489
538
  end
490
539
 
491
540
  # Note: If you don't know what any of this means you can very likely keep all of
@@ -495,22 +544,22 @@ module Tinkerforge
495
544
  # controls the motor current flow. More information can be found in the TMC2130 datasheet on page
496
545
  # 47 (7 spreadCycle and Classic Chopper).
497
546
  #
498
- # * Slow Decay Duration: Controls duration of off time setting of slow decay phase. The value
499
- # range is 0-15. 0 = driver disabled, all bridges off. Use 1 only with Comparator Blank time >= 2.
547
+ # * Slow Decay Duration: Controls duration of off time setting of slow decay phase.
548
+ # 0 = driver disabled, all bridges off. Use 1 only with Comparator Blank time >= 2.
500
549
  #
501
550
  # * Enable Random Slow Decay: Set to false to fix chopper off time as set by Slow Decay Duration.
502
551
  # If you set it to true, Decay Duration is randomly modulated.
503
552
  #
504
- # * Fast Decay Duration: Sets the fast decay duration. The value range is 0-15. This parameters is
553
+ # * Fast Decay Duration: Sets the fast decay duration. This parameters is
505
554
  # only used if the Chopper Mode is set to Fast Decay.
506
555
  #
507
- # * Hysteresis Start Value: Sets the hysteresis start value. The value range is 0-7. This parameter is
556
+ # * Hysteresis Start Value: Sets the hysteresis start value. This parameter is
508
557
  # only used if the Chopper Mode is set to Spread Cycle.
509
558
  #
510
- # * Hysteresis End Value: Sets the hysteresis end value. The value range is -3 to 12. This parameter is
559
+ # * Hysteresis End Value: Sets the hysteresis end value. This parameter is
511
560
  # only used if the Chopper Mode is set to Spread Cycle.
512
561
  #
513
- # * Sine Wave Offset: Sets the sine wave offset. The value range is -3 to 12. This parameters is
562
+ # * Sine Wave Offset: Sets the sine wave offset. This parameters is
514
563
  # only used if the Chopper Mode is set to Fast Decay. 1/512 of the value becomes added to the absolute
515
564
  # value of the sine wave.
516
565
  #
@@ -527,25 +576,17 @@ module Tinkerforge
527
576
  #
528
577
  # * Fast Decay Without Comparator: If set to true the current comparator usage for termination of the
529
578
  # fast decay cycle is disabled.
530
- #
531
- # The default values are:
532
- #
533
- # * Slow Decay Duration: 4
534
- # * Enable Random Slow Decay: 0
535
- # * Fast Decay Duration: 0
536
- # * Hysteresis Start Value: 0
537
- # * Hysteresis End Value: 0
538
- # * Sine Wave Offset: 0
539
- # * Chopper Mode: 0
540
- # * Comparator Blank Time: 1
541
- # * Fast Decay Without Comparator: false
542
579
  def set_spreadcycle_configuration(slow_decay_duration, enable_random_slow_decay, fast_decay_duration, hysteresis_start_value, hysteresis_end_value, sine_wave_offset, chopper_mode, comparator_blank_time, fast_decay_without_comparator)
543
- send_request FUNCTION_SET_SPREADCYCLE_CONFIGURATION, [slow_decay_duration, enable_random_slow_decay, fast_decay_duration, hysteresis_start_value, hysteresis_end_value, sine_wave_offset, chopper_mode, comparator_blank_time, fast_decay_without_comparator], 'C ? C C c c C C ?', 0, ''
580
+ check_validity
581
+
582
+ send_request FUNCTION_SET_SPREADCYCLE_CONFIGURATION, [slow_decay_duration, enable_random_slow_decay, fast_decay_duration, hysteresis_start_value, hysteresis_end_value, sine_wave_offset, chopper_mode, comparator_blank_time, fast_decay_without_comparator], 'C ? C C c c C C ?', 8, ''
544
583
  end
545
584
 
546
585
  # Returns the configuration as set by BrickSilentStepper#set_basic_configuration.
547
586
  def get_spreadcycle_configuration
548
- send_request FUNCTION_GET_SPREADCYCLE_CONFIGURATION, [], '', 9, 'C ? C C c c C C ?'
587
+ check_validity
588
+
589
+ send_request FUNCTION_GET_SPREADCYCLE_CONFIGURATION, [], '', 17, 'C ? C C c c C C ?'
549
590
  end
550
591
 
551
592
  # Note: If you don't know what any of this means you can very likely keep all of
@@ -557,11 +598,11 @@ module Tinkerforge
557
598
  # stealth mode is disabled, even if the speed is below the threshold set in BrickSilentStepper#set_basic_configuration.
558
599
  #
559
600
  # * Amplitude: If autoscale is disabled, the PWM amplitude is scaled by this value. If autoscale is enabled,
560
- # this value defines the maximum PWM amplitude change per half wave. The value range is 0-255.
601
+ # this value defines the maximum PWM amplitude change per half wave.
561
602
  #
562
603
  # * Gradient: If autoscale is disabled, the PWM gradient is scaled by this value. If autoscale is enabled,
563
604
  # this value defines the maximum PWM gradient. With autoscale a value above 64 is recommended,
564
- # otherwise the regulation might not be able to measure the current. The value range is 0-255.
605
+ # otherwise the regulation might not be able to measure the current.
565
606
  #
566
607
  # * Enable Autoscale: If set to true, automatic current control is used. Otherwise the user defined
567
608
  # amplitude and gradient are used.
@@ -571,22 +612,17 @@ module Tinkerforge
571
612
  #
572
613
  # * Freewheel Mode: The freewheel mode defines the behavior in stand still if the Standstill Current
573
614
  # (see BrickSilentStepper#set_basic_configuration) is set to 0.
574
- #
575
- # The default values are:
576
- #
577
- # * Enable Stealth: true
578
- # * Amplitude: 128
579
- # * Gradient: 4
580
- # * Enable Autoscale: true
581
- # * Force Symmetric: false
582
- # * Freewheel Mode: 0 (Normal)
583
615
  def set_stealth_configuration(enable_stealth, amplitude, gradient, enable_autoscale, force_symmetric, freewheel_mode)
584
- send_request FUNCTION_SET_STEALTH_CONFIGURATION, [enable_stealth, amplitude, gradient, enable_autoscale, force_symmetric, freewheel_mode], '? C C ? ? C', 0, ''
616
+ check_validity
617
+
618
+ send_request FUNCTION_SET_STEALTH_CONFIGURATION, [enable_stealth, amplitude, gradient, enable_autoscale, force_symmetric, freewheel_mode], '? C C ? ? C', 8, ''
585
619
  end
586
620
 
587
621
  # Returns the configuration as set by BrickSilentStepper#set_stealth_configuration.
588
622
  def get_stealth_configuration
589
- send_request FUNCTION_GET_STEALTH_CONFIGURATION, [], '', 6, '? C C ? ? C'
623
+ check_validity
624
+
625
+ send_request FUNCTION_GET_STEALTH_CONFIGURATION, [], '', 14, '? C C ? ? C'
590
626
  end
591
627
 
592
628
  # Note: If you don't know what any of this means you can very likely keep all of
@@ -595,7 +631,7 @@ module Tinkerforge
595
631
  # Sets the configuration relevant for Coolstep.
596
632
  #
597
633
  # * Minimum Stallguard Value: If the Stallguard result falls below this value*32, the motor current
598
- # is increased to reduce motor load angle. The value range is 0-15. A value of 0 turns Coolstep off.
634
+ # is increased to reduce motor load angle. A value of 0 turns Coolstep off.
599
635
  #
600
636
  # * Maximum Stallguard Value: If the Stallguard result goes above
601
637
  # (Min Stallguard Value + Max Stallguard Value + 1) * 32, the motor current is decreased to save
@@ -610,29 +646,23 @@ module Tinkerforge
610
646
  # * Minimum Current: Sets the minimum current for Coolstep current control. You can choose between
611
647
  # half and quarter of the run current.
612
648
  #
613
- # * Stallguard Threshold Value: Sets the level for stall output (see BrickSilentStepper#get_driver_status). The value
614
- # range is -64 to +63. A lower value gives a higher sensitivity. You have to find a suitable value for your
649
+ # * Stallguard Threshold Value: Sets the level for stall output (see BrickSilentStepper#get_driver_status).
650
+ # A lower value gives a higher sensitivity. You have to find a suitable value for your
615
651
  # motor by trial and error, 0 works for most motors.
616
652
  #
617
653
  # * Stallguard Mode: Set to 0 for standard resolution or 1 for filtered mode. In filtered mode the Stallguard
618
654
  # signal will be updated every four full-steps.
619
- #
620
- # The default values are:
621
- #
622
- # * Minimum Stallguard Value: 2
623
- # * Maximum Stallguard Value: 10
624
- # * Current Up Step Width: 0
625
- # * Current Down Step Width: 0
626
- # * Minimum Current: 0
627
- # * Stallguard Threshold Value: 0
628
- # * Stallguard Mode: 0
629
655
  def set_coolstep_configuration(minimum_stallguard_value, maximum_stallguard_value, current_up_step_width, current_down_step_width, minimum_current, stallguard_threshold_value, stallguard_mode)
630
- send_request FUNCTION_SET_COOLSTEP_CONFIGURATION, [minimum_stallguard_value, maximum_stallguard_value, current_up_step_width, current_down_step_width, minimum_current, stallguard_threshold_value, stallguard_mode], 'C C C C C c C', 0, ''
656
+ check_validity
657
+
658
+ send_request FUNCTION_SET_COOLSTEP_CONFIGURATION, [minimum_stallguard_value, maximum_stallguard_value, current_up_step_width, current_down_step_width, minimum_current, stallguard_threshold_value, stallguard_mode], 'C C C C C c C', 8, ''
631
659
  end
632
660
 
633
661
  # Returns the configuration as set by BrickSilentStepper#set_coolstep_configuration.
634
662
  def get_coolstep_configuration
635
- send_request FUNCTION_GET_COOLSTEP_CONFIGURATION, [], '', 7, 'C C C C C c C'
663
+ check_validity
664
+
665
+ send_request FUNCTION_GET_COOLSTEP_CONFIGURATION, [], '', 15, 'C C C C C c C'
636
666
  end
637
667
 
638
668
  # Note: If you don't know what any of this means you can very likely keep all of
@@ -648,18 +678,17 @@ module Tinkerforge
648
678
  # the synchronization is turned off. Otherwise the synchronization is done through the formula
649
679
  # f_sync = f_clk/(value*64). In Classic Mode the synchronization is automatically switched off.
650
680
  # f_clk is 12.8MHz.
651
- #
652
- # The default values are:
653
- #
654
- # * Disable Short To Ground Protection: 0
655
- # * Synchronize Phase Frequency: 0
656
681
  def set_misc_configuration(disable_short_to_ground_protection, synchronize_phase_frequency)
657
- send_request FUNCTION_SET_MISC_CONFIGURATION, [disable_short_to_ground_protection, synchronize_phase_frequency], '? C', 0, ''
682
+ check_validity
683
+
684
+ send_request FUNCTION_SET_MISC_CONFIGURATION, [disable_short_to_ground_protection, synchronize_phase_frequency], '? C', 8, ''
658
685
  end
659
686
 
660
687
  # Returns the configuration as set by BrickSilentStepper#set_misc_configuration.
661
688
  def get_misc_configuration
662
- send_request FUNCTION_GET_MISC_CONFIGURATION, [], '', 2, '? C'
689
+ check_validity
690
+
691
+ send_request FUNCTION_GET_MISC_CONFIGURATION, [], '', 10, '? C'
663
692
  end
664
693
 
665
694
  # Returns the current driver status.
@@ -677,7 +706,7 @@ module Tinkerforge
677
706
  # * Motor Stalled: Is true if a motor stall was detected.
678
707
  #
679
708
  # * Actual Motor Current: Indicates the actual current control scaling as used in Coolstep mode.
680
- # The returned value is between 0 and 31. It represents a multiplier of 1/32 to 32/32 of the
709
+ # It represents a multiplier of 1/32 to 32/32 of the
681
710
  # ``Motor Run Current`` as set by BrickSilentStepper#set_basic_configuration. Example: If a ``Motor Run Current``
682
711
  # of 1000mA was set and the returned value is 15, the ``Actual Motor Current`` is 16/32*1000mA = 500mA.
683
712
  #
@@ -690,41 +719,47 @@ module Tinkerforge
690
719
  # * Stealth Voltage Amplitude: Shows the actual PWM scaling. In Stealth mode it can be used to detect motor load and
691
720
  # stall if autoscale is enabled (see BrickSilentStepper#set_stealth_configuration).
692
721
  def get_driver_status
693
- send_request FUNCTION_GET_DRIVER_STATUS, [], '', 8, 'C C C ? C ? C C'
722
+ check_validity
723
+
724
+ send_request FUNCTION_GET_DRIVER_STATUS, [], '', 16, 'C C C ? C ? C C'
694
725
  end
695
726
 
696
- # Sets the minimum voltage in mV, below which the CALLBACK_UNDER_VOLTAGE callback
727
+ # Sets the minimum voltage, below which the CALLBACK_UNDER_VOLTAGE callback
697
728
  # is triggered. The minimum possible value that works with the Silent Stepper
698
729
  # Brick is 8V.
699
730
  # You can use this function to detect the discharge of a battery that is used
700
731
  # to drive the stepper motor. If you have a fixed power supply, you likely do
701
732
  # not need this functionality.
702
- #
703
- # The default value is 8V.
704
733
  def set_minimum_voltage(voltage)
705
- send_request FUNCTION_SET_MINIMUM_VOLTAGE, [voltage], 'S', 0, ''
734
+ check_validity
735
+
736
+ send_request FUNCTION_SET_MINIMUM_VOLTAGE, [voltage], 'S', 8, ''
706
737
  end
707
738
 
708
739
  # Returns the minimum voltage as set by BrickSilentStepper#set_minimum_voltage.
709
740
  def get_minimum_voltage
710
- send_request FUNCTION_GET_MINIMUM_VOLTAGE, [], '', 2, 'S'
741
+ check_validity
742
+
743
+ send_request FUNCTION_GET_MINIMUM_VOLTAGE, [], '', 10, 'S'
711
744
  end
712
745
 
713
746
  # Sets the time base of the velocity and the acceleration of the Silent Stepper
714
- # Brick (in seconds).
747
+ # Brick.
715
748
  #
716
749
  # For example, if you want to make one step every 1.5 seconds, you can set
717
750
  # the time base to 15 and the velocity to 10. Now the velocity is
718
751
  # 10steps/15s = 1steps/1.5s.
719
- #
720
- # The default value is 1.
721
752
  def set_time_base(time_base)
722
- send_request FUNCTION_SET_TIME_BASE, [time_base], 'L', 0, ''
753
+ check_validity
754
+
755
+ send_request FUNCTION_SET_TIME_BASE, [time_base], 'L', 8, ''
723
756
  end
724
757
 
725
758
  # Returns the time base as set by BrickSilentStepper#set_time_base.
726
759
  def get_time_base
727
- send_request FUNCTION_GET_TIME_BASE, [], '', 4, 'L'
760
+ check_validity
761
+
762
+ send_request FUNCTION_GET_TIME_BASE, [], '', 12, 'L'
728
763
  end
729
764
 
730
765
  # Returns the following parameters: The current velocity,
@@ -741,26 +776,32 @@ module Tinkerforge
741
776
  #
742
777
  # There is also a callback for this function, see CALLBACK_ALL_DATA callback.
743
778
  def get_all_data
744
- send_request FUNCTION_GET_ALL_DATA, [], '', 16, 'S l l S S S'
779
+ check_validity
780
+
781
+ send_request FUNCTION_GET_ALL_DATA, [], '', 24, 'S l l S S S'
745
782
  end
746
783
 
747
- # Sets the period in ms with which the CALLBACK_ALL_DATA callback is triggered
784
+ # Sets the period with which the CALLBACK_ALL_DATA callback is triggered
748
785
  # periodically. A value of 0 turns the callback off.
749
786
  def set_all_data_period(period)
750
- send_request FUNCTION_SET_ALL_DATA_PERIOD, [period], 'L', 0, ''
787
+ check_validity
788
+
789
+ send_request FUNCTION_SET_ALL_DATA_PERIOD, [period], 'L', 8, ''
751
790
  end
752
791
 
753
792
  # Returns the period as set by BrickSilentStepper#set_all_data_period.
754
793
  def get_all_data_period
755
- send_request FUNCTION_GET_ALL_DATA_PERIOD, [], '', 4, 'L'
794
+ check_validity
795
+
796
+ send_request FUNCTION_GET_ALL_DATA_PERIOD, [], '', 12, 'L'
756
797
  end
757
798
 
758
799
  # The SPITF protocol can be used with a dynamic baudrate. If the dynamic baudrate is
759
800
  # enabled, the Brick will try to adapt the baudrate for the communication
760
801
  # between Bricks and Bricklets according to the amount of data that is transferred.
761
802
  #
762
- # The baudrate will be increased exponentially if lots of data is send/received and
763
- # decreased linearly if little data is send/received.
803
+ # The baudrate will be increased exponentially if lots of data is sent/received and
804
+ # decreased linearly if little data is sent/received.
764
805
  #
765
806
  # This lowers the baudrate in applications where little data is transferred (e.g.
766
807
  # a weather station) and increases the robustness. If there is lots of data to transfer
@@ -774,20 +815,20 @@ module Tinkerforge
774
815
  # BrickSilentStepper#set_spitfp_baudrate. If the dynamic baudrate is disabled, the baudrate
775
816
  # as set by BrickSilentStepper#set_spitfp_baudrate will be used statically.
776
817
  #
777
- # The minimum dynamic baudrate has a value range of 400000 to 2000000 baud.
778
- #
779
- # By default dynamic baudrate is enabled and the minimum dynamic baudrate is 400000.
780
- #
781
818
  # .. versionadded:: 2.0.4$nbsp;(Firmware)
782
819
  def set_spitfp_baudrate_config(enable_dynamic_baudrate, minimum_dynamic_baudrate)
783
- send_request FUNCTION_SET_SPITFP_BAUDRATE_CONFIG, [enable_dynamic_baudrate, minimum_dynamic_baudrate], '? L', 0, ''
820
+ check_validity
821
+
822
+ send_request FUNCTION_SET_SPITFP_BAUDRATE_CONFIG, [enable_dynamic_baudrate, minimum_dynamic_baudrate], '? L', 8, ''
784
823
  end
785
824
 
786
825
  # Returns the baudrate config, see BrickSilentStepper#set_spitfp_baudrate_config.
787
826
  #
788
827
  # .. versionadded:: 2.0.4$nbsp;(Firmware)
789
828
  def get_spitfp_baudrate_config
790
- send_request FUNCTION_GET_SPITFP_BAUDRATE_CONFIG, [], '', 5, '? L'
829
+ check_validity
830
+
831
+ send_request FUNCTION_GET_SPITFP_BAUDRATE_CONFIG, [], '', 13, '? L'
791
832
  end
792
833
 
793
834
  # Returns the timeout count for the different communication methods.
@@ -797,11 +838,12 @@ module Tinkerforge
797
838
  # This function is mostly used for debugging during development, in normal operation
798
839
  # the counters should nearly always stay at 0.
799
840
  def get_send_timeout_count(communication_method)
800
- send_request FUNCTION_GET_SEND_TIMEOUT_COUNT, [communication_method], 'C', 4, 'L'
841
+ check_validity
842
+
843
+ send_request FUNCTION_GET_SEND_TIMEOUT_COUNT, [communication_method], 'C', 12, 'L'
801
844
  end
802
845
 
803
- # Sets the baudrate for a specific Bricklet port ('a' - 'd'). The
804
- # baudrate can be in the range 400000 to 2000000.
846
+ # Sets the baudrate for a specific Bricklet port.
805
847
  #
806
848
  # If you want to increase the throughput of Bricklets you can increase
807
849
  # the baudrate. If you get a high error count because of high
@@ -812,17 +854,19 @@ module Tinkerforge
812
854
  # function corresponds to the maximum baudrate (see BrickSilentStepper#set_spitfp_baudrate_config).
813
855
  #
814
856
  # Regulatory testing is done with the default baudrate. If CE compatibility
815
- # or similar is necessary in you applications we recommend to not change
857
+ # or similar is necessary in your applications we recommend to not change
816
858
  # the baudrate.
817
- #
818
- # The default baudrate for all ports is 1400000.
819
859
  def set_spitfp_baudrate(bricklet_port, baudrate)
820
- send_request FUNCTION_SET_SPITFP_BAUDRATE, [bricklet_port, baudrate], 'k L', 0, ''
860
+ check_validity
861
+
862
+ send_request FUNCTION_SET_SPITFP_BAUDRATE, [bricklet_port, baudrate], 'k L', 8, ''
821
863
  end
822
864
 
823
865
  # Returns the baudrate for a given Bricklet port, see BrickSilentStepper#set_spitfp_baudrate.
824
866
  def get_spitfp_baudrate(bricklet_port)
825
- send_request FUNCTION_GET_SPITFP_BAUDRATE, [bricklet_port], 'k', 4, 'L'
867
+ check_validity
868
+
869
+ send_request FUNCTION_GET_SPITFP_BAUDRATE, [bricklet_port], 'k', 12, 'L'
826
870
  end
827
871
 
828
872
  # Returns the error count for the communication between Brick and Bricklet.
@@ -837,7 +881,9 @@ module Tinkerforge
837
881
  # The errors counts are for errors that occur on the Brick side. All
838
882
  # Bricklets have a similar function that returns the errors on the Bricklet side.
839
883
  def get_spitfp_error_count(bricklet_port)
840
- send_request FUNCTION_GET_SPITFP_ERROR_COUNT, [bricklet_port], 'k', 16, 'L L L L'
884
+ check_validity
885
+
886
+ send_request FUNCTION_GET_SPITFP_ERROR_COUNT, [bricklet_port], 'k', 24, 'L L L L'
841
887
  end
842
888
 
843
889
  # Enables the status LED.
@@ -847,7 +893,9 @@ module Tinkerforge
847
893
  #
848
894
  # The default state is enabled.
849
895
  def enable_status_led
850
- send_request FUNCTION_ENABLE_STATUS_LED, [], '', 0, ''
896
+ check_validity
897
+
898
+ send_request FUNCTION_ENABLE_STATUS_LED, [], '', 8, ''
851
899
  end
852
900
 
853
901
  # Disables the status LED.
@@ -857,12 +905,16 @@ module Tinkerforge
857
905
  #
858
906
  # The default state is enabled.
859
907
  def disable_status_led
860
- send_request FUNCTION_DISABLE_STATUS_LED, [], '', 0, ''
908
+ check_validity
909
+
910
+ send_request FUNCTION_DISABLE_STATUS_LED, [], '', 8, ''
861
911
  end
862
912
 
863
913
  # Returns *true* if the status LED is enabled, *false* otherwise.
864
914
  def is_status_led_enabled
865
- send_request FUNCTION_IS_STATUS_LED_ENABLED, [], '', 1, '?'
915
+ check_validity
916
+
917
+ send_request FUNCTION_IS_STATUS_LED_ENABLED, [], '', 9, '?'
866
918
  end
867
919
 
868
920
  # Returns the firmware and protocol version and the name of the Bricklet for a
@@ -871,17 +923,21 @@ module Tinkerforge
871
923
  # This functions sole purpose is to allow automatic flashing of v1.x.y Bricklet
872
924
  # plugins.
873
925
  def get_protocol1_bricklet_name(port)
874
- send_request FUNCTION_GET_PROTOCOL1_BRICKLET_NAME, [port], 'k', 44, 'C C3 Z40'
926
+ check_validity
927
+
928
+ send_request FUNCTION_GET_PROTOCOL1_BRICKLET_NAME, [port], 'k', 52, 'C C3 Z40'
875
929
  end
876
930
 
877
- # Returns the temperature in °C/10 as measured inside the microcontroller. The
931
+ # Returns the temperature as measured inside the microcontroller. The
878
932
  # value returned is not the ambient temperature!
879
933
  #
880
934
  # The temperature is only proportional to the real temperature and it has an
881
- # accuracy of +-15%. Practically it is only useful as an indicator for
935
+ # accuracy of ±15%. Practically it is only useful as an indicator for
882
936
  # temperature changes.
883
937
  def get_chip_temperature
884
- send_request FUNCTION_GET_CHIP_TEMPERATURE, [], '', 2, 's'
938
+ check_validity
939
+
940
+ send_request FUNCTION_GET_CHIP_TEMPERATURE, [], '', 10, 's'
885
941
  end
886
942
 
887
943
  # Calling this function will reset the Brick. Calling this function
@@ -891,19 +947,43 @@ module Tinkerforge
891
947
  # calling functions on the existing ones will result in
892
948
  # undefined behavior!
893
949
  def reset
894
- send_request FUNCTION_RESET, [], '', 0, ''
950
+ check_validity
951
+
952
+ send_request FUNCTION_RESET, [], '', 8, ''
953
+ end
954
+
955
+ # Writes 32 bytes of firmware to the bricklet attached at the given port.
956
+ # The bytes are written to the position offset * 32.
957
+ #
958
+ # This function is used by Brick Viewer during flashing. It should not be
959
+ # necessary to call it in a normal user program.
960
+ def write_bricklet_plugin(port, offset, chunk)
961
+ check_validity
962
+
963
+ send_request FUNCTION_WRITE_BRICKLET_PLUGIN, [port, offset, chunk], 'k C C32', 8, ''
964
+ end
965
+
966
+ # Reads 32 bytes of firmware from the bricklet attached at the given port.
967
+ # The bytes are read starting at the position offset * 32.
968
+ #
969
+ # This function is used by Brick Viewer during flashing. It should not be
970
+ # necessary to call it in a normal user program.
971
+ def read_bricklet_plugin(port, offset)
972
+ check_validity
973
+
974
+ send_request FUNCTION_READ_BRICKLET_PLUGIN, [port, offset], 'k C', 40, 'C32'
895
975
  end
896
976
 
897
977
  # Returns the UID, the UID where the Brick is connected to,
898
978
  # the position, the hardware and firmware version as well as the
899
979
  # device identifier.
900
980
  #
901
- # The position can be '0'-'8' (stack position).
981
+ # The position is the position in the stack from '0' (bottom) to '8' (top).
902
982
  #
903
983
  # The device identifier numbers can be found :ref:`here <device_identifier>`.
904
984
  # |device_identifier_constant|
905
985
  def get_identity
906
- send_request FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S'
986
+ send_request FUNCTION_GET_IDENTITY, [], '', 33, 'Z8 Z8 k C3 C3 S'
907
987
  end
908
988
 
909
989
  # Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.