Guest User

Untitled

a guest
Nov 28th, 2020
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 88.71 KB | None | 0 0
  1. pi@raspberrypi:~ $ rosrun odrive_ros odrive_basic_node.py
  2. ConfigurationValue 1
  3. InterfaceNumber 0,0
  4. EndpointAddress 130
  5. InterfaceNumber 1,0
  6. EndpointAddress 1
  7. EndpointAddress 129
  8. InterfaceNumber 2,0
  9. EndpointAddress 3
  10. EndpointAddress 131
  11.  
  12. Kernel Driver was not attached
  13. EndpointAddress for writing 3
  14. EndpointAddress for reading 131
  15. Connecting to device on USB device bus 1 device 19
  16. Device reported JSON version ID: 2604684226
  17. JSON: [
  18. {'name': '', 'id': 0, 'type': 'json', 'access': 'r'},
  19. {'name': 'vbus_voltage', 'id': 1, 'type': 'float', 'access': 'r'},
  20. {'name': 'ibus', 'id': 2, 'type': 'float', 'access': 'r'},
  21. {'name': 'ibus_report_filter_k', 'id': 3, 'type': 'float', 'access': 'rw'},
  22. {'name': 'serial_number', 'id': 4, 'type': 'uint64', 'access': 'r'},
  23. {'name': 'hw_version_major', 'id': 5, 'type': 'uint8', 'access': 'r'},
  24. {'name': 'hw_version_minor', 'id': 6, 'type': 'uint8', 'access': 'r'},
  25. {'name': 'hw_version_variant', 'id': 7, 'type': 'uint8', 'access': 'r'},
  26. {'name': 'fw_version_major', 'id': 8, 'type': 'uint8', 'access': 'r'},
  27. {'name': 'fw_version_minor', 'id': 9, 'type': 'uint8', 'access': 'r'},
  28. {'name': 'fw_version_revision', 'id': 10, 'type': 'uint8', 'access': 'r'},
  29. {'name': 'fw_version_unreleased', 'id': 11, 'type': 'uint8', 'access': 'r'},
  30. {'name': 'brake_resistor_armed', 'id': 12, 'type': 'bool', 'access': 'r'},
  31. {'name': 'brake_resistor_saturated', 'id': 13, 'type': 'bool', 'access': 'rw'},
  32. {'name': 'system_stats', 'type': 'object', 'members': [
  33. {'name': 'uptime', 'id': 14, 'type': 'uint32', 'access': 'r'},
  34. {'name': 'min_heap_space', 'id': 15, 'type': 'uint32', 'access': 'r'},
  35. {'name': 'min_stack_space_axis0', 'id': 16, 'type': 'uint32', 'access': 'r'},
  36. {'name': 'min_stack_space_axis1', 'id': 17, 'type': 'uint32', 'access': 'r'},
  37. {'name': 'min_stack_space_comms', 'id': 18, 'type': 'uint32', 'access': 'r'},
  38. {'name': 'min_stack_space_usb', 'id': 19, 'type': 'uint32', 'access': 'r'},
  39. {'name': 'min_stack_space_uart', 'id': 20, 'type': 'uint32', 'access': 'r'},
  40. {'name': 'min_stack_space_can', 'id': 21, 'type': 'uint32', 'access': 'r'},
  41. {'name': 'min_stack_space_usb_irq', 'id': 22, 'type': 'uint32', 'access': 'r'},
  42. {'name': 'min_stack_space_startup', 'id': 23, 'type': 'uint32', 'access': 'r'},
  43. {'name': 'stack_usage_axis0', 'id': 24, 'type': 'uint32', 'access': 'r'},
  44. {'name': 'stack_usage_axis1', 'id': 25, 'type': 'uint32', 'access': 'r'},
  45. {'name': 'stack_usage_comms', 'id': 26, 'type': 'uint32', 'access': 'r'},
  46. {'name': 'stack_usage_usb', 'id': 27, 'type': 'uint32', 'access': 'r'},
  47. {'name': 'stack_usage_uart', 'id': 28, 'type': 'uint32', 'access': 'r'},
  48. {'name': 'stack_usage_usb_irq', 'id': 29, 'type': 'uint32', 'access': 'r'},
  49. {'name': 'stack_usage_startup', 'id': 30, 'type': 'uint32', 'access': 'r'},
  50. {'name': 'stack_usage_can', 'id': 31, 'type': 'uint32', 'access': 'r'},
  51. {'name': 'usb', 'type': 'object', 'members': [
  52. {'name': 'rx_cnt', 'id': 32, 'type': 'uint32', 'access': 'r'},
  53. {'name': 'tx_cnt', 'id': 33, 'type': 'uint32', 'access': 'r'},
  54. {'name': 'tx_overrun_cnt', 'id': 34, 'type': 'uint32', 'access': 'r'}]},
  55. {'name': 'i2c', 'type': 'object', 'members': [
  56. {'name': 'addr', 'id': 35, 'type': 'uint8', 'access': 'r'},
  57. {'name': 'addr_match_cnt', 'id': 36, 'type': 'uint32', 'access': 'r'},
  58. {'name': 'rx_cnt', 'id': 37, 'type': 'uint32', 'access': 'r'},
  59. {'name': 'error_cnt', 'id': 38, 'type': 'uint32', 'access': 'r'}]}]},
  60. {'name': 'config', 'type': 'object', 'members': [
  61. {'name': 'enable_uart', 'id': 39, 'type': 'bool', 'access': 'rw'},
  62. {'name': 'uart_baudrate', 'id': 40, 'type': 'uint32', 'access': 'rw'},
  63. {'name': 'enable_i2c_instead_of_can', 'id': 41, 'type': 'bool', 'access': 'rw'},
  64. {'name': 'enable_ascii_protocol_on_usb', 'id': 42, 'type': 'bool', 'access': 'rw'},
  65. {'name': 'max_regen_current', 'id': 43, 'type': 'float', 'access': 'rw'},
  66. {'name': 'brake_resistance', 'id': 44, 'type': 'float', 'access': 'rw'},
  67. {'name': 'dc_bus_undervoltage_trip_level', 'id': 45, 'type': 'float', 'access': 'rw'},
  68. {'name': 'dc_bus_overvoltage_trip_level', 'id': 46, 'type': 'float', 'access': 'rw'},
  69. {'name': 'enable_dc_bus_overvoltage_ramp', 'id': 47, 'type': 'bool', 'access': 'rw'},
  70. {'name': 'dc_bus_overvoltage_ramp_start', 'id': 48, 'type': 'float', 'access': 'rw'},
  71. {'name': 'dc_bus_overvoltage_ramp_end', 'id': 49, 'type': 'float', 'access': 'rw'},
  72. {'name': 'dc_max_positive_current', 'id': 50, 'type': 'float', 'access': 'rw'},
  73. {'name': 'dc_max_negative_current', 'id': 51, 'type': 'float', 'access': 'rw'},
  74. {'name': 'gpio1_pwm_mapping', 'type': 'object', 'members': [
  75. {'name': 'endpoint', 'id': 52, 'type': 'endpoint_ref', 'access': 'rw'},
  76. {'name': 'min', 'id': 53, 'type': 'float', 'access': 'rw'},
  77. {'name': 'max', 'id': 54, 'type': 'float', 'access': 'rw'}]},
  78. {'name': 'gpio2_pwm_mapping', 'type': 'object', 'members': [
  79. {'name': 'endpoint', 'id': 55, 'type': 'endpoint_ref', 'access': 'rw'},
  80. {'name': 'min', 'id': 56, 'type': 'float', 'access': 'rw'},
  81. {'name': 'max', 'id': 57, 'type': 'float', 'access': 'rw'}]},
  82. {'name': 'gpio3_pwm_mapping', 'type': 'object', 'members': [
  83. {'name': 'endpoint', 'id': 58, 'type': 'endpoint_ref', 'access': 'rw'},
  84. {'name': 'min', 'id': 59, 'type': 'float', 'access': 'rw'},
  85. {'name': 'max', 'id': 60, 'type': 'float', 'access': 'rw'}]},
  86. {'name': 'gpio4_pwm_mapping', 'type': 'object', 'members': [
  87. {'name': 'endpoint', 'id': 61, 'type': 'endpoint_ref', 'access': 'rw'},
  88. {'name': 'min', 'id': 62, 'type': 'float', 'access': 'rw'},
  89. {'name': 'max', 'id': 63, 'type': 'float', 'access': 'rw'}]},
  90. {'name': 'gpio3_analog_mapping', 'type': 'object', 'members': [
  91. {'name': 'endpoint', 'id': 64, 'type': 'endpoint_ref', 'access': 'rw'},
  92. {'name': 'min', 'id': 65, 'type': 'float', 'access': 'rw'},
  93. {'name': 'max', 'id': 66, 'type': 'float', 'access': 'rw'}]},
  94. {'name': 'gpio4_analog_mapping', 'type': 'object', 'members': [
  95. {'name': 'endpoint', 'id': 67, 'type': 'endpoint_ref', 'access': 'rw'},
  96. {'name': 'min', 'id': 68, 'type': 'float', 'access': 'rw'},
  97. {'name': 'max', 'id': 69, 'type': 'float', 'access': 'rw'}]}]},
  98. {'name': 'user_config_loaded', 'id': 70, 'type': 'bool', 'access': 'r'},
  99. {'name': 'axis0', 'type': 'object', 'members': [
  100. {'name': 'error', 'id': 71, 'type': 'int32', 'access': 'rw'},
  101. {'name': 'step_dir_active', 'id': 72, 'type': 'bool', 'access': 'r'},
  102. {'name': 'current_state', 'id': 73, 'type': 'int32', 'access': 'r'},
  103. {'name': 'requested_state', 'id': 74, 'type': 'int32', 'access': 'rw'},
  104. {'name': 'loop_counter', 'id': 75, 'type': 'uint32', 'access': 'r'},
  105. {'name': 'lockin_state', 'id': 76, 'type': 'int32', 'access': 'r'},
  106. {'name': 'is_homed', 'id': 77, 'type': 'bool', 'access': 'rw'},
  107. {'name': 'config', 'type': 'object', 'members': [
  108. {'name': 'startup_motor_calibration', 'id': 78, 'type': 'bool', 'access': 'rw'},
  109. {'name': 'startup_encoder_index_search', 'id': 79, 'type': 'bool', 'access': 'rw'},
  110. {'name': 'startup_encoder_offset_calibration', 'id': 80, 'type': 'bool', 'access': 'rw'},
  111. {'name': 'startup_closed_loop_control', 'id': 81, 'type': 'bool', 'access': 'rw'},
  112. {'name': 'startup_sensorless_control', 'id': 82, 'type': 'bool', 'access': 'rw'},
  113. {'name': 'startup_homing', 'id': 83, 'type': 'bool', 'access': 'rw'},
  114. {'name': 'enable_step_dir', 'id': 84, 'type': 'bool', 'access': 'rw'},
  115. {'name': 'step_dir_always_on', 'id': 85, 'type': 'bool', 'access': 'rw'},
  116. {'name': 'turns_per_step', 'id': 86, 'type': 'float', 'access': 'rw'},
  117. {'name': 'watchdog_timeout', 'id': 87, 'type': 'float', 'access': 'rw'},
  118. {'name': 'enable_watchdog', 'id': 88, 'type': 'bool', 'access': 'rw'},
  119. {'name': 'step_gpio_pin', 'id': 89, 'type': 'uint16', 'access': 'rw'},
  120. {'name': 'dir_gpio_pin', 'id': 90, 'type': 'uint16', 'access': 'rw'},
  121. {'name': 'calibration_lockin', 'type': 'object', 'members': [
  122. {'name': 'current', 'id': 91, 'type': 'float', 'access': 'rw'},
  123. {'name': 'ramp_time', 'id': 92, 'type': 'float', 'access': 'rw'},
  124. {'name': 'ramp_distance', 'id': 93, 'type': 'float', 'access': 'rw'},
  125. {'name': 'accel', 'id': 94, 'type': 'float', 'access': 'rw'},
  126. {'name': 'vel', 'id': 95, 'type': 'float', 'access': 'rw'}]},
  127. {'name': 'sensorless_ramp', 'type': 'object', 'members': [
  128. {'name': 'current', 'id': 96, 'type': 'float', 'access': 'rw'},
  129. {'name': 'ramp_time', 'id': 97, 'type': 'float', 'access': 'rw'},
  130. {'name': 'ramp_distance', 'id': 98, 'type': 'float', 'access': 'rw'},
  131. {'name': 'accel', 'id': 99, 'type': 'float', 'access': 'rw'},
  132. {'name': 'vel', 'id': 100, 'type': 'float', 'access': 'rw'},
  133. {'name': 'finish_distance', 'id': 101, 'type': 'float', 'access': 'rw'},
  134. {'name': 'finish_on_vel', 'id': 102, 'type': 'bool', 'access': 'rw'},
  135. {'name': 'finish_on_distance', 'id': 103, 'type': 'bool', 'access': 'rw'},
  136. {'name': 'finish_on_enc_idx', 'id': 104, 'type': 'bool', 'access': 'rw'}]},
  137. {'name': 'general_lockin', 'type': 'object', 'members': [
  138. {'name': 'current', 'id': 105, 'type': 'float', 'access': 'rw'},
  139. {'name': 'ramp_time', 'id': 106, 'type': 'float', 'access': 'rw'},
  140. {'name': 'ramp_distance', 'id': 107, 'type': 'float', 'access': 'rw'},
  141. {'name': 'accel', 'id': 108, 'type': 'float', 'access': 'rw'},
  142. {'name': 'vel', 'id': 109, 'type': 'float', 'access': 'rw'},
  143. {'name': 'finish_distance', 'id': 110, 'type': 'float', 'access': 'rw'},
  144. {'name': 'finish_on_vel', 'id': 111, 'type': 'bool', 'access': 'rw'},
  145. {'name': 'finish_on_distance', 'id': 112, 'type': 'bool', 'access': 'rw'},
  146. {'name': 'finish_on_enc_idx', 'id': 113, 'type': 'bool', 'access': 'rw'}]},
  147. {'name': 'can_node_id', 'id': 114, 'type': 'uint32', 'access': 'rw'},
  148. {'name': 'can_node_id_extended', 'id': 115, 'type': 'bool', 'access': 'rw'},
  149. {'name': 'can_heartbeat_rate_ms', 'id': 116, 'type': 'uint32', 'access': 'rw'}]},
  150. {'name': 'fet_thermistor', 'type': 'object', 'members': [
  151. {'name': 'error', 'id': 117, 'type': 'int32', 'access': 'rw'},
  152. {'name': 'temperature', 'id': 118, 'type': 'float', 'access': 'r'},
  153. {'name': 'config', 'type': 'object', 'members': [
  154. {'name': 'temp_limit_lower', 'id': 119, 'type': 'float', 'access': 'rw'},
  155. {'name': 'temp_limit_upper', 'id': 120, 'type': 'float', 'access': 'rw'},
  156. {'name': 'enabled', 'id': 121, 'type': 'bool', 'access': 'rw'}]}]},
  157. {'name': 'motor_thermistor', 'type': 'object', 'members': [
  158. {'name': 'error', 'id': 122, 'type': 'int32', 'access': 'rw'},
  159. {'name': 'temperature', 'id': 123, 'type': 'float', 'access': 'r'},
  160. {'name': 'config', 'type': 'object', 'members': [
  161. {'name': 'gpio_pin', 'id': 124, 'type': 'uint16', 'access': 'rw'},
  162. {'name': 'poly_coefficient_0', 'id': 125, 'type': 'float', 'access': 'rw'},
  163. {'name': 'poly_coefficient_1', 'id': 126, 'type': 'float', 'access': 'rw'},
  164. {'name': 'poly_coefficient_2', 'id': 127, 'type': 'float', 'access': 'rw'},
  165. {'name': 'poly_coefficient_3', 'id': 128, 'type': 'float', 'access': 'rw'},
  166. {'name': 'temp_limit_lower', 'id': 129, 'type': 'float', 'access': 'rw'},
  167. {'name': 'temp_limit_upper', 'id': 130, 'type': 'float', 'access': 'rw'},
  168. {'name': 'enabled', 'id': 131, 'type': 'bool', 'access': 'rw'}]}]},
  169. {'name': 'motor', 'type': 'object', 'members': [
  170. {'name': 'error', 'id': 132, 'type': 'int32', 'access': 'rw'},
  171. {'name': 'armed_state', 'id': 133, 'type': 'int32', 'access': 'r'},
  172. {'name': 'is_calibrated', 'id': 134, 'type': 'bool', 'access': 'r'},
  173. {'name': 'current_meas_phB', 'id': 135, 'type': 'float', 'access': 'r'},
  174. {'name': 'current_meas_phC', 'id': 136, 'type': 'float', 'access': 'r'},
  175. {'name': 'DC_calib_phB', 'id': 137, 'type': 'float', 'access': 'rw'},
  176. {'name': 'DC_calib_phC', 'id': 138, 'type': 'float', 'access': 'rw'},
  177. {'name': 'phase_current_rev_gain', 'id': 139, 'type': 'float', 'access': 'rw'},
  178. {'name': 'effective_current_lim', 'id': 140, 'type': 'float', 'access': 'r'},
  179. {'name': 'current_control', 'type': 'object', 'members': [
  180. {'name': 'p_gain', 'id': 141, 'type': 'float', 'access': 'rw'},
  181. {'name': 'i_gain', 'id': 142, 'type': 'float', 'access': 'rw'},
  182. {'name': 'v_current_control_integral_d', 'id': 143, 'type': 'float', 'access': 'rw'},
  183. {'name': 'v_current_control_integral_q', 'id': 144, 'type': 'float', 'access': 'rw'},
  184. {'name': 'Ibus', 'id': 145, 'type': 'float', 'access': 'rw'},
  185. {'name': 'final_v_alpha', 'id': 146, 'type': 'float', 'access': 'rw'},
  186. {'name': 'final_v_beta', 'id': 147, 'type': 'float', 'access': 'rw'},
  187. {'name': 'Id_setpoint', 'id': 148, 'type': 'float', 'access': 'rw'},
  188. {'name': 'Iq_setpoint', 'id': 149, 'type': 'float', 'access': 'r'},
  189. {'name': 'Iq_measured', 'id': 150, 'type': 'float', 'access': 'rw'},
  190. {'name': 'Id_measured', 'id': 151, 'type': 'float', 'access': 'rw'},
  191. {'name': 'I_measured_report_filter_k', 'id': 152, 'type': 'float', 'access': 'rw'},
  192. {'name': 'max_allowed_current', 'id': 153, 'type': 'float', 'access': 'r'},
  193. {'name': 'overcurrent_trip_level', 'id': 154, 'type': 'float', 'access': 'r'},
  194. {'name': 'acim_rotor_flux', 'id': 155, 'type': 'float', 'access': 'rw'},
  195. {'name': 'async_phase_vel', 'id': 156, 'type': 'float', 'access': 'r'},
  196. {'name': 'async_phase_offset', 'id': 157, 'type': 'float', 'access': 'rw'}]},
  197. {'name': 'gate_driver', 'type': 'object', 'members': [
  198. {'name': 'drv_fault', 'id': 158, 'type': 'int32', 'access': 'r'}]},
  199. {'name': 'timing_log', 'type': 'object', 'members': [
  200. {'name': 'general', 'id': 159, 'type': 'uint16', 'access': 'r'},
  201. {'name': 'adc_cb_i', 'id': 160, 'type': 'uint16', 'access': 'r'},
  202. {'name': 'adc_cb_dc', 'id': 161, 'type': 'uint16', 'access': 'r'},
  203. {'name': 'meas_r', 'id': 162, 'type': 'uint16', 'access': 'r'},
  204. {'name': 'meas_l', 'id': 163, 'type': 'uint16', 'access': 'r'},
  205. {'name': 'enc_calib', 'id': 164, 'type': 'uint16', 'access': 'r'},
  206. {'name': 'idx_search', 'id': 165, 'type': 'uint16', 'access': 'r'},
  207. {'name': 'foc_voltage', 'id': 166, 'type': 'uint16', 'access': 'r'},
  208. {'name': 'foc_current', 'id': 167, 'type': 'uint16', 'access': 'r'},
  209. {'name': 'spi_start', 'id': 168, 'type': 'uint16', 'access': 'r'},
  210. {'name': 'sample_now', 'id': 169, 'type': 'uint16', 'access': 'r'},
  211. {'name': 'spi_end', 'id': 170, 'type': 'uint16', 'access': 'r'}]},
  212. {'name': 'config', 'type': 'object', 'members': [
  213. {'name': 'pre_calibrated', 'id': 171, 'type': 'bool', 'access': 'rw'},
  214. {'name': 'pole_pairs', 'id': 172, 'type': 'int32', 'access': 'rw'},
  215. {'name': 'calibration_current', 'id': 173, 'type': 'float', 'access': 'rw'},
  216. {'name': 'resistance_calib_max_voltage', 'id': 174, 'type': 'float', 'access': 'rw'},
  217. {'name': 'phase_inductance', 'id': 175, 'type': 'float', 'access': 'rw'},
  218. {'name': 'phase_resistance', 'id': 176, 'type': 'float', 'access': 'rw'},
  219. {'name': 'torque_constant', 'id': 177, 'type': 'float', 'access': 'rw'},
  220. {'name': 'direction', 'id': 178, 'type': 'int32', 'access': 'rw'},
  221. {'name': 'motor_type', 'id': 179, 'type': 'int32', 'access': 'rw'},
  222. {'name': 'current_lim', 'id': 180, 'type': 'float', 'access': 'rw'},
  223. {'name': 'current_lim_margin', 'id': 181, 'type': 'float', 'access': 'rw'},
  224. {'name': 'torque_lim', 'id': 182, 'type': 'float', 'access': 'rw'},
  225. {'name': 'inverter_temp_limit_lower', 'id': 183, 'type': 'float', 'access': 'rw'},
  226. {'name': 'inverter_temp_limit_upper', 'id': 184, 'type': 'float', 'access': 'rw'},
  227. {'name': 'requested_current_range', 'id': 185, 'type': 'float', 'access': 'rw'},
  228. {'name': 'current_control_bandwidth', 'id': 186, 'type': 'float', 'access': 'rw'},
  229. {'name': 'acim_slip_velocity', 'id': 187, 'type': 'float', 'access': 'rw'},
  230. {'name': 'acim_gain_min_flux', 'id': 188, 'type': 'float', 'access': 'rw'},
  231. {'name': 'acim_autoflux_min_Id', 'id': 189, 'type': 'float', 'access': 'rw'},
  232. {'name': 'acim_autoflux_enable', 'id': 190, 'type': 'bool', 'access': 'rw'},
  233. {'name': 'acim_autoflux_attack_gain', 'id': 191, 'type': 'float', 'access': 'rw'},
  234. {'name': 'acim_autoflux_decay_gain', 'id': 192, 'type': 'float', 'access': 'rw'}]}]},
  235. {'name': 'controller', 'type': 'object', 'members': [
  236. {'name': 'error', 'id': 193, 'type': 'int32', 'access': 'rw'},
  237. {'name': 'input_pos', 'id': 194, 'type': 'float', 'access': 'rw'},
  238. {'name': 'input_vel', 'id': 195, 'type': 'float', 'access': 'rw'},
  239. {'name': 'input_torque', 'id': 196, 'type': 'float', 'access': 'rw'},
  240. {'name': 'pos_setpoint', 'id': 197, 'type': 'float', 'access': 'r'},
  241. {'name': 'vel_setpoint', 'id': 198, 'type': 'float', 'access': 'r'},
  242. {'name': 'torque_setpoint', 'id': 199, 'type': 'float', 'access': 'r'},
  243. {'name': 'trajectory_done', 'id': 200, 'type': 'bool', 'access': 'r'},
  244. {'name': 'vel_integrator_torque', 'id': 201, 'type': 'float', 'access': 'rw'},
  245. {'name': 'anticogging_valid', 'id': 202, 'type': 'bool', 'access': 'rw'},
  246. {'name': 'config', 'type': 'object', 'members': [
  247. {'name': 'gain_scheduling_width', 'id': 203, 'type': 'float', 'access': 'rw'},
  248. {'name': 'enable_vel_limit', 'id': 204, 'type': 'bool', 'access': 'rw'},
  249. {'name': 'enable_current_mode_vel_limit', 'id': 205, 'type': 'bool', 'access': 'rw'},
  250. {'name': 'enable_gain_scheduling', 'id': 206, 'type': 'bool', 'access': 'rw'},
  251. {'name': 'enable_overspeed_error', 'id': 207, 'type': 'bool', 'access': 'rw'},
  252. {'name': 'control_mode', 'id': 208, 'type': 'int32', 'access': 'rw'},
  253. {'name': 'input_mode', 'id': 209, 'type': 'int32', 'access': 'rw'},
  254. {'name': 'pos_gain', 'id': 210, 'type': 'float', 'access': 'rw'},
  255. {'name': 'vel_gain', 'id': 211, 'type': 'float', 'access': 'rw'},
  256. {'name': 'vel_integrator_gain', 'id': 212, 'type': 'float', 'access': 'rw'},
  257. {'name': 'vel_limit', 'id': 213, 'type': 'float', 'access': 'rw'},
  258. {'name': 'vel_limit_tolerance', 'id': 214, 'type': 'float', 'access': 'rw'},
  259. {'name': 'vel_ramp_rate', 'id': 215, 'type': 'float', 'access': 'rw'},
  260. {'name': 'torque_ramp_rate', 'id': 216, 'type': 'float', 'access': 'rw'},
  261. {'name': 'circular_setpoints', 'id': 217, 'type': 'bool', 'access': 'rw'},
  262. {'name': 'circular_setpoint_range', 'id': 218, 'type': 'float', 'access': 'rw'},
  263. {'name': 'homing_speed', 'id': 219, 'type': 'float', 'access': 'rw'},
  264. {'name': 'inertia', 'id': 220, 'type': 'float', 'access': 'rw'},
  265. {'name': 'axis_to_mirror', 'id': 221, 'type': 'uint8', 'access': 'rw'},
  266. {'name': 'mirror_ratio', 'id': 222, 'type': 'float', 'access': 'rw'},
  267. {'name': 'load_encoder_axis', 'id': 223, 'type': 'uint8', 'access': 'rw'},
  268. {'name': 'input_filter_bandwidth', 'id': 224, 'type': 'float', 'access': 'rw'},
  269. {'name': 'anticogging', 'type': 'object', 'members': [
  270. {'name': 'index', 'id': 225, 'type': 'uint32', 'access': 'r'},
  271. {'name': 'pre_calibrated', 'id': 226, 'type': 'bool', 'access': 'rw'},
  272. {'name': 'calib_anticogging', 'id': 227, 'type': 'bool', 'access': 'r'},
  273. {'name': 'calib_pos_threshold', 'id': 228, 'type': 'float', 'access': 'rw'},
  274. {'name': 'calib_vel_threshold', 'id': 229, 'type': 'float', 'access': 'rw'},
  275. {'name': 'cogging_ratio', 'id': 230, 'type': 'float', 'access': 'r'},
  276. {'name': 'anticogging_enabled', 'id': 231, 'type': 'bool', 'access': 'rw'}]}]},
  277. {'name': 'move_incremental', 'id': 232, 'type': 'function', 'inputs': [
  278. {'name': 'displacement', 'id': 233, 'type': 'float', 'access': 'rw'},
  279. {'name': 'from_input_pos', 'id': 234, 'type': 'bool', 'access': 'rw'}], 'outputs': []},
  280. {'name': 'start_anticogging_calibration', 'id': 235, 'type': 'function', 'inputs': [], 'outputs': []}]},
  281. {'name': 'encoder', 'type': 'object', 'members': [
  282. {'name': 'error', 'id': 236, 'type': 'int32', 'access': 'rw'},
  283. {'name': 'is_ready', 'id': 237, 'type': 'bool', 'access': 'r'},
  284. {'name': 'index_found', 'id': 238, 'type': 'bool', 'access': 'r'},
  285. {'name': 'shadow_count', 'id': 239, 'type': 'int32', 'access': 'r'},
  286. {'name': 'count_in_cpr', 'id': 240, 'type': 'int32', 'access': 'r'},
  287. {'name': 'interpolation', 'id': 241, 'type': 'float', 'access': 'r'},
  288. {'name': 'phase', 'id': 242, 'type': 'float', 'access': 'r'},
  289. {'name': 'pos_estimate', 'id': 243, 'type': 'float', 'access': 'r'},
  290. {'name': 'pos_estimate_counts', 'id': 244, 'type': 'float', 'access': 'r'},
  291. {'name': 'pos_cpr', 'id': 245, 'type': 'float', 'access': 'r'},
  292. {'name': 'pos_cpr_counts', 'id': 246, 'type': 'float', 'access': 'r'},
  293. {'name': 'pos_circular', 'id': 247, 'type': 'float', 'access': 'r'},
  294. {'name': 'hall_state', 'id': 248, 'type': 'uint8', 'access': 'r'},
  295. {'name': 'vel_estimate', 'id': 249, 'type': 'float', 'access': 'r'},
  296. {'name': 'vel_estimate_counts', 'id': 250, 'type': 'float', 'access': 'r'},
  297. {'name': 'calib_scan_response', 'id': 251, 'type': 'float', 'access': 'r'},
  298. {'name': 'pos_abs', 'id': 252, 'type': 'int32', 'access': 'rw'},
  299. {'name': 'spi_error_rate', 'id': 253, 'type': 'float', 'access': 'r'},
  300. {'name': 'config', 'type': 'object', 'members': [
  301. {'name': 'mode', 'id': 254, 'type': 'int32', 'access': 'rw'},
  302. {'name': 'use_index', 'id': 255, 'type': 'bool', 'access': 'rw'},
  303. {'name': 'find_idx_on_lockin_only', 'id': 256, 'type': 'bool', 'access': 'rw'},
  304. {'name': 'abs_spi_cs_gpio_pin', 'id': 257, 'type': 'uint16', 'access': 'rw'},
  305. {'name': 'zero_count_on_find_idx', 'id': 258, 'type': 'bool', 'access': 'rw'},
  306. {'name': 'cpr', 'id': 259, 'type': 'int32', 'access': 'rw'},
  307. {'name': 'offset', 'id': 260, 'type': 'int32', 'access': 'rw'},
  308. {'name': 'pre_calibrated', 'id': 261, 'type': 'bool', 'access': 'rw'},
  309. {'name': 'offset_float', 'id': 262, 'type': 'float', 'access': 'rw'},
  310. {'name': 'enable_phase_interpolation', 'id': 263, 'type': 'bool', 'access': 'rw'},
  311. {'name': 'bandwidth', 'id': 264, 'type': 'float', 'access': 'rw'},
  312. {'name': 'calib_range', 'id': 265, 'type': 'float', 'access': 'rw'},
  313. {'name': 'calib_scan_distance', 'id': 266, 'type': 'float', 'access': 'rw'},
  314. {'name': 'calib_scan_omega', 'id': 267, 'type': 'float', 'access': 'rw'},
  315. {'name': 'idx_search_unidirectional', 'id': 268, 'type': 'bool', 'access': 'rw'},
  316. {'name': 'ignore_illegal_hall_state', 'id': 269, 'type': 'bool', 'access': 'rw'},
  317. {'name': 'sincos_gpio_pin_sin', 'id': 270, 'type': 'uint16', 'access': 'rw'},
  318. {'name': 'sincos_gpio_pin_cos', 'id': 271, 'type': 'uint16', 'access': 'rw'}]},
  319. {'name': 'set_linear_count', 'id': 272, 'type': 'function', 'inputs': [
  320. {'name': 'count', 'id': 273, 'type': 'int32', 'access': 'rw'}], 'outputs': []}]},
  321. {'name': 'sensorless_estimator', 'type': 'object', 'members': [
  322. {'name': 'error', 'id': 274, 'type': 'int32', 'access': 'rw'},
  323. {'name': 'phase', 'id': 275, 'type': 'float', 'access': 'rw'},
  324. {'name': 'pll_pos', 'id': 276, 'type': 'float', 'access': 'rw'},
  325. {'name': 'vel_estimate', 'id': 277, 'type': 'float', 'access': 'rw'},
  326. {'name': 'config', 'type': 'object', 'members': [
  327. {'name': 'observer_gain', 'id': 278, 'type': 'float', 'access': 'rw'},
  328. {'name': 'pll_bandwidth', 'id': 279, 'type': 'float', 'access': 'rw'},
  329. {'name': 'pm_flux_linkage', 'id': 280, 'type': 'float', 'access': 'rw'}]}]},
  330. {'name': 'trap_traj', 'type': 'object', 'members': [
  331. {'name': 'config', 'type': 'object', 'members': [
  332. {'name': 'vel_limit', 'id': 281, 'type': 'float', 'access': 'rw'},
  333. {'name': 'accel_limit', 'id': 282, 'type': 'float', 'access': 'rw'},
  334. {'name': 'decel_limit', 'id': 283, 'type': 'float', 'access': 'rw'}]}]},
  335. {'name': 'min_endstop', 'type': 'object', 'members': [
  336. {'name': 'endstop_state', 'id': 284, 'type': 'bool', 'access': 'r'},
  337. {'name': 'config', 'type': 'object', 'members': [
  338. {'name': 'gpio_num', 'id': 285, 'type': 'uint16', 'access': 'rw'},
  339. {'name': 'enabled', 'id': 286, 'type': 'bool', 'access': 'rw'},
  340. {'name': 'offset', 'id': 287, 'type': 'float', 'access': 'rw'},
  341. {'name': 'is_active_high', 'id': 288, 'type': 'bool', 'access': 'rw'},
  342. {'name': 'pullup', 'id': 289, 'type': 'bool', 'access': 'rw'},
  343. {'name': 'debounce_ms', 'id': 290, 'type': 'uint32', 'access': 'rw'}]}]},
  344. {'name': 'max_endstop', 'type': 'object', 'members': [
  345. {'name': 'endstop_state', 'id': 291, 'type': 'bool', 'access': 'r'},
  346. {'name': 'config', 'type': 'object', 'members': [
  347. {'name': 'gpio_num', 'id': 292, 'type': 'uint16', 'access': 'rw'},
  348. {'name': 'enabled', 'id': 293, 'type': 'bool', 'access': 'rw'},
  349. {'name': 'offset', 'id': 294, 'type': 'float', 'access': 'rw'},
  350. {'name': 'is_active_high', 'id': 295, 'type': 'bool', 'access': 'rw'},
  351. {'name': 'pullup', 'id': 296, 'type': 'bool', 'access': 'rw'},
  352. {'name': 'debounce_ms', 'id': 297, 'type': 'uint32', 'access': 'rw'}]}]},
  353. {'name': 'watchdog_feed', 'id': 298, 'type': 'function', 'inputs': [], 'outputs': []},
  354. {'name': 'clear_errors', 'id': 299, 'type': 'function', 'inputs': [], 'outputs': []}]},
  355. {'name': 'axis1', 'type': 'object', 'members': [
  356. {'name': 'error', 'id': 300, 'type': 'int32', 'access': 'rw'},
  357. {'name': 'step_dir_active', 'id': 301, 'type': 'bool', 'access': 'r'},
  358. {'name': 'current_state', 'id': 302, 'type': 'int32', 'access': 'r'},
  359. {'name': 'requested_state', 'id': 303, 'type': 'int32', 'access': 'rw'},
  360. {'name': 'loop_counter', 'id': 304, 'type': 'uint32', 'access': 'r'},
  361. {'name': 'lockin_state', 'id': 305, 'type': 'int32', 'access': 'r'},
  362. {'name': 'is_homed', 'id': 306, 'type': 'bool', 'access': 'rw'},
  363. {'name': 'config', 'type': 'object', 'members': [
  364. {'name': 'startup_motor_calibration', 'id': 307, 'type': 'bool', 'access': 'rw'},
  365. {'name': 'startup_encoder_index_search', 'id': 308, 'type': 'bool', 'access': 'rw'},
  366. {'name': 'startup_encoder_offset_calibration', 'id': 309, 'type': 'bool', 'access': 'rw'},
  367. {'name': 'startup_closed_loop_control', 'id': 310, 'type': 'bool', 'access': 'rw'},
  368. {'name': 'startup_sensorless_control', 'id': 311, 'type': 'bool', 'access': 'rw'},
  369. {'name': 'startup_homing', 'id': 312, 'type': 'bool', 'access': 'rw'},
  370. {'name': 'enable_step_dir', 'id': 313, 'type': 'bool', 'access': 'rw'},
  371. {'name': 'step_dir_always_on', 'id': 314, 'type': 'bool', 'access': 'rw'},
  372. {'name': 'turns_per_step', 'id': 315, 'type': 'float', 'access': 'rw'},
  373. {'name': 'watchdog_timeout', 'id': 316, 'type': 'float', 'access': 'rw'},
  374. {'name': 'enable_watchdog', 'id': 317, 'type': 'bool', 'access': 'rw'},
  375. {'name': 'step_gpio_pin', 'id': 318, 'type': 'uint16', 'access': 'rw'},
  376. {'name': 'dir_gpio_pin', 'id': 319, 'type': 'uint16', 'access': 'rw'},
  377. {'name': 'calibration_lockin', 'type': 'object', 'members': [
  378. {'name': 'current', 'id': 320, 'type': 'float', 'access': 'rw'},
  379. {'name': 'ramp_time', 'id': 321, 'type': 'float', 'access': 'rw'},
  380. {'name': 'ramp_distance', 'id': 322, 'type': 'float', 'access': 'rw'},
  381. {'name': 'accel', 'id': 323, 'type': 'float', 'access': 'rw'},
  382. {'name': 'vel', 'id': 324, 'type': 'float', 'access': 'rw'}]},
  383. {'name': 'sensorless_ramp', 'type': 'object', 'members': [
  384. {'name': 'current', 'id': 325, 'type': 'float', 'access': 'rw'},
  385. {'name': 'ramp_time', 'id': 326, 'type': 'float', 'access': 'rw'},
  386. {'name': 'ramp_distance', 'id': 327, 'type': 'float', 'access': 'rw'},
  387. {'name': 'accel', 'id': 328, 'type': 'float', 'access': 'rw'},
  388. {'name': 'vel', 'id': 329, 'type': 'float', 'access': 'rw'},
  389. {'name': 'finish_distance', 'id': 330, 'type': 'float', 'access': 'rw'},
  390. {'name': 'finish_on_vel', 'id': 331, 'type': 'bool', 'access': 'rw'},
  391. {'name': 'finish_on_distance', 'id': 332, 'type': 'bool', 'access': 'rw'},
  392. {'name': 'finish_on_enc_idx', 'id': 333, 'type': 'bool', 'access': 'rw'}]},
  393. {'name': 'general_lockin', 'type': 'object', 'members': [
  394. {'name': 'current', 'id': 334, 'type': 'float', 'access': 'rw'},
  395. {'name': 'ramp_time', 'id': 335, 'type': 'float', 'access': 'rw'},
  396. {'name': 'ramp_distance', 'id': 336, 'type': 'float', 'access': 'rw'},
  397. {'name': 'accel', 'id': 337, 'type': 'float', 'access': 'rw'},
  398. {'name': 'vel', 'id': 338, 'type': 'float', 'access': 'rw'},
  399. {'name': 'finish_distance', 'id': 339, 'type': 'float', 'access': 'rw'},
  400. {'name': 'finish_on_vel', 'id': 340, 'type': 'bool', 'access': 'rw'},
  401. {'name': 'finish_on_distance', 'id': 341, 'type': 'bool', 'access': 'rw'},
  402. {'name': 'finish_on_enc_idx', 'id': 342, 'type': 'bool', 'access': 'rw'}]},
  403. {'name': 'can_node_id', 'id': 343, 'type': 'uint32', 'access': 'rw'},
  404. {'name': 'can_node_id_extended', 'id': 344, 'type': 'bool', 'access': 'rw'},
  405. {'name': 'can_heartbeat_rate_ms', 'id': 345, 'type': 'uint32', 'access': 'rw'}]},
  406. {'name': 'fet_thermistor', 'type': 'object', 'members': [
  407. {'name': 'error', 'id': 346, 'type': 'int32', 'access': 'rw'},
  408. {'name': 'temperature', 'id': 347, 'type': 'float', 'access': 'r'},
  409. {'name': 'config', 'type': 'object', 'members': [
  410. {'name': 'temp_limit_lower', 'id': 348, 'type': 'float', 'access': 'rw'},
  411. {'name': 'temp_limit_upper', 'id': 349, 'type': 'float', 'access': 'rw'},
  412. {'name': 'enabled', 'id': 350, 'type': 'bool', 'access': 'rw'}]}]},
  413. {'name': 'motor_thermistor', 'type': 'object', 'members': [
  414. {'name': 'error', 'id': 351, 'type': 'int32', 'access': 'rw'},
  415. {'name': 'temperature', 'id': 352, 'type': 'float', 'access': 'r'},
  416. {'name': 'config', 'type': 'object', 'members': [
  417. {'name': 'gpio_pin', 'id': 353, 'type': 'uint16', 'access': 'rw'},
  418. {'name': 'poly_coefficient_0', 'id': 354, 'type': 'float', 'access': 'rw'},
  419. {'name': 'poly_coefficient_1', 'id': 355, 'type': 'float', 'access': 'rw'},
  420. {'name': 'poly_coefficient_2', 'id': 356, 'type': 'float', 'access': 'rw'},
  421. {'name': 'poly_coefficient_3', 'id': 357, 'type': 'float', 'access': 'rw'},
  422. {'name': 'temp_limit_lower', 'id': 358, 'type': 'float', 'access': 'rw'},
  423. {'name': 'temp_limit_upper', 'id': 359, 'type': 'float', 'access': 'rw'},
  424. {'name': 'enabled', 'id': 360, 'type': 'bool', 'access': 'rw'}]}]},
  425. {'name': 'motor', 'type': 'object', 'members': [
  426. {'name': 'error', 'id': 361, 'type': 'int32', 'access': 'rw'},
  427. {'name': 'armed_state', 'id': 362, 'type': 'int32', 'access': 'r'},
  428. {'name': 'is_calibrated', 'id': 363, 'type': 'bool', 'access': 'r'},
  429. {'name': 'current_meas_phB', 'id': 364, 'type': 'float', 'access': 'r'},
  430. {'name': 'current_meas_phC', 'id': 365, 'type': 'float', 'access': 'r'},
  431. {'name': 'DC_calib_phB', 'id': 366, 'type': 'float', 'access': 'rw'},
  432. {'name': 'DC_calib_phC', 'id': 367, 'type': 'float', 'access': 'rw'},
  433. {'name': 'phase_current_rev_gain', 'id': 368, 'type': 'float', 'access': 'rw'},
  434. {'name': 'effective_current_lim', 'id': 369, 'type': 'float', 'access': 'r'},
  435. {'name': 'current_control', 'type': 'object', 'members': [
  436. {'name': 'p_gain', 'id': 370, 'type': 'float', 'access': 'rw'},
  437. {'name': 'i_gain', 'id': 371, 'type': 'float', 'access': 'rw'},
  438. {'name': 'v_current_control_integral_d', 'id': 372, 'type': 'float', 'access': 'rw'},
  439. {'name': 'v_current_control_integral_q', 'id': 373, 'type': 'float', 'access': 'rw'},
  440. {'name': 'Ibus', 'id': 374, 'type': 'float', 'access': 'rw'},
  441. {'name': 'final_v_alpha', 'id': 375, 'type': 'float', 'access': 'rw'},
  442. {'name': 'final_v_beta', 'id': 376, 'type': 'float', 'access': 'rw'},
  443. {'name': 'Id_setpoint', 'id': 377, 'type': 'float', 'access': 'rw'},
  444. {'name': 'Iq_setpoint', 'id': 378, 'type': 'float', 'access': 'r'},
  445. {'name': 'Iq_measured', 'id': 379, 'type': 'float', 'access': 'rw'},
  446. {'name': 'Id_measured', 'id': 380, 'type': 'float', 'access': 'rw'},
  447. {'name': 'I_measured_report_filter_k', 'id': 381, 'type': 'float', 'access': 'rw'},
  448. {'name': 'max_allowed_current', 'id': 382, 'type': 'float', 'access': 'r'},
  449. {'name': 'overcurrent_trip_level', 'id': 383, 'type': 'float', 'access': 'r'},
  450. {'name': 'acim_rotor_flux', 'id': 384, 'type': 'float', 'access': 'rw'},
  451. {'name': 'async_phase_vel', 'id': 385, 'type': 'float', 'access': 'r'},
  452. {'name': 'async_phase_offset', 'id': 386, 'type': 'float', 'access': 'rw'}]},
  453. {'name': 'gate_driver', 'type': 'object', 'members': [
  454. {'name': 'drv_fault', 'id': 387, 'type': 'int32', 'access': 'r'}]},
  455. {'name': 'timing_log', 'type': 'object', 'members': [
  456. {'name': 'general', 'id': 388, 'type': 'uint16', 'access': 'r'},
  457. {'name': 'adc_cb_i', 'id': 389, 'type': 'uint16', 'access': 'r'},
  458. {'name': 'adc_cb_dc', 'id': 390, 'type': 'uint16', 'access': 'r'},
  459. {'name': 'meas_r', 'id': 391, 'type': 'uint16', 'access': 'r'},
  460. {'name': 'meas_l', 'id': 392, 'type': 'uint16', 'access': 'r'},
  461. {'name': 'enc_calib', 'id': 393, 'type': 'uint16', 'access': 'r'},
  462. {'name': 'idx_search', 'id': 394, 'type': 'uint16', 'access': 'r'},
  463. {'name': 'foc_voltage', 'id': 395, 'type': 'uint16', 'access': 'r'},
  464. {'name': 'foc_current', 'id': 396, 'type': 'uint16', 'access': 'r'},
  465. {'name': 'spi_start', 'id': 397, 'type': 'uint16', 'access': 'r'},
  466. {'name': 'sample_now', 'id': 398, 'type': 'uint16', 'access': 'r'},
  467. {'name': 'spi_end', 'id': 399, 'type': 'uint16', 'access': 'r'}]},
  468. {'name': 'config', 'type': 'object', 'members': [
  469. {'name': 'pre_calibrated', 'id': 400, 'type': 'bool', 'access': 'rw'},
  470. {'name': 'pole_pairs', 'id': 401, 'type': 'int32', 'access': 'rw'},
  471. {'name': 'calibration_current', 'id': 402, 'type': 'float', 'access': 'rw'},
  472. {'name': 'resistance_calib_max_voltage', 'id': 403, 'type': 'float', 'access': 'rw'},
  473. {'name': 'phase_inductance', 'id': 404, 'type': 'float', 'access': 'rw'},
  474. {'name': 'phase_resistance', 'id': 405, 'type': 'float', 'access': 'rw'},
  475. {'name': 'torque_constant', 'id': 406, 'type': 'float', 'access': 'rw'},
  476. {'name': 'direction', 'id': 407, 'type': 'int32', 'access': 'rw'},
  477. {'name': 'motor_type', 'id': 408, 'type': 'int32', 'access': 'rw'},
  478. {'name': 'current_lim', 'id': 409, 'type': 'float', 'access': 'rw'},
  479. {'name': 'current_lim_margin', 'id': 410, 'type': 'float', 'access': 'rw'},
  480. {'name': 'torque_lim', 'id': 411, 'type': 'float', 'access': 'rw'},
  481. {'name': 'inverter_temp_limit_lower', 'id': 412, 'type': 'float', 'access': 'rw'},
  482. {'name': 'inverter_temp_limit_upper', 'id': 413, 'type': 'float', 'access': 'rw'},
  483. {'name': 'requested_current_range', 'id': 414, 'type': 'float', 'access': 'rw'},
  484. {'name': 'current_control_bandwidth', 'id': 415, 'type': 'float', 'access': 'rw'},
  485. {'name': 'acim_slip_velocity', 'id': 416, 'type': 'float', 'access': 'rw'},
  486. {'name': 'acim_gain_min_flux', 'id': 417, 'type': 'float', 'access': 'rw'},
  487. {'name': 'acim_autoflux_min_Id', 'id': 418, 'type': 'float', 'access': 'rw'},
  488. {'name': 'acim_autoflux_enable', 'id': 419, 'type': 'bool', 'access': 'rw'},
  489. {'name': 'acim_autoflux_attack_gain', 'id': 420, 'type': 'float', 'access': 'rw'},
  490. {'name': 'acim_autoflux_decay_gain', 'id': 421, 'type': 'float', 'access': 'rw'}]}]},
  491. {'name': 'controller', 'type': 'object', 'members': [
  492. {'name': 'error', 'id': 422, 'type': 'int32', 'access': 'rw'},
  493. {'name': 'input_pos', 'id': 423, 'type': 'float', 'access': 'rw'},
  494. {'name': 'input_vel', 'id': 424, 'type': 'float', 'access': 'rw'},
  495. {'name': 'input_torque', 'id': 425, 'type': 'float', 'access': 'rw'},
  496. {'name': 'pos_setpoint', 'id': 426, 'type': 'float', 'access': 'r'},
  497. {'name': 'vel_setpoint', 'id': 427, 'type': 'float', 'access': 'r'},
  498. {'name': 'torque_setpoint', 'id': 428, 'type': 'float', 'access': 'r'},
  499. {'name': 'trajectory_done', 'id': 429, 'type': 'bool', 'access': 'r'},
  500. {'name': 'vel_integrator_torque', 'id': 430, 'type': 'float', 'access': 'rw'},
  501. {'name': 'anticogging_valid', 'id': 431, 'type': 'bool', 'access': 'rw'},
  502. {'name': 'config', 'type': 'object', 'members': [
  503. {'name': 'gain_scheduling_width', 'id': 432, 'type': 'float', 'access': 'rw'},
  504. {'name': 'enable_vel_limit', 'id': 433, 'type': 'bool', 'access': 'rw'},
  505. {'name': 'enable_current_mode_vel_limit', 'id': 434, 'type': 'bool', 'access': 'rw'},
  506. {'name': 'enable_gain_scheduling', 'id': 435, 'type': 'bool', 'access': 'rw'},
  507. {'name': 'enable_overspeed_error', 'id': 436, 'type': 'bool', 'access': 'rw'},
  508. {'name': 'control_mode', 'id': 437, 'type': 'int32', 'access': 'rw'},
  509. {'name': 'input_mode', 'id': 438, 'type': 'int32', 'access': 'rw'},
  510. {'name': 'pos_gain', 'id': 439, 'type': 'float', 'access': 'rw'},
  511. {'name': 'vel_gain', 'id': 440, 'type': 'float', 'access': 'rw'},
  512. {'name': 'vel_integrator_gain', 'id': 441, 'type': 'float', 'access': 'rw'},
  513. {'name': 'vel_limit', 'id': 442, 'type': 'float', 'access': 'rw'},
  514. {'name': 'vel_limit_tolerance', 'id': 443, 'type': 'float', 'access': 'rw'},
  515. {'name': 'vel_ramp_rate', 'id': 444, 'type': 'float', 'access': 'rw'},
  516. {'name': 'torque_ramp_rate', 'id': 445, 'type': 'float', 'access': 'rw'},
  517. {'name': 'circular_setpoints', 'id': 446, 'type': 'bool', 'access': 'rw'},
  518. {'name': 'circular_setpoint_range', 'id': 447, 'type': 'float', 'access': 'rw'},
  519. {'name': 'homing_speed', 'id': 448, 'type': 'float', 'access': 'rw'},
  520. {'name': 'inertia', 'id': 449, 'type': 'float', 'access': 'rw'},
  521. {'name': 'axis_to_mirror', 'id': 450, 'type': 'uint8', 'access': 'rw'},
  522. {'name': 'mirror_ratio', 'id': 451, 'type': 'float', 'access': 'rw'},
  523. {'name': 'load_encoder_axis', 'id': 452, 'type': 'uint8', 'access': 'rw'},
  524. {'name': 'input_filter_bandwidth', 'id': 453, 'type': 'float', 'access': 'rw'},
  525. {'name': 'anticogging', 'type': 'object', 'members': [
  526. {'name': 'index', 'id': 454, 'type': 'uint32', 'access': 'r'},
  527. {'name': 'pre_calibrated', 'id': 455, 'type': 'bool', 'access': 'rw'},
  528. {'name': 'calib_anticogging', 'id': 456, 'type': 'bool', 'access': 'r'},
  529. {'name': 'calib_pos_threshold', 'id': 457, 'type': 'float', 'access': 'rw'},
  530. {'name': 'calib_vel_threshold', 'id': 458, 'type': 'float', 'access': 'rw'},
  531. {'name': 'cogging_ratio', 'id': 459, 'type': 'float', 'access': 'r'},
  532. {'name': 'anticogging_enabled', 'id': 460, 'type': 'bool', 'access': 'rw'}]}]},
  533. {'name': 'move_incremental', 'id': 461, 'type': 'function', 'inputs': [
  534. {'name': 'displacement', 'id': 462, 'type': 'float', 'access': 'rw'},
  535. {'name': 'from_input_pos', 'id': 463, 'type': 'bool', 'access': 'rw'}], 'outputs': []},
  536. {'name': 'start_anticogging_calibration', 'id': 464, 'type': 'function', 'inputs': [], 'outputs': []}]},
  537. {'name': 'encoder', 'type': 'object', 'members': [
  538. {'name': 'error', 'id': 465, 'type': 'int32', 'access': 'rw'},
  539. {'name': 'is_ready', 'id': 466, 'type': 'bool', 'access': 'r'},
  540. {'name': 'index_found', 'id': 467, 'type': 'bool', 'access': 'r'},
  541. {'name': 'shadow_count', 'id': 468, 'type': 'int32', 'access': 'r'},
  542. {'name': 'count_in_cpr', 'id': 469, 'type': 'int32', 'access': 'r'},
  543. {'name': 'interpolation', 'id': 470, 'type': 'float', 'access': 'r'},
  544. {'name': 'phase', 'id': 471, 'type': 'float', 'access': 'r'},
  545. {'name': 'pos_estimate', 'id': 472, 'type': 'float', 'access': 'r'},
  546. {'name': 'pos_estimate_counts', 'id': 473, 'type': 'float', 'access': 'r'},
  547. {'name': 'pos_cpr', 'id': 474, 'type': 'float', 'access': 'r'},
  548. {'name': 'pos_cpr_counts', 'id': 475, 'type': 'float', 'access': 'r'},
  549. {'name': 'pos_circular', 'id': 476, 'type': 'float', 'access': 'r'},
  550. {'name': 'hall_state', 'id': 477, 'type': 'uint8', 'access': 'r'},
  551. {'name': 'vel_estimate', 'id': 478, 'type': 'float', 'access': 'r'},
  552. {'name': 'vel_estimate_counts', 'id': 479, 'type': 'float', 'access': 'r'},
  553. {'name': 'calib_scan_response', 'id': 480, 'type': 'float', 'access': 'r'},
  554. {'name': 'pos_abs', 'id': 481, 'type': 'int32', 'access': 'rw'},
  555. {'name': 'spi_error_rate', 'id': 482, 'type': 'float', 'access': 'r'},
  556. {'name': 'config', 'type': 'object', 'members': [
  557. {'name': 'mode', 'id': 483, 'type': 'int32', 'access': 'rw'},
  558. {'name': 'use_index', 'id': 484, 'type': 'bool', 'access': 'rw'},
  559. {'name': 'find_idx_on_lockin_only', 'id': 485, 'type': 'bool', 'access': 'rw'},
  560. {'name': 'abs_spi_cs_gpio_pin', 'id': 486, 'type': 'uint16', 'access': 'rw'},
  561. {'name': 'zero_count_on_find_idx', 'id': 487, 'type': 'bool', 'access': 'rw'},
  562. {'name': 'cpr', 'id': 488, 'type': 'int32', 'access': 'rw'},
  563. {'name': 'offset', 'id': 489, 'type': 'int32', 'access': 'rw'},
  564. {'name': 'pre_calibrated', 'id': 490, 'type': 'bool', 'access': 'rw'},
  565. {'name': 'offset_float', 'id': 491, 'type': 'float', 'access': 'rw'},
  566. {'name': 'enable_phase_interpolation', 'id': 492, 'type': 'bool', 'access': 'rw'},
  567. {'name': 'bandwidth', 'id': 493, 'type': 'float', 'access': 'rw'},
  568. {'name': 'calib_range', 'id': 494, 'type': 'float', 'access': 'rw'},
  569. {'name': 'calib_scan_distance', 'id': 495, 'type': 'float', 'access': 'rw'},
  570. {'name': 'calib_scan_omega', 'id': 496, 'type': 'float', 'access': 'rw'},
  571. {'name': 'idx_search_unidirectional', 'id': 497, 'type': 'bool', 'access': 'rw'},
  572. {'name': 'ignore_illegal_hall_state', 'id': 498, 'type': 'bool', 'access': 'rw'},
  573. {'name': 'sincos_gpio_pin_sin', 'id': 499, 'type': 'uint16', 'access': 'rw'},
  574. {'name': 'sincos_gpio_pin_cos', 'id': 500, 'type': 'uint16', 'access': 'rw'}]},
  575. {'name': 'set_linear_count', 'id': 501, 'type': 'function', 'inputs': [
  576. {'name': 'count', 'id': 502, 'type': 'int32', 'access': 'rw'}], 'outputs': []}]},
  577. {'name': 'sensorless_estimator', 'type': 'object', 'members': [
  578. {'name': 'error', 'id': 503, 'type': 'int32', 'access': 'rw'},
  579. {'name': 'phase', 'id': 504, 'type': 'float', 'access': 'rw'},
  580. {'name': 'pll_pos', 'id': 505, 'type': 'float', 'access': 'rw'},
  581. {'name': 'vel_estimate', 'id': 506, 'type': 'float', 'access': 'rw'},
  582. {'name': 'config', 'type': 'object', 'members': [
  583. {'name': 'observer_gain', 'id': 507, 'type': 'float', 'access': 'rw'},
  584. {'name': 'pll_bandwidth', 'id': 508, 'type': 'float', 'access': 'rw'},
  585. {'name': 'pm_flux_linkage', 'id': 509, 'type': 'float', 'access': 'rw'}]}]},
  586. {'name': 'trap_traj', 'type': 'object', 'members': [
  587. {'name': 'config', 'type': 'object', 'members': [
  588. {'name': 'vel_limit', 'id': 510, 'type': 'float', 'access': 'rw'},
  589. {'name': 'accel_limit', 'id': 511, 'type': 'float', 'access': 'rw'},
  590. {'name': 'decel_limit', 'id': 512, 'type': 'float', 'access': 'rw'}]}]},
  591. {'name': 'min_endstop', 'type': 'object', 'members': [
  592. {'name': 'endstop_state', 'id': 513, 'type': 'bool', 'access': 'r'},
  593. {'name': 'config', 'type': 'object', 'members': [
  594. {'name': 'gpio_num', 'id': 514, 'type': 'uint16', 'access': 'rw'},
  595. {'name': 'enabled', 'id': 515, 'type': 'bool', 'access': 'rw'},
  596. {'name': 'offset', 'id': 516, 'type': 'float', 'access': 'rw'},
  597. {'name': 'is_active_high', 'id': 517, 'type': 'bool', 'access': 'rw'},
  598. {'name': 'pullup', 'id': 518, 'type': 'bool', 'access': 'rw'},
  599. {'name': 'debounce_ms', 'id': 519, 'type': 'uint32', 'access': 'rw'}]}]},
  600. {'name': 'max_endstop', 'type': 'object', 'members': [
  601. {'name': 'endstop_state', 'id': 520, 'type': 'bool', 'access': 'r'},
  602. {'name': 'config', 'type': 'object', 'members': [
  603. {'name': 'gpio_num', 'id': 521, 'type': 'uint16', 'access': 'rw'},
  604. {'name': 'enabled', 'id': 522, 'type': 'bool', 'access': 'rw'},
  605. {'name': 'offset', 'id': 523, 'type': 'float', 'access': 'rw'},
  606. {'name': 'is_active_high', 'id': 524, 'type': 'bool', 'access': 'rw'},
  607. {'name': 'pullup', 'id': 525, 'type': 'bool', 'access': 'rw'},
  608. {'name': 'debounce_ms', 'id': 526, 'type': 'uint32', 'access': 'rw'}]}]},
  609. {'name': 'watchdog_feed', 'id': 527, 'type': 'function', 'inputs': [], 'outputs': []},
  610. {'name': 'clear_errors', 'id': 528, 'type': 'function', 'inputs': [], 'outputs': []}]},
  611. {'name': 'can', 'type': 'object', 'members': [
  612. {'name': 'error', 'id': 529, 'type': 'int32', 'access': 'rw'},
  613. {'name': 'config', 'type': 'object', 'members': [
  614. {'name': 'baud_rate', 'id': 530, 'type': 'uint32', 'access': 'r'},
  615. {'name': 'protocol', 'id': 531, 'type': 'int32', 'access': 'rw'}]},
  616. {'name': 'set_baud_rate', 'id': 532, 'type': 'function', 'inputs': [
  617. {'name': 'baudRate', 'id': 533, 'type': 'uint32', 'access': 'rw'}], 'outputs': []}]},
  618. {'name': 'test_property', 'id': 534, 'type': 'uint32', 'access': 'rw'},
  619. {'name': 'test_function', 'id': 535, 'type': 'function', 'inputs': [
  620. {'name': 'delta', 'id': 536, 'type': 'int32', 'access': 'rw'}], 'outputs': [
  621. {'name': 'cnt', 'id': 537, 'type': 'int32', 'access': 'r'}]},
  622. {'name': 'get_oscilloscope_val', 'id': 538, 'type': 'function', 'inputs': [
  623. {'name': 'index', 'id': 539, 'type': 'uint32', 'access': 'rw'}], 'outputs': [
  624. {'name': 'val', 'id': 540, 'type': 'float', 'access': 'r'}]},
  625. {'name': 'get_adc_voltage', 'id': 541, 'type': 'function', 'inputs': [
  626. {'name': 'gpio', 'id': 542, 'type': 'uint32', 'access': 'rw'}], 'outputs': [
  627. {'name': 'voltage', 'id': 543, 'type': 'float', 'access': 'r'}]},
  628. {'name': 'save_configuration', 'id': 544, 'type': 'function', 'inputs': [], 'outputs': []},
  629. {'name': 'erase_configuration', 'id': 545, 'type': 'function', 'inputs': [], 'outputs': []},
  630. {'name': 'reboot', 'id': 546, 'type': 'function', 'inputs': [], 'outputs': []},
  631. {'name': 'enter_dfu_mode', 'id': 547, 'type': 'function', 'inputs': [], 'outputs': []}]
  632. malformed member : unsupported codec json
  633. Connected to ODrive. ODrive 35619129216333, hw v3.6-56, fw v0.5.1-dev, sdk v0.5.1
  634. Already connected. Disconnecting and reconnecting.
  635. ConfigurationValue 1
  636. InterfaceNumber 0,0
  637. EndpointAddress 130
  638. InterfaceNumber 1,0
  639. EndpointAddress 1
  640. EndpointAddress 129
  641. InterfaceNumber 2,0
  642. EndpointAddress 3
  643. EndpointAddress 131
  644.  
  645. Kernel Driver was not attached
  646. EndpointAddress for writing 3
  647. EndpointAddress for reading 131
  648. receiver thread is exiting: Traceback (most recent call last):
  649. File "/usr/local/lib/python3.7/dist-packages/fibre/usbbulk_transport.py", line 127, in get_packet
  650. ret = self.epr.read(bufferLen, timeout)
  651. File "/home/pi/.local/lib/python3.7/site-packages/usb/core.py", line 421, in read
  652. return self.device.read(self, size_or_buffer, timeout)
  653. File "/home/pi/.local/lib/python3.7/site-packages/usb/core.py", line 1022, in read
  654. self.__get_timeout(timeout))
  655. File "/home/pi/.local/lib/python3.7/site-packages/usb/backend/libusb1.py", line 851, in bulk_read
  656. timeout)
  657. File "/home/pi/.local/lib/python3.7/site-packages/usb/backend/libusb1.py", line 954, in __read
  658. _check(retval)
  659. File "/home/pi/.local/lib/python3.7/site-packages/usb/backend/libusb1.py", line 604, in _check
  660. raise USBError(_strerror(ret), ret, _libusb_errno[ret])
  661. usb.core.USBError: [Errno 19] No such device (it may have been disconnected)
  662.  
  663. During handling of the above exception, another exception occurred:
  664.  
  665. Traceback (most recent call last):
  666. File "/usr/local/lib/python3.7/dist-packages/fibre/protocol.py", line 241, in receiver_thread
  667. response = self._input.get_packet(deadline)
  668. File "/usr/local/lib/python3.7/dist-packages/fibre/usbbulk_transport.py", line 134, in get_packet
  669. raise fibre.protocol.ChannelBrokenException()
  670. fibre.protocol.ChannelBrokenException
  671.  
  672. Connecting to device on USB device bus 1 device 19
  673. Device reported JSON version ID: 2604684226
  674. JSON: [
  675. {'name': '', 'id': 0, 'type': 'json', 'access': 'r'},
  676. {'name': 'vbus_voltage', 'id': 1, 'type': 'float', 'access': 'r'},
  677. {'name': 'ibus', 'id': 2, 'type': 'float', 'access': 'r'},
  678. {'name': 'ibus_report_filter_k', 'id': 3, 'type': 'float', 'access': 'rw'},
  679. {'name': 'serial_number', 'id': 4, 'type': 'uint64', 'access': 'r'},
  680. {'name': 'hw_version_major', 'id': 5, 'type': 'uint8', 'access': 'r'},
  681. {'name': 'hw_version_minor', 'id': 6, 'type': 'uint8', 'access': 'r'},
  682. {'name': 'hw_version_variant', 'id': 7, 'type': 'uint8', 'access': 'r'},
  683. {'name': 'fw_version_major', 'id': 8, 'type': 'uint8', 'access': 'r'},
  684. {'name': 'fw_version_minor', 'id': 9, 'type': 'uint8', 'access': 'r'},
  685. {'name': 'fw_version_revision', 'id': 10, 'type': 'uint8', 'access': 'r'},
  686. {'name': 'fw_version_unreleased', 'id': 11, 'type': 'uint8', 'access': 'r'},
  687. {'name': 'brake_resistor_armed', 'id': 12, 'type': 'bool', 'access': 'r'},
  688. {'name': 'brake_resistor_saturated', 'id': 13, 'type': 'bool', 'access': 'rw'},
  689. {'name': 'system_stats', 'type': 'object', 'members': [
  690. {'name': 'uptime', 'id': 14, 'type': 'uint32', 'access': 'r'},
  691. {'name': 'min_heap_space', 'id': 15, 'type': 'uint32', 'access': 'r'},
  692. {'name': 'min_stack_space_axis0', 'id': 16, 'type': 'uint32', 'access': 'r'},
  693. {'name': 'min_stack_space_axis1', 'id': 17, 'type': 'uint32', 'access': 'r'},
  694. {'name': 'min_stack_space_comms', 'id': 18, 'type': 'uint32', 'access': 'r'},
  695. {'name': 'min_stack_space_usb', 'id': 19, 'type': 'uint32', 'access': 'r'},
  696. {'name': 'min_stack_space_uart', 'id': 20, 'type': 'uint32', 'access': 'r'},
  697. {'name': 'min_stack_space_can', 'id': 21, 'type': 'uint32', 'access': 'r'},
  698. {'name': 'min_stack_space_usb_irq', 'id': 22, 'type': 'uint32', 'access': 'r'},
  699. {'name': 'min_stack_space_startup', 'id': 23, 'type': 'uint32', 'access': 'r'},
  700. {'name': 'stack_usage_axis0', 'id': 24, 'type': 'uint32', 'access': 'r'},
  701. {'name': 'stack_usage_axis1', 'id': 25, 'type': 'uint32', 'access': 'r'},
  702. {'name': 'stack_usage_comms', 'id': 26, 'type': 'uint32', 'access': 'r'},
  703. {'name': 'stack_usage_usb', 'id': 27, 'type': 'uint32', 'access': 'r'},
  704. {'name': 'stack_usage_uart', 'id': 28, 'type': 'uint32', 'access': 'r'},
  705. {'name': 'stack_usage_usb_irq', 'id': 29, 'type': 'uint32', 'access': 'r'},
  706. {'name': 'stack_usage_startup', 'id': 30, 'type': 'uint32', 'access': 'r'},
  707. {'name': 'stack_usage_can', 'id': 31, 'type': 'uint32', 'access': 'r'},
  708. {'name': 'usb', 'type': 'object', 'members': [
  709. {'name': 'rx_cnt', 'id': 32, 'type': 'uint32', 'access': 'r'},
  710. {'name': 'tx_cnt', 'id': 33, 'type': 'uint32', 'access': 'r'},
  711. {'name': 'tx_overrun_cnt', 'id': 34, 'type': 'uint32', 'access': 'r'}]},
  712. {'name': 'i2c', 'type': 'object', 'members': [
  713. {'name': 'addr', 'id': 35, 'type': 'uint8', 'access': 'r'},
  714. {'name': 'addr_match_cnt', 'id': 36, 'type': 'uint32', 'access': 'r'},
  715. {'name': 'rx_cnt', 'id': 37, 'type': 'uint32', 'access': 'r'},
  716. {'name': 'error_cnt', 'id': 38, 'type': 'uint32', 'access': 'r'}]}]},
  717. {'name': 'config', 'type': 'object', 'members': [
  718. {'name': 'enable_uart', 'id': 39, 'type': 'bool', 'access': 'rw'},
  719. {'name': 'uart_baudrate', 'id': 40, 'type': 'uint32', 'access': 'rw'},
  720. {'name': 'enable_i2c_instead_of_can', 'id': 41, 'type': 'bool', 'access': 'rw'},
  721. {'name': 'enable_ascii_protocol_on_usb', 'id': 42, 'type': 'bool', 'access': 'rw'},
  722. {'name': 'max_regen_current', 'id': 43, 'type': 'float', 'access': 'rw'},
  723. {'name': 'brake_resistance', 'id': 44, 'type': 'float', 'access': 'rw'},
  724. {'name': 'dc_bus_undervoltage_trip_level', 'id': 45, 'type': 'float', 'access': 'rw'},
  725. {'name': 'dc_bus_overvoltage_trip_level', 'id': 46, 'type': 'float', 'access': 'rw'},
  726. {'name': 'enable_dc_bus_overvoltage_ramp', 'id': 47, 'type': 'bool', 'access': 'rw'},
  727. {'name': 'dc_bus_overvoltage_ramp_start', 'id': 48, 'type': 'float', 'access': 'rw'},
  728. {'name': 'dc_bus_overvoltage_ramp_end', 'id': 49, 'type': 'float', 'access': 'rw'},
  729. {'name': 'dc_max_positive_current', 'id': 50, 'type': 'float', 'access': 'rw'},
  730. {'name': 'dc_max_negative_current', 'id': 51, 'type': 'float', 'access': 'rw'},
  731. {'name': 'gpio1_pwm_mapping', 'type': 'object', 'members': [
  732. {'name': 'endpoint', 'id': 52, 'type': 'endpoint_ref', 'access': 'rw'},
  733. {'name': 'min', 'id': 53, 'type': 'float', 'access': 'rw'},
  734. {'name': 'max', 'id': 54, 'type': 'float', 'access': 'rw'}]},
  735. {'name': 'gpio2_pwm_mapping', 'type': 'object', 'members': [
  736. {'name': 'endpoint', 'id': 55, 'type': 'endpoint_ref', 'access': 'rw'},
  737. {'name': 'min', 'id': 56, 'type': 'float', 'access': 'rw'},
  738. {'name': 'max', 'id': 57, 'type': 'float', 'access': 'rw'}]},
  739. {'name': 'gpio3_pwm_mapping', 'type': 'object', 'members': [
  740. {'name': 'endpoint', 'id': 58, 'type': 'endpoint_ref', 'access': 'rw'},
  741. {'name': 'min', 'id': 59, 'type': 'float', 'access': 'rw'},
  742. {'name': 'max', 'id': 60, 'type': 'float', 'access': 'rw'}]},
  743. {'name': 'gpio4_pwm_mapping', 'type': 'object', 'members': [
  744. {'name': 'endpoint', 'id': 61, 'type': 'endpoint_ref', 'access': 'rw'},
  745. {'name': 'min', 'id': 62, 'type': 'float', 'access': 'rw'},
  746. {'name': 'max', 'id': 63, 'type': 'float', 'access': 'rw'}]},
  747. {'name': 'gpio3_analog_mapping', 'type': 'object', 'members': [
  748. {'name': 'endpoint', 'id': 64, 'type': 'endpoint_ref', 'access': 'rw'},
  749. {'name': 'min', 'id': 65, 'type': 'float', 'access': 'rw'},
  750. {'name': 'max', 'id': 66, 'type': 'float', 'access': 'rw'}]},
  751. {'name': 'gpio4_analog_mapping', 'type': 'object', 'members': [
  752. {'name': 'endpoint', 'id': 67, 'type': 'endpoint_ref', 'access': 'rw'},
  753. {'name': 'min', 'id': 68, 'type': 'float', 'access': 'rw'},
  754. {'name': 'max', 'id': 69, 'type': 'float', 'access': 'rw'}]}]},
  755. {'name': 'user_config_loaded', 'id': 70, 'type': 'bool', 'access': 'r'},
  756. {'name': 'axis0', 'type': 'object', 'members': [
  757. {'name': 'error', 'id': 71, 'type': 'int32', 'access': 'rw'},
  758. {'name': 'step_dir_active', 'id': 72, 'type': 'bool', 'access': 'r'},
  759. {'name': 'current_state', 'id': 73, 'type': 'int32', 'access': 'r'},
  760. {'name': 'requested_state', 'id': 74, 'type': 'int32', 'access': 'rw'},
  761. {'name': 'loop_counter', 'id': 75, 'type': 'uint32', 'access': 'r'},
  762. {'name': 'lockin_state', 'id': 76, 'type': 'int32', 'access': 'r'},
  763. {'name': 'is_homed', 'id': 77, 'type': 'bool', 'access': 'rw'},
  764. {'name': 'config', 'type': 'object', 'members': [
  765. {'name': 'startup_motor_calibration', 'id': 78, 'type': 'bool', 'access': 'rw'},
  766. {'name': 'startup_encoder_index_search', 'id': 79, 'type': 'bool', 'access': 'rw'},
  767. {'name': 'startup_encoder_offset_calibration', 'id': 80, 'type': 'bool', 'access': 'rw'},
  768. {'name': 'startup_closed_loop_control', 'id': 81, 'type': 'bool', 'access': 'rw'},
  769. {'name': 'startup_sensorless_control', 'id': 82, 'type': 'bool', 'access': 'rw'},
  770. {'name': 'startup_homing', 'id': 83, 'type': 'bool', 'access': 'rw'},
  771. {'name': 'enable_step_dir', 'id': 84, 'type': 'bool', 'access': 'rw'},
  772. {'name': 'step_dir_always_on', 'id': 85, 'type': 'bool', 'access': 'rw'},
  773. {'name': 'turns_per_step', 'id': 86, 'type': 'float', 'access': 'rw'},
  774. {'name': 'watchdog_timeout', 'id': 87, 'type': 'float', 'access': 'rw'},
  775. {'name': 'enable_watchdog', 'id': 88, 'type': 'bool', 'access': 'rw'},
  776. {'name': 'step_gpio_pin', 'id': 89, 'type': 'uint16', 'access': 'rw'},
  777. {'name': 'dir_gpio_pin', 'id': 90, 'type': 'uint16', 'access': 'rw'},
  778. {'name': 'calibration_lockin', 'type': 'object', 'members': [
  779. {'name': 'current', 'id': 91, 'type': 'float', 'access': 'rw'},
  780. {'name': 'ramp_time', 'id': 92, 'type': 'float', 'access': 'rw'},
  781. {'name': 'ramp_distance', 'id': 93, 'type': 'float', 'access': 'rw'},
  782. {'name': 'accel', 'id': 94, 'type': 'float', 'access': 'rw'},
  783. {'name': 'vel', 'id': 95, 'type': 'float', 'access': 'rw'}]},
  784. {'name': 'sensorless_ramp', 'type': 'object', 'members': [
  785. {'name': 'current', 'id': 96, 'type': 'float', 'access': 'rw'},
  786. {'name': 'ramp_time', 'id': 97, 'type': 'float', 'access': 'rw'},
  787. {'name': 'ramp_distance', 'id': 98, 'type': 'float', 'access': 'rw'},
  788. {'name': 'accel', 'id': 99, 'type': 'float', 'access': 'rw'},
  789. {'name': 'vel', 'id': 100, 'type': 'float', 'access': 'rw'},
  790. {'name': 'finish_distance', 'id': 101, 'type': 'float', 'access': 'rw'},
  791. {'name': 'finish_on_vel', 'id': 102, 'type': 'bool', 'access': 'rw'},
  792. {'name': 'finish_on_distance', 'id': 103, 'type': 'bool', 'access': 'rw'},
  793. {'name': 'finish_on_enc_idx', 'id': 104, 'type': 'bool', 'access': 'rw'}]},
  794. {'name': 'general_lockin', 'type': 'object', 'members': [
  795. {'name': 'current', 'id': 105, 'type': 'float', 'access': 'rw'},
  796. {'name': 'ramp_time', 'id': 106, 'type': 'float', 'access': 'rw'},
  797. {'name': 'ramp_distance', 'id': 107, 'type': 'float', 'access': 'rw'},
  798. {'name': 'accel', 'id': 108, 'type': 'float', 'access': 'rw'},
  799. {'name': 'vel', 'id': 109, 'type': 'float', 'access': 'rw'},
  800. {'name': 'finish_distance', 'id': 110, 'type': 'float', 'access': 'rw'},
  801. {'name': 'finish_on_vel', 'id': 111, 'type': 'bool', 'access': 'rw'},
  802. {'name': 'finish_on_distance', 'id': 112, 'type': 'bool', 'access': 'rw'},
  803. {'name': 'finish_on_enc_idx', 'id': 113, 'type': 'bool', 'access': 'rw'}]},
  804. {'name': 'can_node_id', 'id': 114, 'type': 'uint32', 'access': 'rw'},
  805. {'name': 'can_node_id_extended', 'id': 115, 'type': 'bool', 'access': 'rw'},
  806. {'name': 'can_heartbeat_rate_ms', 'id': 116, 'type': 'uint32', 'access': 'rw'}]},
  807. {'name': 'fet_thermistor', 'type': 'object', 'members': [
  808. {'name': 'error', 'id': 117, 'type': 'int32', 'access': 'rw'},
  809. {'name': 'temperature', 'id': 118, 'type': 'float', 'access': 'r'},
  810. {'name': 'config', 'type': 'object', 'members': [
  811. {'name': 'temp_limit_lower', 'id': 119, 'type': 'float', 'access': 'rw'},
  812. {'name': 'temp_limit_upper', 'id': 120, 'type': 'float', 'access': 'rw'},
  813. {'name': 'enabled', 'id': 121, 'type': 'bool', 'access': 'rw'}]}]},
  814. {'name': 'motor_thermistor', 'type': 'object', 'members': [
  815. {'name': 'error', 'id': 122, 'type': 'int32', 'access': 'rw'},
  816. {'name': 'temperature', 'id': 123, 'type': 'float', 'access': 'r'},
  817. {'name': 'config', 'type': 'object', 'members': [
  818. {'name': 'gpio_pin', 'id': 124, 'type': 'uint16', 'access': 'rw'},
  819. {'name': 'poly_coefficient_0', 'id': 125, 'type': 'float', 'access': 'rw'},
  820. {'name': 'poly_coefficient_1', 'id': 126, 'type': 'float', 'access': 'rw'},
  821. {'name': 'poly_coefficient_2', 'id': 127, 'type': 'float', 'access': 'rw'},
  822. {'name': 'poly_coefficient_3', 'id': 128, 'type': 'float', 'access': 'rw'},
  823. {'name': 'temp_limit_lower', 'id': 129, 'type': 'float', 'access': 'rw'},
  824. {'name': 'temp_limit_upper', 'id': 130, 'type': 'float', 'access': 'rw'},
  825. {'name': 'enabled', 'id': 131, 'type': 'bool', 'access': 'rw'}]}]},
  826. {'name': 'motor', 'type': 'object', 'members': [
  827. {'name': 'error', 'id': 132, 'type': 'int32', 'access': 'rw'},
  828. {'name': 'armed_state', 'id': 133, 'type': 'int32', 'access': 'r'},
  829. {'name': 'is_calibrated', 'id': 134, 'type': 'bool', 'access': 'r'},
  830. {'name': 'current_meas_phB', 'id': 135, 'type': 'float', 'access': 'r'},
  831. {'name': 'current_meas_phC', 'id': 136, 'type': 'float', 'access': 'r'},
  832. {'name': 'DC_calib_phB', 'id': 137, 'type': 'float', 'access': 'rw'},
  833. {'name': 'DC_calib_phC', 'id': 138, 'type': 'float', 'access': 'rw'},
  834. {'name': 'phase_current_rev_gain', 'id': 139, 'type': 'float', 'access': 'rw'},
  835. {'name': 'effective_current_lim', 'id': 140, 'type': 'float', 'access': 'r'},
  836. {'name': 'current_control', 'type': 'object', 'members': [
  837. {'name': 'p_gain', 'id': 141, 'type': 'float', 'access': 'rw'},
  838. {'name': 'i_gain', 'id': 142, 'type': 'float', 'access': 'rw'},
  839. {'name': 'v_current_control_integral_d', 'id': 143, 'type': 'float', 'access': 'rw'},
  840. {'name': 'v_current_control_integral_q', 'id': 144, 'type': 'float', 'access': 'rw'},
  841. {'name': 'Ibus', 'id': 145, 'type': 'float', 'access': 'rw'},
  842. {'name': 'final_v_alpha', 'id': 146, 'type': 'float', 'access': 'rw'},
  843. {'name': 'final_v_beta', 'id': 147, 'type': 'float', 'access': 'rw'},
  844. {'name': 'Id_setpoint', 'id': 148, 'type': 'float', 'access': 'rw'},
  845. {'name': 'Iq_setpoint', 'id': 149, 'type': 'float', 'access': 'r'},
  846. {'name': 'Iq_measured', 'id': 150, 'type': 'float', 'access': 'rw'},
  847. {'name': 'Id_measured', 'id': 151, 'type': 'float', 'access': 'rw'},
  848. {'name': 'I_measured_report_filter_k', 'id': 152, 'type': 'float', 'access': 'rw'},
  849. {'name': 'max_allowed_current', 'id': 153, 'type': 'float', 'access': 'r'},
  850. {'name': 'overcurrent_trip_level', 'id': 154, 'type': 'float', 'access': 'r'},
  851. {'name': 'acim_rotor_flux', 'id': 155, 'type': 'float', 'access': 'rw'},
  852. {'name': 'async_phase_vel', 'id': 156, 'type': 'float', 'access': 'r'},
  853. {'name': 'async_phase_offset', 'id': 157, 'type': 'float', 'access': 'rw'}]},
  854. {'name': 'gate_driver', 'type': 'object', 'members': [
  855. {'name': 'drv_fault', 'id': 158, 'type': 'int32', 'access': 'r'}]},
  856. {'name': 'timing_log', 'type': 'object', 'members': [
  857. {'name': 'general', 'id': 159, 'type': 'uint16', 'access': 'r'},
  858. {'name': 'adc_cb_i', 'id': 160, 'type': 'uint16', 'access': 'r'},
  859. {'name': 'adc_cb_dc', 'id': 161, 'type': 'uint16', 'access': 'r'},
  860. {'name': 'meas_r', 'id': 162, 'type': 'uint16', 'access': 'r'},
  861. {'name': 'meas_l', 'id': 163, 'type': 'uint16', 'access': 'r'},
  862. {'name': 'enc_calib', 'id': 164, 'type': 'uint16', 'access': 'r'},
  863. {'name': 'idx_search', 'id': 165, 'type': 'uint16', 'access': 'r'},
  864. {'name': 'foc_voltage', 'id': 166, 'type': 'uint16', 'access': 'r'},
  865. {'name': 'foc_current', 'id': 167, 'type': 'uint16', 'access': 'r'},
  866. {'name': 'spi_start', 'id': 168, 'type': 'uint16', 'access': 'r'},
  867. {'name': 'sample_now', 'id': 169, 'type': 'uint16', 'access': 'r'},
  868. {'name': 'spi_end', 'id': 170, 'type': 'uint16', 'access': 'r'}]},
  869. {'name': 'config', 'type': 'object', 'members': [
  870. {'name': 'pre_calibrated', 'id': 171, 'type': 'bool', 'access': 'rw'},
  871. {'name': 'pole_pairs', 'id': 172, 'type': 'int32', 'access': 'rw'},
  872. {'name': 'calibration_current', 'id': 173, 'type': 'float', 'access': 'rw'},
  873. {'name': 'resistance_calib_max_voltage', 'id': 174, 'type': 'float', 'access': 'rw'},
  874. {'name': 'phase_inductance', 'id': 175, 'type': 'float', 'access': 'rw'},
  875. {'name': 'phase_resistance', 'id': 176, 'type': 'float', 'access': 'rw'},
  876. {'name': 'torque_constant', 'id': 177, 'type': 'float', 'access': 'rw'},
  877. {'name': 'direction', 'id': 178, 'type': 'int32', 'access': 'rw'},
  878. {'name': 'motor_type', 'id': 179, 'type': 'int32', 'access': 'rw'},
  879. {'name': 'current_lim', 'id': 180, 'type': 'float', 'access': 'rw'},
  880. {'name': 'current_lim_margin', 'id': 181, 'type': 'float', 'access': 'rw'},
  881. {'name': 'torque_lim', 'id': 182, 'type': 'float', 'access': 'rw'},
  882. {'name': 'inverter_temp_limit_lower', 'id': 183, 'type': 'float', 'access': 'rw'},
  883. {'name': 'inverter_temp_limit_upper', 'id': 184, 'type': 'float', 'access': 'rw'},
  884. {'name': 'requested_current_range', 'id': 185, 'type': 'float', 'access': 'rw'},
  885. {'name': 'current_control_bandwidth', 'id': 186, 'type': 'float', 'access': 'rw'},
  886. {'name': 'acim_slip_velocity', 'id': 187, 'type': 'float', 'access': 'rw'},
  887. {'name': 'acim_gain_min_flux', 'id': 188, 'type': 'float', 'access': 'rw'},
  888. {'name': 'acim_autoflux_min_Id', 'id': 189, 'type': 'float', 'access': 'rw'},
  889. {'name': 'acim_autoflux_enable', 'id': 190, 'type': 'bool', 'access': 'rw'},
  890. {'name': 'acim_autoflux_attack_gain', 'id': 191, 'type': 'float', 'access': 'rw'},
  891. {'name': 'acim_autoflux_decay_gain', 'id': 192, 'type': 'float', 'access': 'rw'}]}]},
  892. {'name': 'controller', 'type': 'object', 'members': [
  893. {'name': 'error', 'id': 193, 'type': 'int32', 'access': 'rw'},
  894. {'name': 'input_pos', 'id': 194, 'type': 'float', 'access': 'rw'},
  895. {'name': 'input_vel', 'id': 195, 'type': 'float', 'access': 'rw'},
  896. {'name': 'input_torque', 'id': 196, 'type': 'float', 'access': 'rw'},
  897. {'name': 'pos_setpoint', 'id': 197, 'type': 'float', 'access': 'r'},
  898. {'name': 'vel_setpoint', 'id': 198, 'type': 'float', 'access': 'r'},
  899. {'name': 'torque_setpoint', 'id': 199, 'type': 'float', 'access': 'r'},
  900. {'name': 'trajectory_done', 'id': 200, 'type': 'bool', 'access': 'r'},
  901. {'name': 'vel_integrator_torque', 'id': 201, 'type': 'float', 'access': 'rw'},
  902. {'name': 'anticogging_valid', 'id': 202, 'type': 'bool', 'access': 'rw'},
  903. {'name': 'config', 'type': 'object', 'members': [
  904. {'name': 'gain_scheduling_width', 'id': 203, 'type': 'float', 'access': 'rw'},
  905. {'name': 'enable_vel_limit', 'id': 204, 'type': 'bool', 'access': 'rw'},
  906. {'name': 'enable_current_mode_vel_limit', 'id': 205, 'type': 'bool', 'access': 'rw'},
  907. {'name': 'enable_gain_scheduling', 'id': 206, 'type': 'bool', 'access': 'rw'},
  908. {'name': 'enable_overspeed_error', 'id': 207, 'type': 'bool', 'access': 'rw'},
  909. {'name': 'control_mode', 'id': 208, 'type': 'int32', 'access': 'rw'},
  910. {'name': 'input_mode', 'id': 209, 'type': 'int32', 'access': 'rw'},
  911. {'name': 'pos_gain', 'id': 210, 'type': 'float', 'access': 'rw'},
  912. {'name': 'vel_gain', 'id': 211, 'type': 'float', 'access': 'rw'},
  913. {'name': 'vel_integrator_gain', 'id': 212, 'type': 'float', 'access': 'rw'},
  914. {'name': 'vel_limit', 'id': 213, 'type': 'float', 'access': 'rw'},
  915. {'name': 'vel_limit_tolerance', 'id': 214, 'type': 'float', 'access': 'rw'},
  916. {'name': 'vel_ramp_rate', 'id': 215, 'type': 'float', 'access': 'rw'},
  917. {'name': 'torque_ramp_rate', 'id': 216, 'type': 'float', 'access': 'rw'},
  918. {'name': 'circular_setpoints', 'id': 217, 'type': 'bool', 'access': 'rw'},
  919. {'name': 'circular_setpoint_range', 'id': 218, 'type': 'float', 'access': 'rw'},
  920. {'name': 'homing_speed', 'id': 219, 'type': 'float', 'access': 'rw'},
  921. {'name': 'inertia', 'id': 220, 'type': 'float', 'access': 'rw'},
  922. {'name': 'axis_to_mirror', 'id': 221, 'type': 'uint8', 'access': 'rw'},
  923. {'name': 'mirror_ratio', 'id': 222, 'type': 'float', 'access': 'rw'},
  924. {'name': 'load_encoder_axis', 'id': 223, 'type': 'uint8', 'access': 'rw'},
  925. {'name': 'input_filter_bandwidth', 'id': 224, 'type': 'float', 'access': 'rw'},
  926. {'name': 'anticogging', 'type': 'object', 'members': [
  927. {'name': 'index', 'id': 225, 'type': 'uint32', 'access': 'r'},
  928. {'name': 'pre_calibrated', 'id': 226, 'type': 'bool', 'access': 'rw'},
  929. {'name': 'calib_anticogging', 'id': 227, 'type': 'bool', 'access': 'r'},
  930. {'name': 'calib_pos_threshold', 'id': 228, 'type': 'float', 'access': 'rw'},
  931. {'name': 'calib_vel_threshold', 'id': 229, 'type': 'float', 'access': 'rw'},
  932. {'name': 'cogging_ratio', 'id': 230, 'type': 'float', 'access': 'r'},
  933. {'name': 'anticogging_enabled', 'id': 231, 'type': 'bool', 'access': 'rw'}]}]},
  934. {'name': 'move_incremental', 'id': 232, 'type': 'function', 'inputs': [
  935. {'name': 'displacement', 'id': 233, 'type': 'float', 'access': 'rw'},
  936. {'name': 'from_input_pos', 'id': 234, 'type': 'bool', 'access': 'rw'}], 'outputs': []},
  937. {'name': 'start_anticogging_calibration', 'id': 235, 'type': 'function', 'inputs': [], 'outputs': []}]},
  938. {'name': 'encoder', 'type': 'object', 'members': [
  939. {'name': 'error', 'id': 236, 'type': 'int32', 'access': 'rw'},
  940. {'name': 'is_ready', 'id': 237, 'type': 'bool', 'access': 'r'},
  941. {'name': 'index_found', 'id': 238, 'type': 'bool', 'access': 'r'},
  942. {'name': 'shadow_count', 'id': 239, 'type': 'int32', 'access': 'r'},
  943. {'name': 'count_in_cpr', 'id': 240, 'type': 'int32', 'access': 'r'},
  944. {'name': 'interpolation', 'id': 241, 'type': 'float', 'access': 'r'},
  945. {'name': 'phase', 'id': 242, 'type': 'float', 'access': 'r'},
  946. {'name': 'pos_estimate', 'id': 243, 'type': 'float', 'access': 'r'},
  947. {'name': 'pos_estimate_counts', 'id': 244, 'type': 'float', 'access': 'r'},
  948. {'name': 'pos_cpr', 'id': 245, 'type': 'float', 'access': 'r'},
  949. {'name': 'pos_cpr_counts', 'id': 246, 'type': 'float', 'access': 'r'},
  950. {'name': 'pos_circular', 'id': 247, 'type': 'float', 'access': 'r'},
  951. {'name': 'hall_state', 'id': 248, 'type': 'uint8', 'access': 'r'},
  952. {'name': 'vel_estimate', 'id': 249, 'type': 'float', 'access': 'r'},
  953. {'name': 'vel_estimate_counts', 'id': 250, 'type': 'float', 'access': 'r'},
  954. {'name': 'calib_scan_response', 'id': 251, 'type': 'float', 'access': 'r'},
  955. {'name': 'pos_abs', 'id': 252, 'type': 'int32', 'access': 'rw'},
  956. {'name': 'spi_error_rate', 'id': 253, 'type': 'float', 'access': 'r'},
  957. {'name': 'config', 'type': 'object', 'members': [
  958. {'name': 'mode', 'id': 254, 'type': 'int32', 'access': 'rw'},
  959. {'name': 'use_index', 'id': 255, 'type': 'bool', 'access': 'rw'},
  960. {'name': 'find_idx_on_lockin_only', 'id': 256, 'type': 'bool', 'access': 'rw'},
  961. {'name': 'abs_spi_cs_gpio_pin', 'id': 257, 'type': 'uint16', 'access': 'rw'},
  962. {'name': 'zero_count_on_find_idx', 'id': 258, 'type': 'bool', 'access': 'rw'},
  963. {'name': 'cpr', 'id': 259, 'type': 'int32', 'access': 'rw'},
  964. {'name': 'offset', 'id': 260, 'type': 'int32', 'access': 'rw'},
  965. {'name': 'pre_calibrated', 'id': 261, 'type': 'bool', 'access': 'rw'},
  966. {'name': 'offset_float', 'id': 262, 'type': 'float', 'access': 'rw'},
  967. {'name': 'enable_phase_interpolation', 'id': 263, 'type': 'bool', 'access': 'rw'},
  968. {'name': 'bandwidth', 'id': 264, 'type': 'float', 'access': 'rw'},
  969. {'name': 'calib_range', 'id': 265, 'type': 'float', 'access': 'rw'},
  970. {'name': 'calib_scan_distance', 'id': 266, 'type': 'float', 'access': 'rw'},
  971. {'name': 'calib_scan_omega', 'id': 267, 'type': 'float', 'access': 'rw'},
  972. {'name': 'idx_search_unidirectional', 'id': 268, 'type': 'bool', 'access': 'rw'},
  973. {'name': 'ignore_illegal_hall_state', 'id': 269, 'type': 'bool', 'access': 'rw'},
  974. {'name': 'sincos_gpio_pin_sin', 'id': 270, 'type': 'uint16', 'access': 'rw'},
  975. {'name': 'sincos_gpio_pin_cos', 'id': 271, 'type': 'uint16', 'access': 'rw'}]},
  976. {'name': 'set_linear_count', 'id': 272, 'type': 'function', 'inputs': [
  977. {'name': 'count', 'id': 273, 'type': 'int32', 'access': 'rw'}], 'outputs': []}]},
  978. {'name': 'sensorless_estimator', 'type': 'object', 'members': [
  979. {'name': 'error', 'id': 274, 'type': 'int32', 'access': 'rw'},
  980. {'name': 'phase', 'id': 275, 'type': 'float', 'access': 'rw'},
  981. {'name': 'pll_pos', 'id': 276, 'type': 'float', 'access': 'rw'},
  982. {'name': 'vel_estimate', 'id': 277, 'type': 'float', 'access': 'rw'},
  983. {'name': 'config', 'type': 'object', 'members': [
  984. {'name': 'observer_gain', 'id': 278, 'type': 'float', 'access': 'rw'},
  985. {'name': 'pll_bandwidth', 'id': 279, 'type': 'float', 'access': 'rw'},
  986. {'name': 'pm_flux_linkage', 'id': 280, 'type': 'float', 'access': 'rw'}]}]},
  987. {'name': 'trap_traj', 'type': 'object', 'members': [
  988. {'name': 'config', 'type': 'object', 'members': [
  989. {'name': 'vel_limit', 'id': 281, 'type': 'float', 'access': 'rw'},
  990. {'name': 'accel_limit', 'id': 282, 'type': 'float', 'access': 'rw'},
  991. {'name': 'decel_limit', 'id': 283, 'type': 'float', 'access': 'rw'}]}]},
  992. {'name': 'min_endstop', 'type': 'object', 'members': [
  993. {'name': 'endstop_state', 'id': 284, 'type': 'bool', 'access': 'r'},
  994. {'name': 'config', 'type': 'object', 'members': [
  995. {'name': 'gpio_num', 'id': 285, 'type': 'uint16', 'access': 'rw'},
  996. {'name': 'enabled', 'id': 286, 'type': 'bool', 'access': 'rw'},
  997. {'name': 'offset', 'id': 287, 'type': 'float', 'access': 'rw'},
  998. {'name': 'is_active_high', 'id': 288, 'type': 'bool', 'access': 'rw'},
  999. {'name': 'pullup', 'id': 289, 'type': 'bool', 'access': 'rw'},
  1000. {'name': 'debounce_ms', 'id': 290, 'type': 'uint32', 'access': 'rw'}]}]},
  1001. {'name': 'max_endstop', 'type': 'object', 'members': [
  1002. {'name': 'endstop_state', 'id': 291, 'type': 'bool', 'access': 'r'},
  1003. {'name': 'config', 'type': 'object', 'members': [
  1004. {'name': 'gpio_num', 'id': 292, 'type': 'uint16', 'access': 'rw'},
  1005. {'name': 'enabled', 'id': 293, 'type': 'bool', 'access': 'rw'},
  1006. {'name': 'offset', 'id': 294, 'type': 'float', 'access': 'rw'},
  1007. {'name': 'is_active_high', 'id': 295, 'type': 'bool', 'access': 'rw'},
  1008. {'name': 'pullup', 'id': 296, 'type': 'bool', 'access': 'rw'},
  1009. {'name': 'debounce_ms', 'id': 297, 'type': 'uint32', 'access': 'rw'}]}]},
  1010. {'name': 'watchdog_feed', 'id': 298, 'type': 'function', 'inputs': [], 'outputs': []},
  1011. {'name': 'clear_errors', 'id': 299, 'type': 'function', 'inputs': [], 'outputs': []}]},
  1012. {'name': 'axis1', 'type': 'object', 'members': [
  1013. {'name': 'error', 'id': 300, 'type': 'int32', 'access': 'rw'},
  1014. {'name': 'step_dir_active', 'id': 301, 'type': 'bool', 'access': 'r'},
  1015. {'name': 'current_state', 'id': 302, 'type': 'int32', 'access': 'r'},
  1016. {'name': 'requested_state', 'id': 303, 'type': 'int32', 'access': 'rw'},
  1017. {'name': 'loop_counter', 'id': 304, 'type': 'uint32', 'access': 'r'},
  1018. {'name': 'lockin_state', 'id': 305, 'type': 'int32', 'access': 'r'},
  1019. {'name': 'is_homed', 'id': 306, 'type': 'bool', 'access': 'rw'},
  1020. {'name': 'config', 'type': 'object', 'members': [
  1021. {'name': 'startup_motor_calibration', 'id': 307, 'type': 'bool', 'access': 'rw'},
  1022. {'name': 'startup_encoder_index_search', 'id': 308, 'type': 'bool', 'access': 'rw'},
  1023. {'name': 'startup_encoder_offset_calibration', 'id': 309, 'type': 'bool', 'access': 'rw'},
  1024. {'name': 'startup_closed_loop_control', 'id': 310, 'type': 'bool', 'access': 'rw'},
  1025. {'name': 'startup_sensorless_control', 'id': 311, 'type': 'bool', 'access': 'rw'},
  1026. {'name': 'startup_homing', 'id': 312, 'type': 'bool', 'access': 'rw'},
  1027. {'name': 'enable_step_dir', 'id': 313, 'type': 'bool', 'access': 'rw'},
  1028. {'name': 'step_dir_always_on', 'id': 314, 'type': 'bool', 'access': 'rw'},
  1029. {'name': 'turns_per_step', 'id': 315, 'type': 'float', 'access': 'rw'},
  1030. {'name': 'watchdog_timeout', 'id': 316, 'type': 'float', 'access': 'rw'},
  1031. {'name': 'enable_watchdog', 'id': 317, 'type': 'bool', 'access': 'rw'},
  1032. {'name': 'step_gpio_pin', 'id': 318, 'type': 'uint16', 'access': 'rw'},
  1033. {'name': 'dir_gpio_pin', 'id': 319, 'type': 'uint16', 'access': 'rw'},
  1034. {'name': 'calibration_lockin', 'type': 'object', 'members': [
  1035. {'name': 'current', 'id': 320, 'type': 'float', 'access': 'rw'},
  1036. {'name': 'ramp_time', 'id': 321, 'type': 'float', 'access': 'rw'},
  1037. {'name': 'ramp_distance', 'id': 322, 'type': 'float', 'access': 'rw'},
  1038. {'name': 'accel', 'id': 323, 'type': 'float', 'access': 'rw'},
  1039. {'name': 'vel', 'id': 324, 'type': 'float', 'access': 'rw'}]},
  1040. {'name': 'sensorless_ramp', 'type': 'object', 'members': [
  1041. {'name': 'current', 'id': 325, 'type': 'float', 'access': 'rw'},
  1042. {'name': 'ramp_time', 'id': 326, 'type': 'float', 'access': 'rw'},
  1043. {'name': 'ramp_distance', 'id': 327, 'type': 'float', 'access': 'rw'},
  1044. {'name': 'accel', 'id': 328, 'type': 'float', 'access': 'rw'},
  1045. {'name': 'vel', 'id': 329, 'type': 'float', 'access': 'rw'},
  1046. {'name': 'finish_distance', 'id': 330, 'type': 'float', 'access': 'rw'},
  1047. {'name': 'finish_on_vel', 'id': 331, 'type': 'bool', 'access': 'rw'},
  1048. {'name': 'finish_on_distance', 'id': 332, 'type': 'bool', 'access': 'rw'},
  1049. {'name': 'finish_on_enc_idx', 'id': 333, 'type': 'bool', 'access': 'rw'}]},
  1050. {'name': 'general_lockin', 'type': 'object', 'members': [
  1051. {'name': 'current', 'id': 334, 'type': 'float', 'access': 'rw'},
  1052. {'name': 'ramp_time', 'id': 335, 'type': 'float', 'access': 'rw'},
  1053. {'name': 'ramp_distance', 'id': 336, 'type': 'float', 'access': 'rw'},
  1054. {'name': 'accel', 'id': 337, 'type': 'float', 'access': 'rw'},
  1055. {'name': 'vel', 'id': 338, 'type': 'float', 'access': 'rw'},
  1056. {'name': 'finish_distance', 'id': 339, 'type': 'float', 'access': 'rw'},
  1057. {'name': 'finish_on_vel', 'id': 340, 'type': 'bool', 'access': 'rw'},
  1058. {'name': 'finish_on_distance', 'id': 341, 'type': 'bool', 'access': 'rw'},
  1059. {'name': 'finish_on_enc_idx', 'id': 342, 'type': 'bool', 'access': 'rw'}]},
  1060. {'name': 'can_node_id', 'id': 343, 'type': 'uint32', 'access': 'rw'},
  1061. {'name': 'can_node_id_extended', 'id': 344, 'type': 'bool', 'access': 'rw'},
  1062. {'name': 'can_heartbeat_rate_ms', 'id': 345, 'type': 'uint32', 'access': 'rw'}]},
  1063. {'name': 'fet_thermistor', 'type': 'object', 'members': [
  1064. {'name': 'error', 'id': 346, 'type': 'int32', 'access': 'rw'},
  1065. {'name': 'temperature', 'id': 347, 'type': 'float', 'access': 'r'},
  1066. {'name': 'config', 'type': 'object', 'members': [
  1067. {'name': 'temp_limit_lower', 'id': 348, 'type': 'float', 'access': 'rw'},
  1068. {'name': 'temp_limit_upper', 'id': 349, 'type': 'float', 'access': 'rw'},
  1069. {'name': 'enabled', 'id': 350, 'type': 'bool', 'access': 'rw'}]}]},
  1070. {'name': 'motor_thermistor', 'type': 'object', 'members': [
  1071. {'name': 'error', 'id': 351, 'type': 'int32', 'access': 'rw'},
  1072. {'name': 'temperature', 'id': 352, 'type': 'float', 'access': 'r'},
  1073. {'name': 'config', 'type': 'object', 'members': [
  1074. {'name': 'gpio_pin', 'id': 353, 'type': 'uint16', 'access': 'rw'},
  1075. {'name': 'poly_coefficient_0', 'id': 354, 'type': 'float', 'access': 'rw'},
  1076. {'name': 'poly_coefficient_1', 'id': 355, 'type': 'float', 'access': 'rw'},
  1077. {'name': 'poly_coefficient_2', 'id': 356, 'type': 'float', 'access': 'rw'},
  1078. {'name': 'poly_coefficient_3', 'id': 357, 'type': 'float', 'access': 'rw'},
  1079. {'name': 'temp_limit_lower', 'id': 358, 'type': 'float', 'access': 'rw'},
  1080. {'name': 'temp_limit_upper', 'id': 359, 'type': 'float', 'access': 'rw'},
  1081. {'name': 'enabled', 'id': 360, 'type': 'bool', 'access': 'rw'}]}]},
  1082. {'name': 'motor', 'type': 'object', 'members': [
  1083. {'name': 'error', 'id': 361, 'type': 'int32', 'access': 'rw'},
  1084. {'name': 'armed_state', 'id': 362, 'type': 'int32', 'access': 'r'},
  1085. {'name': 'is_calibrated', 'id': 363, 'type': 'bool', 'access': 'r'},
  1086. {'name': 'current_meas_phB', 'id': 364, 'type': 'float', 'access': 'r'},
  1087. {'name': 'current_meas_phC', 'id': 365, 'type': 'float', 'access': 'r'},
  1088. {'name': 'DC_calib_phB', 'id': 366, 'type': 'float', 'access': 'rw'},
  1089. {'name': 'DC_calib_phC', 'id': 367, 'type': 'float', 'access': 'rw'},
  1090. {'name': 'phase_current_rev_gain', 'id': 368, 'type': 'float', 'access': 'rw'},
  1091. {'name': 'effective_current_lim', 'id': 369, 'type': 'float', 'access': 'r'},
  1092. {'name': 'current_control', 'type': 'object', 'members': [
  1093. {'name': 'p_gain', 'id': 370, 'type': 'float', 'access': 'rw'},
  1094. {'name': 'i_gain', 'id': 371, 'type': 'float', 'access': 'rw'},
  1095. {'name': 'v_current_control_integral_d', 'id': 372, 'type': 'float', 'access': 'rw'},
  1096. {'name': 'v_current_control_integral_q', 'id': 373, 'type': 'float', 'access': 'rw'},
  1097. {'name': 'Ibus', 'id': 374, 'type': 'float', 'access': 'rw'},
  1098. {'name': 'final_v_alpha', 'id': 375, 'type': 'float', 'access': 'rw'},
  1099. {'name': 'final_v_beta', 'id': 376, 'type': 'float', 'access': 'rw'},
  1100. {'name': 'Id_setpoint', 'id': 377, 'type': 'float', 'access': 'rw'},
  1101. {'name': 'Iq_setpoint', 'id': 378, 'type': 'float', 'access': 'r'},
  1102. {'name': 'Iq_measured', 'id': 379, 'type': 'float', 'access': 'rw'},
  1103. {'name': 'Id_measured', 'id': 380, 'type': 'float', 'access': 'rw'},
  1104. {'name': 'I_measured_report_filter_k', 'id': 381, 'type': 'float', 'access': 'rw'},
  1105. {'name': 'max_allowed_current', 'id': 382, 'type': 'float', 'access': 'r'},
  1106. {'name': 'overcurrent_trip_level', 'id': 383, 'type': 'float', 'access': 'r'},
  1107. {'name': 'acim_rotor_flux', 'id': 384, 'type': 'float', 'access': 'rw'},
  1108. {'name': 'async_phase_vel', 'id': 385, 'type': 'float', 'access': 'r'},
  1109. {'name': 'async_phase_offset', 'id': 386, 'type': 'float', 'access': 'rw'}]},
  1110. {'name': 'gate_driver', 'type': 'object', 'members': [
  1111. {'name': 'drv_fault', 'id': 387, 'type': 'int32', 'access': 'r'}]},
  1112. {'name': 'timing_log', 'type': 'object', 'members': [
  1113. {'name': 'general', 'id': 388, 'type': 'uint16', 'access': 'r'},
  1114. {'name': 'adc_cb_i', 'id': 389, 'type': 'uint16', 'access': 'r'},
  1115. {'name': 'adc_cb_dc', 'id': 390, 'type': 'uint16', 'access': 'r'},
  1116. {'name': 'meas_r', 'id': 391, 'type': 'uint16', 'access': 'r'},
  1117. {'name': 'meas_l', 'id': 392, 'type': 'uint16', 'access': 'r'},
  1118. {'name': 'enc_calib', 'id': 393, 'type': 'uint16', 'access': 'r'},
  1119. {'name': 'idx_search', 'id': 394, 'type': 'uint16', 'access': 'r'},
  1120. {'name': 'foc_voltage', 'id': 395, 'type': 'uint16', 'access': 'r'},
  1121. {'name': 'foc_current', 'id': 396, 'type': 'uint16', 'access': 'r'},
  1122. {'name': 'spi_start', 'id': 397, 'type': 'uint16', 'access': 'r'},
  1123. {'name': 'sample_now', 'id': 398, 'type': 'uint16', 'access': 'r'},
  1124. {'name': 'spi_end', 'id': 399, 'type': 'uint16', 'access': 'r'}]},
  1125. {'name': 'config', 'type': 'object', 'members': [
  1126. {'name': 'pre_calibrated', 'id': 400, 'type': 'bool', 'access': 'rw'},
  1127. {'name': 'pole_pairs', 'id': 401, 'type': 'int32', 'access': 'rw'},
  1128. {'name': 'calibration_current', 'id': 402, 'type': 'float', 'access': 'rw'},
  1129. {'name': 'resistance_calib_max_voltage', 'id': 403, 'type': 'float', 'access': 'rw'},
  1130. {'name': 'phase_inductance', 'id': 404, 'type': 'float', 'access': 'rw'},
  1131. {'name': 'phase_resistance', 'id': 405, 'type': 'float', 'access': 'rw'},
  1132. {'name': 'torque_constant', 'id': 406, 'type': 'float', 'access': 'rw'},
  1133. {'name': 'direction', 'id': 407, 'type': 'int32', 'access': 'rw'},
  1134. {'name': 'motor_type', 'id': 408, 'type': 'int32', 'access': 'rw'},
  1135. {'name': 'current_lim', 'id': 409, 'type': 'float', 'access': 'rw'},
  1136. {'name': 'current_lim_margin', 'id': 410, 'type': 'float', 'access': 'rw'},
  1137. {'name': 'torque_lim', 'id': 411, 'type': 'float', 'access': 'rw'},
  1138. {'name': 'inverter_temp_limit_lower', 'id': 412, 'type': 'float', 'access': 'rw'},
  1139. {'name': 'inverter_temp_limit_upper', 'id': 413, 'type': 'float', 'access': 'rw'},
  1140. {'name': 'requested_current_range', 'id': 414, 'type': 'float', 'access': 'rw'},
  1141. {'name': 'current_control_bandwidth', 'id': 415, 'type': 'float', 'access': 'rw'},
  1142. {'name': 'acim_slip_velocity', 'id': 416, 'type': 'float', 'access': 'rw'},
  1143. {'name': 'acim_gain_min_flux', 'id': 417, 'type': 'float', 'access': 'rw'},
  1144. {'name': 'acim_autoflux_min_Id', 'id': 418, 'type': 'float', 'access': 'rw'},
  1145. {'name': 'acim_autoflux_enable', 'id': 419, 'type': 'bool', 'access': 'rw'},
  1146. {'name': 'acim_autoflux_attack_gain', 'id': 420, 'type': 'float', 'access': 'rw'},
  1147. {'name': 'acim_autoflux_decay_gain', 'id': 421, 'type': 'float', 'access': 'rw'}]}]},
  1148. {'name': 'controller', 'type': 'object', 'members': [
  1149. {'name': 'error', 'id': 422, 'type': 'int32', 'access': 'rw'},
  1150. {'name': 'input_pos', 'id': 423, 'type': 'float', 'access': 'rw'},
  1151. {'name': 'input_vel', 'id': 424, 'type': 'float', 'access': 'rw'},
  1152. {'name': 'input_torque', 'id': 425, 'type': 'float', 'access': 'rw'},
  1153. {'name': 'pos_setpoint', 'id': 426, 'type': 'float', 'access': 'r'},
  1154. {'name': 'vel_setpoint', 'id': 427, 'type': 'float', 'access': 'r'},
  1155. {'name': 'torque_setpoint', 'id': 428, 'type': 'float', 'access': 'r'},
  1156. {'name': 'trajectory_done', 'id': 429, 'type': 'bool', 'access': 'r'},
  1157. {'name': 'vel_integrator_torque', 'id': 430, 'type': 'float', 'access': 'rw'},
  1158. {'name': 'anticogging_valid', 'id': 431, 'type': 'bool', 'access': 'rw'},
  1159. {'name': 'config', 'type': 'object', 'members': [
  1160. {'name': 'gain_scheduling_width', 'id': 432, 'type': 'float', 'access': 'rw'},
  1161. {'name': 'enable_vel_limit', 'id': 433, 'type': 'bool', 'access': 'rw'},
  1162. {'name': 'enable_current_mode_vel_limit', 'id': 434, 'type': 'bool', 'access': 'rw'},
  1163. {'name': 'enable_gain_scheduling', 'id': 435, 'type': 'bool', 'access': 'rw'},
  1164. {'name': 'enable_overspeed_error', 'id': 436, 'type': 'bool', 'access': 'rw'},
  1165. {'name': 'control_mode', 'id': 437, 'type': 'int32', 'access': 'rw'},
  1166. {'name': 'input_mode', 'id': 438, 'type': 'int32', 'access': 'rw'},
  1167. {'name': 'pos_gain', 'id': 439, 'type': 'float', 'access': 'rw'},
  1168. {'name': 'vel_gain', 'id': 440, 'type': 'float', 'access': 'rw'},
  1169. {'name': 'vel_integrator_gain', 'id': 441, 'type': 'float', 'access': 'rw'},
  1170. {'name': 'vel_limit', 'id': 442, 'type': 'float', 'access': 'rw'},
  1171. {'name': 'vel_limit_tolerance', 'id': 443, 'type': 'float', 'access': 'rw'},
  1172. {'name': 'vel_ramp_rate', 'id': 444, 'type': 'float', 'access': 'rw'},
  1173. {'name': 'torque_ramp_rate', 'id': 445, 'type': 'float', 'access': 'rw'},
  1174. {'name': 'circular_setpoints', 'id': 446, 'type': 'bool', 'access': 'rw'},
  1175. {'name': 'circular_setpoint_range', 'id': 447, 'type': 'float', 'access': 'rw'},
  1176. {'name': 'homing_speed', 'id': 448, 'type': 'float', 'access': 'rw'},
  1177. {'name': 'inertia', 'id': 449, 'type': 'float', 'access': 'rw'},
  1178. {'name': 'axis_to_mirror', 'id': 450, 'type': 'uint8', 'access': 'rw'},
  1179. {'name': 'mirror_ratio', 'id': 451, 'type': 'float', 'access': 'rw'},
  1180. {'name': 'load_encoder_axis', 'id': 452, 'type': 'uint8', 'access': 'rw'},
  1181. {'name': 'input_filter_bandwidth', 'id': 453, 'type': 'float', 'access': 'rw'},
  1182. {'name': 'anticogging', 'type': 'object', 'members': [
  1183. {'name': 'index', 'id': 454, 'type': 'uint32', 'access': 'r'},
  1184. {'name': 'pre_calibrated', 'id': 455, 'type': 'bool', 'access': 'rw'},
  1185. {'name': 'calib_anticogging', 'id': 456, 'type': 'bool', 'access': 'r'},
  1186. {'name': 'calib_pos_threshold', 'id': 457, 'type': 'float', 'access': 'rw'},
  1187. {'name': 'calib_vel_threshold', 'id': 458, 'type': 'float', 'access': 'rw'},
  1188. {'name': 'cogging_ratio', 'id': 459, 'type': 'float', 'access': 'r'},
  1189. {'name': 'anticogging_enabled', 'id': 460, 'type': 'bool', 'access': 'rw'}]}]},
  1190. {'name': 'move_incremental', 'id': 461, 'type': 'function', 'inputs': [
  1191. {'name': 'displacement', 'id': 462, 'type': 'float', 'access': 'rw'},
  1192. {'name': 'from_input_pos', 'id': 463, 'type': 'bool', 'access': 'rw'}], 'outputs': []},
  1193. {'name': 'start_anticogging_calibration', 'id': 464, 'type': 'function', 'inputs': [], 'outputs': []}]},
  1194. {'name': 'encoder', 'type': 'object', 'members': [
  1195. {'name': 'error', 'id': 465, 'type': 'int32', 'access': 'rw'},
  1196. {'name': 'is_ready', 'id': 466, 'type': 'bool', 'access': 'r'},
  1197. {'name': 'index_found', 'id': 467, 'type': 'bool', 'access': 'r'},
  1198. {'name': 'shadow_count', 'id': 468, 'type': 'int32', 'access': 'r'},
  1199. {'name': 'count_in_cpr', 'id': 469, 'type': 'int32', 'access': 'r'},
  1200. {'name': 'interpolation', 'id': 470, 'type': 'float', 'access': 'r'},
  1201. {'name': 'phase', 'id': 471, 'type': 'float', 'access': 'r'},
  1202. {'name': 'pos_estimate', 'id': 472, 'type': 'float', 'access': 'r'},
  1203. {'name': 'pos_estimate_counts', 'id': 473, 'type': 'float', 'access': 'r'},
  1204. {'name': 'pos_cpr', 'id': 474, 'type': 'float', 'access': 'r'},
  1205. {'name': 'pos_cpr_counts', 'id': 475, 'type': 'float', 'access': 'r'},
  1206. {'name': 'pos_circular', 'id': 476, 'type': 'float', 'access': 'r'},
  1207. {'name': 'hall_state', 'id': 477, 'type': 'uint8', 'access': 'r'},
  1208. {'name': 'vel_estimate', 'id': 478, 'type': 'float', 'access': 'r'},
  1209. {'name': 'vel_estimate_counts', 'id': 479, 'type': 'float', 'access': 'r'},
  1210. {'name': 'calib_scan_response', 'id': 480, 'type': 'float', 'access': 'r'},
  1211. {'name': 'pos_abs', 'id': 481, 'type': 'int32', 'access': 'rw'},
  1212. {'name': 'spi_error_rate', 'id': 482, 'type': 'float', 'access': 'r'},
  1213. {'name': 'config', 'type': 'object', 'members': [
  1214. {'name': 'mode', 'id': 483, 'type': 'int32', 'access': 'rw'},
  1215. {'name': 'use_index', 'id': 484, 'type': 'bool', 'access': 'rw'},
  1216. {'name': 'find_idx_on_lockin_only', 'id': 485, 'type': 'bool', 'access': 'rw'},
  1217. {'name': 'abs_spi_cs_gpio_pin', 'id': 486, 'type': 'uint16', 'access': 'rw'},
  1218. {'name': 'zero_count_on_find_idx', 'id': 487, 'type': 'bool', 'access': 'rw'},
  1219. {'name': 'cpr', 'id': 488, 'type': 'int32', 'access': 'rw'},
  1220. {'name': 'offset', 'id': 489, 'type': 'int32', 'access': 'rw'},
  1221. {'name': 'pre_calibrated', 'id': 490, 'type': 'bool', 'access': 'rw'},
  1222. {'name': 'offset_float', 'id': 491, 'type': 'float', 'access': 'rw'},
  1223. {'name': 'enable_phase_interpolation', 'id': 492, 'type': 'bool', 'access': 'rw'},
  1224. {'name': 'bandwidth', 'id': 493, 'type': 'float', 'access': 'rw'},
  1225. {'name': 'calib_range', 'id': 494, 'type': 'float', 'access': 'rw'},
  1226. {'name': 'calib_scan_distance', 'id': 495, 'type': 'float', 'access': 'rw'},
  1227. {'name': 'calib_scan_omega', 'id': 496, 'type': 'float', 'access': 'rw'},
  1228. {'name': 'idx_search_unidirectional', 'id': 497, 'type': 'bool', 'access': 'rw'},
  1229. {'name': 'ignore_illegal_hall_state', 'id': 498, 'type': 'bool', 'access': 'rw'},
  1230. {'name': 'sincos_gpio_pin_sin', 'id': 499, 'type': 'uint16', 'access': 'rw'},
  1231. {'name': 'sincos_gpio_pin_cos', 'id': 500, 'type': 'uint16', 'access': 'rw'}]},
  1232. {'name': 'set_linear_count', 'id': 501, 'type': 'function', 'inputs': [
  1233. {'name': 'count', 'id': 502, 'type': 'int32', 'access': 'rw'}], 'outputs': []}]},
  1234. {'name': 'sensorless_estimator', 'type': 'object', 'members': [
  1235. {'name': 'error', 'id': 503, 'type': 'int32', 'access': 'rw'},
  1236. {'name': 'phase', 'id': 504, 'type': 'float', 'access': 'rw'},
  1237. {'name': 'pll_pos', 'id': 505, 'type': 'float', 'access': 'rw'},
  1238. {'name': 'vel_estimate', 'id': 506, 'type': 'float', 'access': 'rw'},
  1239. {'name': 'config', 'type': 'object', 'members': [
  1240. {'name': 'observer_gain', 'id': 507, 'type': 'float', 'access': 'rw'},
  1241. {'name': 'pll_bandwidth', 'id': 508, 'type': 'float', 'access': 'rw'},
  1242. {'name': 'pm_flux_linkage', 'id': 509, 'type': 'float', 'access': 'rw'}]}]},
  1243. {'name': 'trap_traj', 'type': 'object', 'members': [
  1244. {'name': 'config', 'type': 'object', 'members': [
  1245. {'name': 'vel_limit', 'id': 510, 'type': 'float', 'access': 'rw'},
  1246. {'name': 'accel_limit', 'id': 511, 'type': 'float', 'access': 'rw'},
  1247. {'name': 'decel_limit', 'id': 512, 'type': 'float', 'access': 'rw'}]}]},
  1248. {'name': 'min_endstop', 'type': 'object', 'members': [
  1249. {'name': 'endstop_state', 'id': 513, 'type': 'bool', 'access': 'r'},
  1250. {'name': 'config', 'type': 'object', 'members': [
  1251. {'name': 'gpio_num', 'id': 514, 'type': 'uint16', 'access': 'rw'},
  1252. {'name': 'enabled', 'id': 515, 'type': 'bool', 'access': 'rw'},
  1253. {'name': 'offset', 'id': 516, 'type': 'float', 'access': 'rw'},
  1254. {'name': 'is_active_high', 'id': 517, 'type': 'bool', 'access': 'rw'},
  1255. {'name': 'pullup', 'id': 518, 'type': 'bool', 'access': 'rw'},
  1256. {'name': 'debounce_ms', 'id': 519, 'type': 'uint32', 'access': 'rw'}]}]},
  1257. {'name': 'max_endstop', 'type': 'object', 'members': [
  1258. {'name': 'endstop_state', 'id': 520, 'type': 'bool', 'access': 'r'},
  1259. {'name': 'config', 'type': 'object', 'members': [
  1260. {'name': 'gpio_num', 'id': 521, 'type': 'uint16', 'access': 'rw'},
  1261. {'name': 'enabled', 'id': 522, 'type': 'bool', 'access': 'rw'},
  1262. {'name': 'offset', 'id': 523, 'type': 'float', 'access': 'rw'},
  1263. {'name': 'is_active_high', 'id': 524, 'type': 'bool', 'access': 'rw'},
  1264. {'name': 'pullup', 'id': 525, 'type': 'bool', 'access': 'rw'},
  1265. {'name': 'debounce_ms', 'id': 526, 'type': 'uint32', 'access': 'rw'}]}]},
  1266. {'name': 'watchdog_feed', 'id': 527, 'type': 'function', 'inputs': [], 'outputs': []},
  1267. {'name': 'clear_errors', 'id': 528, 'type': 'function', 'inputs': [], 'outputs': []}]},
  1268. {'name': 'can', 'type': 'object', 'members': [
  1269. {'name': 'error', 'id': 529, 'type': 'int32', 'access': 'rw'},
  1270. {'name': 'config', 'type': 'object', 'members': [
  1271. {'name': 'baud_rate', 'id': 530, 'type': 'uint32', 'access': 'r'},
  1272. {'name': 'protocol', 'id': 531, 'type': 'int32', 'access': 'rw'}]},
  1273. {'name': 'set_baud_rate', 'id': 532, 'type': 'function', 'inputs': [
  1274. {'name': 'baudRate', 'id': 533, 'type': 'uint32', 'access': 'rw'}], 'outputs': []}]},
  1275. {'name': 'test_property', 'id': 534, 'type': 'uint32', 'access': 'rw'},
  1276. {'name': 'test_function', 'id': 535, 'type': 'function', 'inputs': [
  1277. {'name': 'delta', 'id': 536, 'type': 'int32', 'access': 'rw'}], 'outputs': [
  1278. {'name': 'cnt', 'id': 537, 'type': 'int32', 'access': 'r'}]},
  1279. {'name': 'get_oscilloscope_val', 'id': 538, 'type': 'function', 'inputs': [
  1280. {'name': 'index', 'id': 539, 'type': 'uint32', 'access': 'rw'}], 'outputs': [
  1281. {'name': 'val', 'id': 540, 'type': 'float', 'access': 'r'}]},
  1282. {'name': 'get_adc_voltage', 'id': 541, 'type': 'function', 'inputs': [
  1283. {'name': 'gpio', 'id': 542, 'type': 'uint32', 'access': 'rw'}], 'outputs': [
  1284. {'name': 'voltage', 'id': 543, 'type': 'float', 'access': 'r'}]},
  1285. {'name': 'save_configuration', 'id': 544, 'type': 'function', 'inputs': [], 'outputs': []},
  1286. {'name': 'erase_configuration', 'id': 545, 'type': 'function', 'inputs': [], 'outputs': []},
  1287. {'name': 'reboot', 'id': 546, 'type': 'function', 'inputs': [], 'outputs': []},
  1288. {'name': 'enter_dfu_mode', 'id': 547, 'type': 'function', 'inputs': [], 'outputs': []}]
  1289. malformed member : unsupported codec json
  1290. Connected to ODrive. ODrive 35619129216333, hw v3.6-56, fw v0.5.1-dev, sdk v0.5.1
  1291. <class 'int'>
  1292. <class 'int'>
  1293.  
  1294.  
Advertisement
Add Comment
Please, Sign In to add comment