tinkerforge 2.1.22 → 2.1.27

Sign up to get free protection for your applications and to get access to all the features.
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
  # Executes user programs and controls other Bricks/Bricklets standalone
14
16
  class BrickRED < Device
@@ -212,7 +214,7 @@ module Tinkerforge
212
214
  # Creates an object with the unique device ID <tt>uid</tt> and adds it to
213
215
  # the IP Connection <tt>ipcon</tt>.
214
216
  def initialize(uid, ipcon)
215
- super uid, ipcon
217
+ super uid, ipcon, DEVICE_IDENTIFIER, DEVICE_DISPLAY_NAME
216
218
 
217
219
  @api_version = [2, 0, 0]
218
220
 
@@ -278,44 +280,57 @@ module Tinkerforge
278
280
  @response_expected[FUNCTION_REMOVE_CUSTOM_PROGRAM_OPTION] = RESPONSE_EXPECTED_ALWAYS_TRUE
279
281
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
280
282
 
281
- @callback_formats[CALLBACK_ASYNC_FILE_READ] = 'S C C60 C'
282
- @callback_formats[CALLBACK_ASYNC_FILE_WRITE] = 'S C C'
283
- @callback_formats[CALLBACK_FILE_EVENTS_OCCURRED] = 'S S'
284
- @callback_formats[CALLBACK_PROCESS_STATE_CHANGED] = 'S C Q C'
285
- @callback_formats[CALLBACK_PROGRAM_SCHEDULER_STATE_CHANGED] = 'S'
286
- @callback_formats[CALLBACK_PROGRAM_PROCESS_SPAWNED] = 'S'
283
+ @callback_formats[CALLBACK_ASYNC_FILE_READ] = [72, 'S C C60 C']
284
+ @callback_formats[CALLBACK_ASYNC_FILE_WRITE] = [12, 'S C C']
285
+ @callback_formats[CALLBACK_FILE_EVENTS_OCCURRED] = [12, 'S S']
286
+ @callback_formats[CALLBACK_PROCESS_STATE_CHANGED] = [20, 'S C Q C']
287
+ @callback_formats[CALLBACK_PROGRAM_SCHEDULER_STATE_CHANGED] = [10, 'S']
288
+ @callback_formats[CALLBACK_PROGRAM_PROCESS_SPAWNED] = [10, 'S']
287
289
 
290
+ @ipcon.add_device self
288
291
  end
289
292
 
290
293
  #
291
294
  def create_session(lifetime)
292
- send_request FUNCTION_CREATE_SESSION, [lifetime], 'L', 3, 'C S'
295
+ check_validity
296
+
297
+ send_request FUNCTION_CREATE_SESSION, [lifetime], 'L', 11, 'C S'
293
298
  end
294
299
 
295
300
  #
296
301
  def expire_session(session_id)
297
- send_request FUNCTION_EXPIRE_SESSION, [session_id], 'S', 1, 'C'
302
+ check_validity
303
+
304
+ send_request FUNCTION_EXPIRE_SESSION, [session_id], 'S', 9, 'C'
298
305
  end
299
306
 
300
307
  #
301
308
  def expire_session_unchecked(session_id)
302
- send_request FUNCTION_EXPIRE_SESSION_UNCHECKED, [session_id], 'S', 0, ''
309
+ check_validity
310
+
311
+ send_request FUNCTION_EXPIRE_SESSION_UNCHECKED, [session_id], 'S', 8, ''
303
312
  end
304
313
 
305
314
  #
306
315
  def keep_session_alive(session_id, lifetime)
307
- send_request FUNCTION_KEEP_SESSION_ALIVE, [session_id, lifetime], 'S L', 1, 'C'
316
+ check_validity
317
+
318
+ send_request FUNCTION_KEEP_SESSION_ALIVE, [session_id, lifetime], 'S L', 9, 'C'
308
319
  end
309
320
 
310
321
  # Decreases the reference count of an object by one and returns the resulting
311
322
  # error code. If the reference count reaches zero the object gets destroyed.
312
323
  def release_object(object_id, session_id)
313
- send_request FUNCTION_RELEASE_OBJECT, [object_id, session_id], 'S S', 1, 'C'
324
+ check_validity
325
+
326
+ send_request FUNCTION_RELEASE_OBJECT, [object_id, session_id], 'S S', 9, 'C'
314
327
  end
315
328
 
316
329
  #
317
330
  def release_object_unchecked(object_id, session_id)
318
- send_request FUNCTION_RELEASE_OBJECT_UNCHECKED, [object_id, session_id], 'S S', 0, ''
331
+ check_validity
332
+
333
+ send_request FUNCTION_RELEASE_OBJECT_UNCHECKED, [object_id, session_id], 'S S', 8, ''
319
334
  end
320
335
 
321
336
  # Allocates a new string object, reserves ``length_to_reserve`` bytes memory
@@ -324,31 +339,41 @@ module Tinkerforge
324
339
  #
325
340
  # Returns the object ID of the new string object and the resulting error code.
326
341
  def allocate_string(length_to_reserve, buffer, session_id)
327
- send_request FUNCTION_ALLOCATE_STRING, [length_to_reserve, buffer, session_id], 'L Z58 S', 3, 'C S'
342
+ check_validity
343
+
344
+ send_request FUNCTION_ALLOCATE_STRING, [length_to_reserve, buffer, session_id], 'L Z58 S', 11, 'C S'
328
345
  end
329
346
 
330
347
  # Truncates a string object to ``length`` bytes and returns the resulting
331
348
  # error code.
332
349
  def truncate_string(string_id, length)
333
- send_request FUNCTION_TRUNCATE_STRING, [string_id, length], 'S L', 1, 'C'
350
+ check_validity
351
+
352
+ send_request FUNCTION_TRUNCATE_STRING, [string_id, length], 'S L', 9, 'C'
334
353
  end
335
354
 
336
- # Returns the length of a string object in bytes and the resulting error code.
355
+ # Returns the length of a string object and the resulting error code.
337
356
  def get_string_length(string_id)
338
- send_request FUNCTION_GET_STRING_LENGTH, [string_id], 'S', 5, 'C L'
357
+ check_validity
358
+
359
+ send_request FUNCTION_GET_STRING_LENGTH, [string_id], 'S', 13, 'C L'
339
360
  end
340
361
 
341
362
  # Sets a chunk of up to 58 bytes in a string object beginning at ``offset``.
342
363
  #
343
364
  # Returns the resulting error code.
344
365
  def set_string_chunk(string_id, offset, buffer)
345
- send_request FUNCTION_SET_STRING_CHUNK, [string_id, offset, buffer], 'S L Z58', 1, 'C'
366
+ check_validity
367
+
368
+ send_request FUNCTION_SET_STRING_CHUNK, [string_id, offset, buffer], 'S L Z58', 9, 'C'
346
369
  end
347
370
 
348
371
  # Returns a chunk up to 63 bytes from a string object beginning at ``offset`` and
349
372
  # returns the resulting error code.
350
373
  def get_string_chunk(string_id, offset)
351
- send_request FUNCTION_GET_STRING_CHUNK, [string_id, offset], 'S L', 64, 'C Z63'
374
+ check_validity
375
+
376
+ send_request FUNCTION_GET_STRING_CHUNK, [string_id, offset], 'S L', 72, 'C Z63'
352
377
  end
353
378
 
354
379
  # Allocates a new list object and reserves memory for ``length_to_reserve``
@@ -360,12 +385,16 @@ module Tinkerforge
360
385
  # When a list object gets destroyed then the reference count of each object in
361
386
  # the list object is decreased by one.
362
387
  def allocate_list(length_to_reserve, session_id)
363
- send_request FUNCTION_ALLOCATE_LIST, [length_to_reserve, session_id], 'S S', 3, 'C S'
388
+ check_validity
389
+
390
+ send_request FUNCTION_ALLOCATE_LIST, [length_to_reserve, session_id], 'S S', 11, 'C S'
364
391
  end
365
392
 
366
393
  # Returns the length of a list object in items and the resulting error code.
367
394
  def get_list_length(list_id)
368
- send_request FUNCTION_GET_LIST_LENGTH, [list_id], 'S', 3, 'C S'
395
+ check_validity
396
+
397
+ send_request FUNCTION_GET_LIST_LENGTH, [list_id], 'S', 11, 'C S'
369
398
  end
370
399
 
371
400
  # Returns the object ID and type of the object stored at ``index`` in a list
@@ -380,7 +409,9 @@ module Tinkerforge
380
409
  # * Process = 4
381
410
  # * Program = 5
382
411
  def get_list_item(list_id, index, session_id)
383
- send_request FUNCTION_GET_LIST_ITEM, [list_id, index, session_id], 'S S S', 4, 'C S C'
412
+ check_validity
413
+
414
+ send_request FUNCTION_GET_LIST_ITEM, [list_id, index, session_id], 'S S S', 12, 'C S C'
384
415
  end
385
416
 
386
417
  # Appends an object to a list object and increases the reference count of the
@@ -388,7 +419,9 @@ module Tinkerforge
388
419
  #
389
420
  # Returns the resulting error code.
390
421
  def append_to_list(list_id, item_object_id)
391
- send_request FUNCTION_APPEND_TO_LIST, [list_id, item_object_id], 'S S', 1, 'C'
422
+ check_validity
423
+
424
+ send_request FUNCTION_APPEND_TO_LIST, [list_id, item_object_id], 'S S', 9, 'C'
392
425
  end
393
426
 
394
427
  # Removes the object stored at ``index`` from a list object and decreases the
@@ -396,7 +429,9 @@ module Tinkerforge
396
429
  #
397
430
  # Returns the resulting error code.
398
431
  def remove_from_list(list_id, index)
399
- send_request FUNCTION_REMOVE_FROM_LIST, [list_id, index], 'S S', 1, 'C'
432
+ check_validity
433
+
434
+ send_request FUNCTION_REMOVE_FROM_LIST, [list_id, index], 'S S', 9, 'C'
400
435
  end
401
436
 
402
437
  # Opens an existing file or creates a new file and allocates a new file object
@@ -441,7 +476,9 @@ module Tinkerforge
441
476
  #
442
477
  # Returns the object ID of the new file object and the resulting error code.
443
478
  def open_file(name_string_id, flags, permissions, uid, gid, session_id)
444
- send_request FUNCTION_OPEN_FILE, [name_string_id, flags, permissions, uid, gid, session_id], 'S L S L L S', 3, 'C S'
479
+ check_validity
480
+
481
+ send_request FUNCTION_OPEN_FILE, [name_string_id, flags, permissions, uid, gid, session_id], 'S L S L L S', 11, 'C S'
445
482
  end
446
483
 
447
484
  # Creates a new pipe and allocates a new file object for it.
@@ -457,7 +494,9 @@ module Tinkerforge
457
494
  #
458
495
  # Returns the object ID of the new file object and the resulting error code.
459
496
  def create_pipe(flags, length, session_id)
460
- send_request FUNCTION_CREATE_PIPE, [flags, length, session_id], 'L Q S', 3, 'C S'
497
+ check_validity
498
+
499
+ send_request FUNCTION_CREATE_PIPE, [flags, length, session_id], 'L Q S', 11, 'C S'
461
500
  end
462
501
 
463
502
  # Returns various information about a file and the resulting error code.
@@ -484,7 +523,9 @@ module Tinkerforge
484
523
  #
485
524
  # FIXME: everything except flags and length is invalid if file type is *Pipe*
486
525
  def get_file_info(file_id, session_id)
487
- send_request FUNCTION_GET_FILE_INFO, [file_id, session_id], 'S S', 50, 'C C S L S L L Q Q Q Q'
526
+ check_validity
527
+
528
+ send_request FUNCTION_GET_FILE_INFO, [file_id, session_id], 'S S', 58, 'C C S L S L L Q Q Q Q'
488
529
  end
489
530
 
490
531
  # Reads up to 62 bytes from a file object.
@@ -500,7 +541,9 @@ module Tinkerforge
500
541
  # flag or by BrickRED#create_pipe without the *NonBlockingRead* flag then the
501
542
  # error code *NotSupported* is returned.
502
543
  def read_file(file_id, length_to_read)
503
- send_request FUNCTION_READ_FILE, [file_id, length_to_read], 'S C', 64, 'C C62 C'
544
+ check_validity
545
+
546
+ send_request FUNCTION_READ_FILE, [file_id, length_to_read], 'S C', 72, 'C C62 C'
504
547
  end
505
548
 
506
549
  # Reads up to 2\ :sup:`63`\ - 1 bytes from a file object asynchronously.
@@ -516,7 +559,9 @@ module Tinkerforge
516
559
  # flag or by BrickRED#create_pipe without the *NonBlockingRead* flag then the error
517
560
  # code *NotSupported* is reported via the CALLBACK_ASYNC_FILE_READ callback.
518
561
  def read_file_async(file_id, length_to_read)
519
- send_request FUNCTION_READ_FILE_ASYNC, [file_id, length_to_read], 'S Q', 0, ''
562
+ check_validity
563
+
564
+ send_request FUNCTION_READ_FILE_ASYNC, [file_id, length_to_read], 'S Q', 8, ''
520
565
  end
521
566
 
522
567
  # Aborts a BrickRED#read_file_async operation in progress.
@@ -525,7 +570,9 @@ module Tinkerforge
525
570
  #
526
571
  # On success the CALLBACK_ASYNC_FILE_READ callback will report *OperationAborted*.
527
572
  def abort_async_file_read(file_id)
528
- send_request FUNCTION_ABORT_ASYNC_FILE_READ, [file_id], 'S', 1, 'C'
573
+ check_validity
574
+
575
+ send_request FUNCTION_ABORT_ASYNC_FILE_READ, [file_id], 'S', 9, 'C'
529
576
  end
530
577
 
531
578
  # Writes up to 61 bytes to a file object.
@@ -536,7 +583,9 @@ module Tinkerforge
536
583
  # flag or by BrickRED#create_pipe without the *NonBlockingWrite* flag then the
537
584
  # error code *NotSupported* is returned.
538
585
  def write_file(file_id, buffer, length_to_write)
539
- send_request FUNCTION_WRITE_FILE, [file_id, buffer, length_to_write], 'S C61 C', 2, 'C C'
586
+ check_validity
587
+
588
+ send_request FUNCTION_WRITE_FILE, [file_id, buffer, length_to_write], 'S C61 C', 10, 'C C'
540
589
  end
541
590
 
542
591
  # Writes up to 61 bytes to a file object.
@@ -548,7 +597,9 @@ module Tinkerforge
548
597
  # flag or by BrickRED#create_pipe without the *NonBlockingWrite* flag then the
549
598
  # write operation will fail silently.
550
599
  def write_file_unchecked(file_id, buffer, length_to_write)
551
- send_request FUNCTION_WRITE_FILE_UNCHECKED, [file_id, buffer, length_to_write], 'S C61 C', 0, ''
600
+ check_validity
601
+
602
+ send_request FUNCTION_WRITE_FILE_UNCHECKED, [file_id, buffer, length_to_write], 'S C61 C', 8, ''
552
603
  end
553
604
 
554
605
  # Writes up to 61 bytes to a file object.
@@ -560,10 +611,12 @@ module Tinkerforge
560
611
  # flag or by BrickRED#create_pipe without the *NonBlockingWrite* flag then the
561
612
  # error code *NotSupported* is reported via the CALLBACK_ASYNC_FILE_WRITE callback.
562
613
  def write_file_async(file_id, buffer, length_to_write)
563
- send_request FUNCTION_WRITE_FILE_ASYNC, [file_id, buffer, length_to_write], 'S C61 C', 0, ''
614
+ check_validity
615
+
616
+ send_request FUNCTION_WRITE_FILE_ASYNC, [file_id, buffer, length_to_write], 'S C61 C', 8, ''
564
617
  end
565
618
 
566
- # Set the current seek position of a file object in bytes relative to ``origin``.
619
+ # Set the current seek position of a file object relative to ``origin``.
567
620
  #
568
621
  # Possible file origins are:
569
622
  #
@@ -576,26 +629,34 @@ module Tinkerforge
576
629
  # If the file object was created by BrickRED#create_pipe then it has no seek
577
630
  # position and the error code *InvalidSeek* is returned.
578
631
  def set_file_position(file_id, offset, origin)
579
- send_request FUNCTION_SET_FILE_POSITION, [file_id, offset, origin], 'S q C', 9, 'C Q'
632
+ check_validity
633
+
634
+ send_request FUNCTION_SET_FILE_POSITION, [file_id, offset, origin], 'S q C', 17, 'C Q'
580
635
  end
581
636
 
582
- # Returns the current seek position of a file object in bytes and returns the
637
+ # Returns the current seek position of a file object and returns the
583
638
  # resulting error code.
584
639
  #
585
640
  # If the file object was created by BrickRED#create_pipe then it has no seek
586
641
  # position and the error code *InvalidSeek* is returned.
587
642
  def get_file_position(file_id)
588
- send_request FUNCTION_GET_FILE_POSITION, [file_id], 'S', 9, 'C Q'
643
+ check_validity
644
+
645
+ send_request FUNCTION_GET_FILE_POSITION, [file_id], 'S', 17, 'C Q'
589
646
  end
590
647
 
591
648
  #
592
649
  def set_file_events(file_id, events)
593
- send_request FUNCTION_SET_FILE_EVENTS, [file_id, events], 'S S', 1, 'C'
650
+ check_validity
651
+
652
+ send_request FUNCTION_SET_FILE_EVENTS, [file_id, events], 'S S', 9, 'C'
594
653
  end
595
654
 
596
655
  #
597
656
  def get_file_events(file_id)
598
- send_request FUNCTION_GET_FILE_EVENTS, [file_id], 'S', 3, 'C S'
657
+ check_validity
658
+
659
+ send_request FUNCTION_GET_FILE_EVENTS, [file_id], 'S', 11, 'C S'
599
660
  end
600
661
 
601
662
  # Opens an existing directory and allocates a new directory object for it.
@@ -609,13 +670,17 @@ module Tinkerforge
609
670
  #
610
671
  # Returns the object ID of the new directory object and the resulting error code.
611
672
  def open_directory(name_string_id, session_id)
612
- send_request FUNCTION_OPEN_DIRECTORY, [name_string_id, session_id], 'S S', 3, 'C S'
673
+ check_validity
674
+
675
+ send_request FUNCTION_OPEN_DIRECTORY, [name_string_id, session_id], 'S S', 11, 'C S'
613
676
  end
614
677
 
615
678
  # Returns the name of a directory object, as passed to BrickRED#open_directory, and
616
679
  # the resulting error code.
617
680
  def get_directory_name(directory_id, session_id)
618
- send_request FUNCTION_GET_DIRECTORY_NAME, [directory_id, session_id], 'S S', 3, 'C S'
681
+ check_validity
682
+
683
+ send_request FUNCTION_GET_DIRECTORY_NAME, [directory_id, session_id], 'S S', 11, 'C S'
619
684
  end
620
685
 
621
686
  # Returns the next entry in a directory object and the resulting error code.
@@ -634,27 +699,37 @@ module Tinkerforge
634
699
  # * Symlink = 6
635
700
  # * Socket = 7
636
701
  def get_next_directory_entry(directory_id, session_id)
637
- send_request FUNCTION_GET_NEXT_DIRECTORY_ENTRY, [directory_id, session_id], 'S S', 4, 'C S C'
702
+ check_validity
703
+
704
+ send_request FUNCTION_GET_NEXT_DIRECTORY_ENTRY, [directory_id, session_id], 'S S', 12, 'C S C'
638
705
  end
639
706
 
640
707
  # Rewinds a directory object and returns the resulting error code.
641
708
  def rewind_directory(directory_id)
642
- send_request FUNCTION_REWIND_DIRECTORY, [directory_id], 'S', 1, 'C'
709
+ check_validity
710
+
711
+ send_request FUNCTION_REWIND_DIRECTORY, [directory_id], 'S', 9, 'C'
643
712
  end
644
713
 
645
714
  # FIXME: name has to be absolute
646
715
  def create_directory(name_string_id, flags, permissions, uid, gid)
647
- send_request FUNCTION_CREATE_DIRECTORY, [name_string_id, flags, permissions, uid, gid], 'S L S L L', 1, 'C'
716
+ check_validity
717
+
718
+ send_request FUNCTION_CREATE_DIRECTORY, [name_string_id, flags, permissions, uid, gid], 'S L S L L', 9, 'C'
648
719
  end
649
720
 
650
721
  #
651
722
  def get_processes(session_id)
652
- send_request FUNCTION_GET_PROCESSES, [session_id], 'S', 3, 'C S'
723
+ check_validity
724
+
725
+ send_request FUNCTION_GET_PROCESSES, [session_id], 'S', 11, 'C S'
653
726
  end
654
727
 
655
728
  #
656
729
  def spawn_process(executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id, uid, gid, stdin_file_id, stdout_file_id, stderr_file_id, session_id)
657
- send_request FUNCTION_SPAWN_PROCESS, [executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id, uid, gid, stdin_file_id, stdout_file_id, stderr_file_id, session_id], 'S S S S L L S S S S', 3, 'C S'
730
+ check_validity
731
+
732
+ send_request FUNCTION_SPAWN_PROCESS, [executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id, uid, gid, stdin_file_id, stdout_file_id, stderr_file_id, session_id], 'S S S S L L S S S S', 11, 'C S'
658
733
  end
659
734
 
660
735
  # Sends a UNIX signal to a process object and returns the resulting error code.
@@ -671,14 +746,18 @@ module Tinkerforge
671
746
  # * Continue = 18
672
747
  # * Stop = 19
673
748
  def kill_process(process_id, signal)
674
- send_request FUNCTION_KILL_PROCESS, [process_id, signal], 'S C', 1, 'C'
749
+ check_validity
750
+
751
+ send_request FUNCTION_KILL_PROCESS, [process_id, signal], 'S C', 9, 'C'
675
752
  end
676
753
 
677
754
  # Returns the executable, arguments, environment and working directory used to
678
755
  # spawn a process object, as passed to BrickRED#spawn_process, and the resulting
679
756
  # error code.
680
757
  def get_process_command(process_id, session_id)
681
- send_request FUNCTION_GET_PROCESS_COMMAND, [process_id, session_id], 'S S', 9, 'C S S S S'
758
+ check_validity
759
+
760
+ send_request FUNCTION_GET_PROCESS_COMMAND, [process_id, session_id], 'S S', 17, 'C S S S S'
682
761
  end
683
762
 
684
763
  # Returns the process ID and the user and group ID used to spawn a process object,
@@ -687,13 +766,17 @@ module Tinkerforge
687
766
  # The process ID is only valid if the state is *Running* or *Stopped*, see
688
767
  # BrickRED#get_process_state.
689
768
  def get_process_identity(process_id)
690
- send_request FUNCTION_GET_PROCESS_IDENTITY, [process_id], 'S', 13, 'C L L L'
769
+ check_validity
770
+
771
+ send_request FUNCTION_GET_PROCESS_IDENTITY, [process_id], 'S', 21, 'C L L L'
691
772
  end
692
773
 
693
774
  # Returns the stdin, stdout and stderr files used to spawn a process object, as
694
775
  # passed to BrickRED#spawn_process, and the resulting error code.
695
776
  def get_process_stdio(process_id, session_id)
696
- send_request FUNCTION_GET_PROCESS_STDIO, [process_id, session_id], 'S S', 7, 'C S S S'
777
+ check_validity
778
+
779
+ send_request FUNCTION_GET_PROCESS_STDIO, [process_id, session_id], 'S S', 15, 'C S S S'
697
780
  end
698
781
 
699
782
  # Returns the current state, timestamp and exit code of a process object, and
@@ -728,114 +811,154 @@ module Tinkerforge
728
811
  # The *CannotExecute* error can be caused by the executable being opened for
729
812
  # writing.
730
813
  def get_process_state(process_id)
731
- send_request FUNCTION_GET_PROCESS_STATE, [process_id], 'S', 11, 'C C Q C'
814
+ check_validity
815
+
816
+ send_request FUNCTION_GET_PROCESS_STATE, [process_id], 'S', 19, 'C C Q C'
732
817
  end
733
818
 
734
819
  #
735
820
  def get_programs(session_id)
736
- send_request FUNCTION_GET_PROGRAMS, [session_id], 'S', 3, 'C S'
821
+ check_validity
822
+
823
+ send_request FUNCTION_GET_PROGRAMS, [session_id], 'S', 11, 'C S'
737
824
  end
738
825
 
739
826
  #
740
827
  def define_program(identifier_string_id, session_id)
741
- send_request FUNCTION_DEFINE_PROGRAM, [identifier_string_id, session_id], 'S S', 3, 'C S'
828
+ check_validity
829
+
830
+ send_request FUNCTION_DEFINE_PROGRAM, [identifier_string_id, session_id], 'S S', 11, 'C S'
742
831
  end
743
832
 
744
833
  #
745
834
  def purge_program(program_id, cookie)
746
- send_request FUNCTION_PURGE_PROGRAM, [program_id, cookie], 'S L', 1, 'C'
835
+ check_validity
836
+
837
+ send_request FUNCTION_PURGE_PROGRAM, [program_id, cookie], 'S L', 9, 'C'
747
838
  end
748
839
 
749
840
  #
750
841
  def get_program_identifier(program_id, session_id)
751
- send_request FUNCTION_GET_PROGRAM_IDENTIFIER, [program_id, session_id], 'S S', 3, 'C S'
842
+ check_validity
843
+
844
+ send_request FUNCTION_GET_PROGRAM_IDENTIFIER, [program_id, session_id], 'S S', 11, 'C S'
752
845
  end
753
846
 
754
847
  # FIXME: root directory is absolute: <home>/programs/<identifier>
755
848
  def get_program_root_directory(program_id, session_id)
756
- send_request FUNCTION_GET_PROGRAM_ROOT_DIRECTORY, [program_id, session_id], 'S S', 3, 'C S'
849
+ check_validity
850
+
851
+ send_request FUNCTION_GET_PROGRAM_ROOT_DIRECTORY, [program_id, session_id], 'S S', 11, 'C S'
757
852
  end
758
853
 
759
854
  # FIXME: working directory is relative to <home>/programs/<identifier>/bin
760
855
  def set_program_command(program_id, executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id)
761
- send_request FUNCTION_SET_PROGRAM_COMMAND, [program_id, executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id], 'S S S S S', 1, 'C'
856
+ check_validity
857
+
858
+ send_request FUNCTION_SET_PROGRAM_COMMAND, [program_id, executable_string_id, arguments_list_id, environment_list_id, working_directory_string_id], 'S S S S S', 9, 'C'
762
859
  end
763
860
 
764
861
  # FIXME: working directory is relative to <home>/programs/<identifier>/bin
765
862
  def get_program_command(program_id, session_id)
766
- send_request FUNCTION_GET_PROGRAM_COMMAND, [program_id, session_id], 'S S', 9, 'C S S S S'
863
+ check_validity
864
+
865
+ send_request FUNCTION_GET_PROGRAM_COMMAND, [program_id, session_id], 'S S', 17, 'C S S S S'
767
866
  end
768
867
 
769
868
  # FIXME: stdio file names are relative to <home>/programs/<identifier>/bin
770
869
  def set_program_stdio_redirection(program_id, stdin_redirection, stdin_file_name_string_id, stdout_redirection, stdout_file_name_string_id, stderr_redirection, stderr_file_name_string_id)
771
- send_request FUNCTION_SET_PROGRAM_STDIO_REDIRECTION, [program_id, stdin_redirection, stdin_file_name_string_id, stdout_redirection, stdout_file_name_string_id, stderr_redirection, stderr_file_name_string_id], 'S C S C S C S', 1, 'C'
870
+ check_validity
871
+
872
+ send_request FUNCTION_SET_PROGRAM_STDIO_REDIRECTION, [program_id, stdin_redirection, stdin_file_name_string_id, stdout_redirection, stdout_file_name_string_id, stderr_redirection, stderr_file_name_string_id], 'S C S C S C S', 9, 'C'
772
873
  end
773
874
 
774
875
  # FIXME: stdio file names are relative to <home>/programs/<identifier>/bin
775
876
  def get_program_stdio_redirection(program_id, session_id)
776
- send_request FUNCTION_GET_PROGRAM_STDIO_REDIRECTION, [program_id, session_id], 'S S', 10, 'C C S C S C S'
877
+ check_validity
878
+
879
+ send_request FUNCTION_GET_PROGRAM_STDIO_REDIRECTION, [program_id, session_id], 'S S', 18, 'C C S C S C S'
777
880
  end
778
881
 
779
882
  #
780
883
  def set_program_schedule(program_id, start_mode, continue_after_error, start_interval, start_fields_string_id)
781
- send_request FUNCTION_SET_PROGRAM_SCHEDULE, [program_id, start_mode, continue_after_error, start_interval, start_fields_string_id], 'S C ? L S', 1, 'C'
884
+ check_validity
885
+
886
+ send_request FUNCTION_SET_PROGRAM_SCHEDULE, [program_id, start_mode, continue_after_error, start_interval, start_fields_string_id], 'S C ? L S', 9, 'C'
782
887
  end
783
888
 
784
889
  #
785
890
  def get_program_schedule(program_id, session_id)
786
- send_request FUNCTION_GET_PROGRAM_SCHEDULE, [program_id, session_id], 'S S', 9, 'C C ? L S'
891
+ check_validity
892
+
893
+ send_request FUNCTION_GET_PROGRAM_SCHEDULE, [program_id, session_id], 'S S', 17, 'C C ? L S'
787
894
  end
788
895
 
789
896
  # FIXME: message is currently valid in error-occurred state only
790
897
  def get_program_scheduler_state(program_id, session_id)
791
- send_request FUNCTION_GET_PROGRAM_SCHEDULER_STATE, [program_id, session_id], 'S S', 12, 'C C Q S'
898
+ check_validity
899
+
900
+ send_request FUNCTION_GET_PROGRAM_SCHEDULER_STATE, [program_id, session_id], 'S S', 20, 'C C Q S'
792
901
  end
793
902
 
794
903
  #
795
904
  def continue_program_schedule(program_id)
796
- send_request FUNCTION_CONTINUE_PROGRAM_SCHEDULE, [program_id], 'S', 1, 'C'
905
+ check_validity
906
+
907
+ send_request FUNCTION_CONTINUE_PROGRAM_SCHEDULE, [program_id], 'S', 9, 'C'
797
908
  end
798
909
 
799
910
  #
800
911
  def start_program(program_id)
801
- send_request FUNCTION_START_PROGRAM, [program_id], 'S', 1, 'C'
912
+ check_validity
913
+
914
+ send_request FUNCTION_START_PROGRAM, [program_id], 'S', 9, 'C'
802
915
  end
803
916
 
804
917
  #
805
918
  def get_last_spawned_program_process(program_id, session_id)
806
- send_request FUNCTION_GET_LAST_SPAWNED_PROGRAM_PROCESS, [program_id, session_id], 'S S', 11, 'C S Q'
919
+ check_validity
920
+
921
+ send_request FUNCTION_GET_LAST_SPAWNED_PROGRAM_PROCESS, [program_id, session_id], 'S S', 19, 'C S Q'
807
922
  end
808
923
 
809
924
  #
810
925
  def get_custom_program_option_names(program_id, session_id)
811
- send_request FUNCTION_GET_CUSTOM_PROGRAM_OPTION_NAMES, [program_id, session_id], 'S S', 3, 'C S'
926
+ check_validity
927
+
928
+ send_request FUNCTION_GET_CUSTOM_PROGRAM_OPTION_NAMES, [program_id, session_id], 'S S', 11, 'C S'
812
929
  end
813
930
 
814
931
  #
815
932
  def set_custom_program_option_value(program_id, name_string_id, value_string_id)
816
- send_request FUNCTION_SET_CUSTOM_PROGRAM_OPTION_VALUE, [program_id, name_string_id, value_string_id], 'S S S', 1, 'C'
933
+ check_validity
934
+
935
+ send_request FUNCTION_SET_CUSTOM_PROGRAM_OPTION_VALUE, [program_id, name_string_id, value_string_id], 'S S S', 9, 'C'
817
936
  end
818
937
 
819
938
  #
820
939
  def get_custom_program_option_value(program_id, name_string_id, session_id)
821
- send_request FUNCTION_GET_CUSTOM_PROGRAM_OPTION_VALUE, [program_id, name_string_id, session_id], 'S S S', 3, 'C S'
940
+ check_validity
941
+
942
+ send_request FUNCTION_GET_CUSTOM_PROGRAM_OPTION_VALUE, [program_id, name_string_id, session_id], 'S S S', 11, 'C S'
822
943
  end
823
944
 
824
945
  #
825
946
  def remove_custom_program_option(program_id, name_string_id)
826
- send_request FUNCTION_REMOVE_CUSTOM_PROGRAM_OPTION, [program_id, name_string_id], 'S S', 1, 'C'
947
+ check_validity
948
+
949
+ send_request FUNCTION_REMOVE_CUSTOM_PROGRAM_OPTION, [program_id, name_string_id], 'S S', 9, 'C'
827
950
  end
828
951
 
829
952
  # Returns the UID, the UID where the Brick is connected to,
830
953
  # the position, the hardware and firmware version as well as the
831
954
  # device identifier.
832
955
  #
833
- # The position can be '0'-'8' (stack position).
956
+ # The position is the position in the stack from '0' (bottom) to '8' (top).
834
957
  #
835
958
  # The device identifier numbers can be found :ref:`here <device_identifier>`.
836
959
  # |device_identifier_constant|
837
960
  def get_identity
838
- send_request FUNCTION_GET_IDENTITY, [], '', 25, 'Z8 Z8 k C3 C3 S'
961
+ send_request FUNCTION_GET_IDENTITY, [], '', 33, 'Z8 Z8 k C3 C3 S'
839
962
  end
840
963
 
841
964
  # Registers a callback with ID <tt>id</tt> to the block <tt>block</tt>.