From d450bb7dfe645a4ef6422da6ff279e38aef06e24 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Wed, 28 Jan 2026 16:48:06 +0200 Subject: [PATCH 01/13] 1. Add initial StateReport.uavcan file --- flytrex/delcon/3000.StateReport.uavcan | 120 +++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 flytrex/delcon/3000.StateReport.uavcan diff --git a/flytrex/delcon/3000.StateReport.uavcan b/flytrex/delcon/3000.StateReport.uavcan new file mode 100644 index 00000000..94f9b6d5 --- /dev/null +++ b/flytrex/delcon/3000.StateReport.uavcan @@ -0,0 +1,120 @@ +# DelCon (delivery controller) state report data +uint5 ACTIVE_MODE_INITIAL = 0 # INITIAL mode +uint5 ACTIVE_MODE_ENCODER_ALIGNMENT = 1 # ENCODER_ALIGNMENT mode +uint5 ACTIVE_MODE_WIRE_HOMING = 2 # WIRE_HOMING mode +uint5 ACTIVE_MODE_IDLE_EMPTY = 3 # IDLE_EMPTY mode +uint5 ACTIVE_MODE_DIRECT_OVERRIDE = 4 # DIRECT_OVERRIDE mode +uint5 ACTIVE_MODE_HALT = 5 # HALT mode +uint5 ACTIVE_MODE_GROUND_UNLOAD = 6 # GROUND_UNLOAD mode +uint5 ACTIVE_MODE_RESET = 7 # RESET mode +uint5 ACTIVE_MODE_PREPARE_FOR_PICKUP = 8 # PREPARE_FOR_PICKUP mode +uint5 ACTIVE_MODE_LIFT_PACKAGE = 9 # LIFT_PACKAGE mode +uint5 ACTIVE_MODE_IDLE_LOADED = 10 # IDLE_LOADED mode +uint5 ACTIVE_MODE_LANDING = 11 # LANDING mode +uint5 ACTIVE_MODE_PREPARE_FOR_DELIVERY = 12 # PREPARE_FOR_DELIVERY mode +uint5 ACTIVE_MODE_DELIVERY = 13 # DELIVERY mode +uint5 ACTIVE_MODE_RELEASE_WIRE = 14 # RELEASE_WIRE mode + +bool MODE_ERROR_NO_ERROR = 0 # No error +bool MODE_ERROR_ASSERT = 1 # There is an error + +bool MODE_STATUS_DONE = 0 # Operation finished +bool MODE_STATUS_IN_PROGRESS = 1 # Operation is in progress + +bool HAS_PACKAGE_FALSE = 0 # There is no package on the hook +bool HAS_PACKAGE_TRUE = 1 # There is a package on the hook + +bool NET_STAT_UP = 0 # The net is up +bool NET_STAT_DOWN = 1 # The net is down + +bool LOCK_STATE_UNLOCKED = 0 # The state of the lock is unlocked +bool LOCK_STATE_LOCKED = 1 # The state of the lock is locked + +bool ACK_OBSERVER_NO_FAULT = 0 +bool ACK_OBSERVER_FAULT = 1 + +bool REQ_EXEC_HOLD_EXEC = 0 # Execute the current action +bool REQ_EXEC_HOLD_HOLD = 1 # Stop the current action + +bool HOME_SWITCH_INACTIVE = 0 # Home switch inactive +bool HOME_SWITCH_ACTIVE = 1 # Home switch active + +bool SPOOL_DEENERGIZE = 0 # Deenergize the motor +bool SPOOL_ENERGIZE = 1 # Energize the motor + +bool ENCODER_UNRELIABLE = 0 +bool ENCODER_RELIABLE = 1 + +bool SPOOL_ENERGIZE_NOT_ALLOWED = 0 +bool SPOOL_ENERGIZE_ALLOWED = 1 + +bool SPOOL_TARGET_NOT_REACHED = 0 # Spool target wasn't reached +bool SPOOL_TARGET_REACHED = 1 # Spool target reached + +bool SPOOL_GO = 0 # Spool the wire +bool SPOOL_EMERGENCY_HOLD = 1 # Spool hold + +bool SPOOL_EXECUTING = 0 +bool SPOOL_HOLDING = 1 + +bool SPOOL_SHAFT_CONTROL = 0 +bool SPOOL_LOAD_CONTROL = 1 + +bool HOMING_INCOMPLETE = 0 # Wire homing in incomplete +bool HOMING_COMPLETE = 1 # Wire homing complete + +bool ALIGNMENT_INCOMPLETE = 0 # Encoder alignment is incomplete +bool ALIGNMENT_COMPLETE = 1 # Encoder alignment is complete + +uint5 active_mode # The current active mode +uint5 active_submode # The current active submode +bool mode_error # The error mode bit. If asserted then error_flags contains the current error map +bool mode_status # The current mode's status +uint32 error_flags # A bitmap of all the possible errors +uint16 motor_rpm # Motor revolutions per minute +bool has_package # A flag that indicates if a package is sensed on the wire +float16 instant_weight # The wait of the package in kg. Relevant when has_package = 1 +bool net_state # A flag that indicates the net status +bool lock_state # The state of the lock servo +uint32 mode_duration # Time in milliseconds in the current mode +float16 motor_temperature # The current temperature of the motor +float16 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error +float16 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position +float16 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint +float16 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot +float16 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state +float16 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold +bool spool_input_ack_observer_fault +float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) +float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) +float16 spool_input_req_shaft_ctrl_load +bool spool_input_req_exec_hold # A flag for executing/stopping the current action +uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound +bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house +float16 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert +float16 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation +float16 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float16 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain +bool spool_input_energize # Energizing the motor +bool spool_input_encoder_reliable +bool spool_internal_energize_allowed # AND (spool_input_energize, spool_input_encoder_reliable) +float16 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator +float16 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext) +float16 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft +float16 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos) +float16 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque +float16 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics +float16 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path +bool spool_output_target_reached # A flag which indicates if the wire reached target +bool spool_output_go_emergency_hold # A flag which controls if the spooling enters emergency hold or continue with operation +bool spool_output_executing_holding # OR (spool_output_go_emergency_hold, spool_input_req_exec_hold) +bool spool_output_shaft_load_ctrl # AND(spool_input_req_shaft_ctrl_load, spool_output_homing_complete) +float16 spool_output_ext # The output wire extension in meters +float16 spool_output_shaft_pos # The output shaft position in radian +bool spool_output_homing_complete # "WIRE_HOMING" mode is complete +float16 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N) +float16 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm) +float16 spool_output_bobbin_speed # Bobbin speed, rad/s +float16 spool_output_load_speed # Load speed, m/s +float16 spool_output_total_energy_cntr # Total energy counter, J +bool spool_output_alignment_complete # Alignment complete flag \ No newline at end of file From 57d6d7e011261ececcc2d31a73ac09c68ffbf793 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Sun, 1 Feb 2026 10:36:09 +0200 Subject: [PATCH 02/13] 1. Rename file 3000.StateReport.uavcan to 21000.StateReport.uavcan 2. Fix some issues with 21000.StateReport.uavcan 3. Add a 21001.DirectOverride.uavcan file --- ...Report.uavcan => 21000.StateReport.uavcan} | 0 flytrex/delcon/21001.DirectOverride.uavcan | 45 +++++++++++++++++++ 2 files changed, 45 insertions(+) rename flytrex/delcon/{3000.StateReport.uavcan => 21000.StateReport.uavcan} (100%) create mode 100644 flytrex/delcon/21001.DirectOverride.uavcan diff --git a/flytrex/delcon/3000.StateReport.uavcan b/flytrex/delcon/21000.StateReport.uavcan similarity index 100% rename from flytrex/delcon/3000.StateReport.uavcan rename to flytrex/delcon/21000.StateReport.uavcan diff --git a/flytrex/delcon/21001.DirectOverride.uavcan b/flytrex/delcon/21001.DirectOverride.uavcan new file mode 100644 index 00000000..b501efb0 --- /dev/null +++ b/flytrex/delcon/21001.DirectOverride.uavcan @@ -0,0 +1,45 @@ +# DelCon (delivery controller) direct override data + +bool NET_STAT_UP = 0 # The net is up +bool NET_STAT_DOWN = 1 # The net is down + +bool LOCK_STATE_UNLOCKED = 0 # The state of the lock is unlocked +bool LOCK_STATE_LOCKED = 1 # The state of the lock is locked + +bool ACK_OBSERVER_NO_FAULT = 0 +bool ACK_OBSERVER_FAULT = 1 + +bool REQ_EXEC_HOLD_EXEC = 0 # Execute the current action +bool REQ_EXEC_HOLD_HOLD = 1 # Stop the current action + +bool HOME_SWITCH_INACTIVE = 0 # Home switch inactive +bool HOME_SWITCH_ACTIVE = 1 # Home switch active + +bool SPOOL_DEENERGIZE = 0 # Deenergize the motor +bool SPOOL_ENERGIZE = 1 # Energize the motor + +bool ENCODER_UNRELIABLE = 0 +bool ENCODER_RELIABLE = 1 + +uint8 node_id # The destination node ID +bool net_state # A flag that indicates the net status +bool lock_state # The state of the lock servo +float16 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error +float16 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position +float16 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint +float16 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot +float16 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state +float16 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold +bool spool_input_ack_observer_fault +float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) +float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) +float16 spool_input_req_shaft_ctrl_load +bool spool_input_req_exec_hold # A flag for executing/stopping the current action +uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound +bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house +float16 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert +float16 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation +float16 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float16 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain +bool spool_input_energize # Energizing the motor +bool spool_input_encoder_reliable \ No newline at end of file From b94f3f8f07dcadb28fde76ab9aa3a78e86067fcb Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 3 Mar 2026 13:45:17 +0200 Subject: [PATCH 03/13] 1. Add 21002.ParamSet.uavcan & 21003.DesignConstantsSet.uavcan files --- flytrex/delcon/21002.ParamSet.uavcan | 21 +++++++++++++++++++ .../delcon/21003.DesignConstantsSet.uavcan | 12 +++++++++++ 2 files changed, 33 insertions(+) create mode 100644 flytrex/delcon/21002.ParamSet.uavcan create mode 100644 flytrex/delcon/21003.DesignConstantsSet.uavcan diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan new file mode 100644 index 00000000..6547d93c --- /dev/null +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -0,0 +1,21 @@ +# DelCon (delivery controller) parameters set command + +uint4 OPERATION_RECALL = 0 # Read a ParamSet configuration from the spool controller +uint4 OPERATION_STORE = 1 # Store a ParamSet configuration to the spool controller +uint4 OPERATION_EXECUTE = 3 # Bypass the external flash and execute ParamSet values in the spool controller (the parameters aren't saved) + +bool SPOOL_SHAFT_CONTROL = 0 +bool SPOOL_LOAD_CONTROL = 1 + +uint4 operation # The operation to perform +uint16 param_id # The ParamSet ID number +bool load_not_shaft_control # +float32 shaft_pos_rad # The shaft position in radian +float32 completion_time_s # The time to complete the setup +float32 min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float32 obs_tension_detector_min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 obs_tension_detector_window_s # The time in seconds which obs_tension_detector_min_torque_Nm was observed +float32 obs_traj_deviation_pos_m # +float32 obs_traj_deviation_neg_m # +float32 obs_allowed_deviation_pos_window_s # \ No newline at end of file diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan new file mode 100644 index 00000000..7b726e99 --- /dev/null +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -0,0 +1,12 @@ +# DelCon (delivery controller) constants set + +uint4 OPERATION_RECALL = 0 # Read the constants configuration from the spool controller +uint4 OPERATION_STORE = 1 # Store the constants configuration to the spool controller + +uint4 operation # The operation to perform +float16 wire_diameter # +float16 barrel_diameter # The diameter of the barrel in meters +float16 spool_width # The width of the spool +float16 gearbox_ratio # +float16 wire_packing_efficiencies # +float16 total_length_of_spooled_wire # The wire's total length in meters \ No newline at end of file From d3d2ebf4b908e1e68b39157cb50d3730f7ba6eb5 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 3 Mar 2026 14:06:44 +0200 Subject: [PATCH 04/13] 1. Update actions/checkout and actions/upload-artifact from v3 to v4 --- .github/workflows/test_regression.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_regression.yml b/.github/workflows/test_regression.yml index 24c06be7..893fae63 100644 --- a/.github/workflows/test_regression.yml +++ b/.github/workflows/test_regression.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-22.04 steps: # git checkout the PR - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install gcc run: sudo apt-get install -y gcc libc6-dev @@ -18,7 +18,7 @@ jobs: tests/test_regression.sh - name: Archive generated headers - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: dsdl_generated path: | From afed862505935312563899be26299fcf768c5c7a Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 3 Mar 2026 14:36:58 +0200 Subject: [PATCH 05/13] 1. Fix a few typos 2. Change the type of spool_input_req_shaft_ctrl_load from float16 to bool 3. Add a few comments to the relevant DSDL files 4. Rename max_torque to max_torque_Nm --- flytrex/delcon/21000.StateReport.uavcan | 6 +++--- flytrex/delcon/21002.ParamSet.uavcan | 10 +++++----- flytrex/delcon/21003.DesignConstantsSet.uavcan | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/flytrex/delcon/21000.StateReport.uavcan b/flytrex/delcon/21000.StateReport.uavcan index 94f9b6d5..126b49a8 100644 --- a/flytrex/delcon/21000.StateReport.uavcan +++ b/flytrex/delcon/21000.StateReport.uavcan @@ -60,7 +60,7 @@ bool SPOOL_HOLDING = 1 bool SPOOL_SHAFT_CONTROL = 0 bool SPOOL_LOAD_CONTROL = 1 -bool HOMING_INCOMPLETE = 0 # Wire homing in incomplete +bool HOMING_INCOMPLETE = 0 # Wire homing is incomplete bool HOMING_COMPLETE = 1 # Wire homing complete bool ALIGNMENT_INCOMPLETE = 0 # Encoder alignment is incomplete @@ -73,7 +73,7 @@ bool mode_status # The current mode's sta uint32 error_flags # A bitmap of all the possible errors uint16 motor_rpm # Motor revolutions per minute bool has_package # A flag that indicates if a package is sensed on the wire -float16 instant_weight # The wait of the package in kg. Relevant when has_package = 1 +float16 instant_weight # The weight of the package in kg. Relevant when has_package = 1 bool net_state # A flag that indicates the net status bool lock_state # The state of the lock servo uint32 mode_duration # Time in milliseconds in the current mode @@ -87,7 +87,7 @@ float16 spool_input_min_speed_window # The maximum duration t bool spool_input_ack_observer_fault float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) -float16 spool_input_req_shaft_ctrl_load +bool spool_input_req_shaft_ctrl_load bool spool_input_req_exec_hold # A flag for executing/stopping the current action uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan index 6547d93c..f4abb877 100644 --- a/flytrex/delcon/21002.ParamSet.uavcan +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -9,13 +9,13 @@ bool SPOOL_LOAD_CONTROL = 1 uint4 operation # The operation to perform uint16 param_id # The ParamSet ID number -bool load_not_shaft_control # +bool load_not_shaft_control # false: shaft control (SPOOL_SHAFT_CONTROL); true: load control (SPOOL_LOAD_CONTROL) float32 shaft_pos_rad # The shaft position in radian float32 completion_time_s # The time to complete the setup float32 min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain -float32 max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float32 max_torque_Nm # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft float32 obs_tension_detector_min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain float32 obs_tension_detector_window_s # The time in seconds which obs_tension_detector_min_torque_Nm was observed -float32 obs_traj_deviation_pos_m # -float32 obs_traj_deviation_neg_m # -float32 obs_allowed_deviation_pos_window_s # \ No newline at end of file +float32 obs_traj_deviation_pos_m # Maximum allowed positive deviation from the planned trajectory [m] +float32 obs_traj_deviation_neg_m # Maximum allowed negative deviation from the planned trajectory [m] +float32 obs_allowed_deviation_pos_window_s # Time window over which positive trajectory deviation is evaluated [s] \ No newline at end of file diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan index 7b726e99..1ef1c26c 100644 --- a/flytrex/delcon/21003.DesignConstantsSet.uavcan +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -4,9 +4,9 @@ uint4 OPERATION_RECALL = 0 # Read the constant uint4 OPERATION_STORE = 1 # Store the constants configuration to the spool controller uint4 operation # The operation to perform -float16 wire_diameter # +float16 wire_diameter # Diameter of the wire in meters float16 barrel_diameter # The diameter of the barrel in meters float16 spool_width # The width of the spool -float16 gearbox_ratio # -float16 wire_packing_efficiencies # +float16 gearbox_ratio # Gearbox ratio +float16 wire_packing_efficiencies # Packing efficiency factor of the wound wire float16 total_length_of_spooled_wire # The wire's total length in meters \ No newline at end of file From a51691efe795a4afcb5a83f9dee9008de308d004 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Wed, 4 Mar 2026 15:44:13 +0200 Subject: [PATCH 06/13] 1. Add 'OPERATION_RESPONSE' value to 'operation' --- flytrex/delcon/21002.ParamSet.uavcan | 3 ++- flytrex/delcon/21003.DesignConstantsSet.uavcan | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan index f4abb877..b5fd2808 100644 --- a/flytrex/delcon/21002.ParamSet.uavcan +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -2,7 +2,8 @@ uint4 OPERATION_RECALL = 0 # Read a ParamSet configuration from the spool controller uint4 OPERATION_STORE = 1 # Store a ParamSet configuration to the spool controller -uint4 OPERATION_EXECUTE = 3 # Bypass the external flash and execute ParamSet values in the spool controller (the parameters aren't saved) +uint4 OPERATION_EXECUTE = 2 # Bypass the external flash and execute ParamSet values in the spool controller (the parameters aren't saved) +uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node bool SPOOL_SHAFT_CONTROL = 0 bool SPOOL_LOAD_CONTROL = 1 diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan index 1ef1c26c..d6f2c5a3 100644 --- a/flytrex/delcon/21003.DesignConstantsSet.uavcan +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -2,6 +2,8 @@ uint4 OPERATION_RECALL = 0 # Read the constants configuration from the spool controller uint4 OPERATION_STORE = 1 # Store the constants configuration to the spool controller +uint4 OPERATION_UNUSED = 2 # Currently unused value +uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node uint4 operation # The operation to perform float16 wire_diameter # Diameter of the wire in meters From 1347419f008a731cd16192474c120308d2175be6 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Sun, 8 Mar 2026 13:38:29 +0200 Subject: [PATCH 07/13] 1. Change all the float16 field types in 21000.StateReport.uavcan to float32 2. Change all the float16 field types in 21003.DesignConstantsSet.uavcan to float32 3. Add 2 new DSDL files: - 21010.WriteConfigFile.uavcan - 21011.ReadConfigFile.uavcan - Path.uavcan --- flytrex/delcon/21000.StateReport.uavcan | 56 +++++++++---------- .../delcon/21003.DesignConstantsSet.uavcan | 12 ++-- flytrex/delcon/21010.WriteConfigFile.uavcan | 10 ++++ flytrex/delcon/21011.ReadConfigFile.uavcan | 9 +++ flytrex/delcon/Path.uavcan | 11 ++++ 5 files changed, 64 insertions(+), 34 deletions(-) create mode 100644 flytrex/delcon/21010.WriteConfigFile.uavcan create mode 100644 flytrex/delcon/21011.ReadConfigFile.uavcan create mode 100644 flytrex/delcon/Path.uavcan diff --git a/flytrex/delcon/21000.StateReport.uavcan b/flytrex/delcon/21000.StateReport.uavcan index 126b49a8..def44db3 100644 --- a/flytrex/delcon/21000.StateReport.uavcan +++ b/flytrex/delcon/21000.StateReport.uavcan @@ -73,48 +73,48 @@ bool mode_status # The current mode's sta uint32 error_flags # A bitmap of all the possible errors uint16 motor_rpm # Motor revolutions per minute bool has_package # A flag that indicates if a package is sensed on the wire -float16 instant_weight # The weight of the package in kg. Relevant when has_package = 1 +float32 instant_weight # The weight of the package in kg. Relevant when has_package = 1 bool net_state # A flag that indicates the net status bool lock_state # The state of the lock servo uint32 mode_duration # Time in milliseconds in the current mode -float16 motor_temperature # The current temperature of the motor -float16 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error -float16 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position -float16 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint -float16 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot -float16 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state -float16 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold +float32 motor_temperature # The current temperature of the motor +float32 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error +float32 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position +float32 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint +float32 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot +float32 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state +float32 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold bool spool_input_ack_observer_fault -float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) -float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) +float32 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) +float32 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) bool spool_input_req_shaft_ctrl_load bool spool_input_req_exec_hold # A flag for executing/stopping the current action uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house -float16 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert -float16 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation -float16 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft -float16 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert +float32 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation +float32 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float32 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain bool spool_input_energize # Energizing the motor bool spool_input_encoder_reliable bool spool_internal_energize_allowed # AND (spool_input_energize, spool_input_encoder_reliable) -float16 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator -float16 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext) -float16 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft -float16 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos) -float16 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque -float16 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics -float16 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path +float32 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator +float32 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext) +float32 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft +float32 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos) +float32 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque +float32 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics +float32 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path bool spool_output_target_reached # A flag which indicates if the wire reached target bool spool_output_go_emergency_hold # A flag which controls if the spooling enters emergency hold or continue with operation bool spool_output_executing_holding # OR (spool_output_go_emergency_hold, spool_input_req_exec_hold) bool spool_output_shaft_load_ctrl # AND(spool_input_req_shaft_ctrl_load, spool_output_homing_complete) -float16 spool_output_ext # The output wire extension in meters -float16 spool_output_shaft_pos # The output shaft position in radian +float32 spool_output_ext # The output wire extension in meters +float32 spool_output_shaft_pos # The output shaft position in radian bool spool_output_homing_complete # "WIRE_HOMING" mode is complete -float16 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N) -float16 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm) -float16 spool_output_bobbin_speed # Bobbin speed, rad/s -float16 spool_output_load_speed # Load speed, m/s -float16 spool_output_total_energy_cntr # Total energy counter, J +float32 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N) +float32 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm) +float32 spool_output_bobbin_speed # Bobbin speed, rad/s +float32 spool_output_load_speed # Load speed, m/s +float32 spool_output_total_energy_cntr # Total energy counter, J bool spool_output_alignment_complete # Alignment complete flag \ No newline at end of file diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan index d6f2c5a3..5da8854a 100644 --- a/flytrex/delcon/21003.DesignConstantsSet.uavcan +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -6,9 +6,9 @@ uint4 OPERATION_UNUSED = 2 # Currently unused uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node uint4 operation # The operation to perform -float16 wire_diameter # Diameter of the wire in meters -float16 barrel_diameter # The diameter of the barrel in meters -float16 spool_width # The width of the spool -float16 gearbox_ratio # Gearbox ratio -float16 wire_packing_efficiencies # Packing efficiency factor of the wound wire -float16 total_length_of_spooled_wire # The wire's total length in meters \ No newline at end of file +float32 wire_diameter # Diameter of the wire in meters +float32 barrel_diameter # The diameter of the barrel in meters +float32 spool_width # The width of the spool +float32 gearbox_ratio # Gearbox ratio +float32 wire_packing_efficiencies # Packing efficiency factor of the wound wire +float32 total_length_of_spooled_wire # The wire's total length in meters \ No newline at end of file diff --git a/flytrex/delcon/21010.WriteConfigFile.uavcan b/flytrex/delcon/21010.WriteConfigFile.uavcan new file mode 100644 index 00000000..344ca2e3 --- /dev/null +++ b/flytrex/delcon/21010.WriteConfigFile.uavcan @@ -0,0 +1,10 @@ +# DelCon (delivery controller) write configuration file (a broadcast message that is used for send/response) + +uint16 STATUS_OK = 0 # The file write can continue +uint16 STATUS_BUSY = 1 # The DelCon is busy, so file write needs to be postpone +uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file write needs to be postpone +uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file write needs to be postpone + +uint8 destination_node_id # The destination's node ID +uint16 status # The status of the request. This field is set be the responder +Path image_file_remote_path # The file to upload to the DelCon \ No newline at end of file diff --git a/flytrex/delcon/21011.ReadConfigFile.uavcan b/flytrex/delcon/21011.ReadConfigFile.uavcan new file mode 100644 index 00000000..a582ded1 --- /dev/null +++ b/flytrex/delcon/21011.ReadConfigFile.uavcan @@ -0,0 +1,9 @@ +# DelCon (delivery controller) read configuration file (a broadcast message that is used for send/response) + +uint16 STATUS_OK = 0 # The file write can continue +uint16 STATUS_BUSY = 1 # The DelCon is busy, so file read needs to be postpone +uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file read needs to be postpone +uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file read needs to be postpone + +uint8 destination_node_id # The destination's node ID +uint16 status # The status of the request. This field is set be the responder \ No newline at end of file diff --git a/flytrex/delcon/Path.uavcan b/flytrex/delcon/Path.uavcan new file mode 100644 index 00000000..c9e2b75c --- /dev/null +++ b/flytrex/delcon/Path.uavcan @@ -0,0 +1,11 @@ +# +# Nested type. +# +# File system path in UTF8. +# +# The only valid separator is forward slash. +# + +uint8 SEPARATOR = '/' + +uint8[<=200] path From 9b1fde59851026e0a7a76eb13a4b92fa549548e3 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Mon, 9 Mar 2026 11:42:26 +0200 Subject: [PATCH 08/13] 1. Change the float16 fields to float32 in StateReport message 2. Add new messages: ParamSet, DesignConstantsSet, WriteConfigFile & ReadConfigFile --- flytrex/delcon/21000.StateReport.uavcan | 60 +++++++++---------- flytrex/delcon/21002.ParamSet.uavcan | 22 +++++++ .../delcon/21003.DesignConstantsSet.uavcan | 14 +++++ flytrex/delcon/21010.WriteConfigFile.uavcan | 10 ++++ flytrex/delcon/21011.ReadConfigFile.uavcan | 9 +++ flytrex/delcon/Path.uavcan | 11 ++++ 6 files changed, 96 insertions(+), 30 deletions(-) create mode 100644 flytrex/delcon/21002.ParamSet.uavcan create mode 100644 flytrex/delcon/21003.DesignConstantsSet.uavcan create mode 100644 flytrex/delcon/21010.WriteConfigFile.uavcan create mode 100644 flytrex/delcon/21011.ReadConfigFile.uavcan create mode 100644 flytrex/delcon/Path.uavcan diff --git a/flytrex/delcon/21000.StateReport.uavcan b/flytrex/delcon/21000.StateReport.uavcan index 94f9b6d5..def44db3 100644 --- a/flytrex/delcon/21000.StateReport.uavcan +++ b/flytrex/delcon/21000.StateReport.uavcan @@ -60,7 +60,7 @@ bool SPOOL_HOLDING = 1 bool SPOOL_SHAFT_CONTROL = 0 bool SPOOL_LOAD_CONTROL = 1 -bool HOMING_INCOMPLETE = 0 # Wire homing in incomplete +bool HOMING_INCOMPLETE = 0 # Wire homing is incomplete bool HOMING_COMPLETE = 1 # Wire homing complete bool ALIGNMENT_INCOMPLETE = 0 # Encoder alignment is incomplete @@ -73,48 +73,48 @@ bool mode_status # The current mode's sta uint32 error_flags # A bitmap of all the possible errors uint16 motor_rpm # Motor revolutions per minute bool has_package # A flag that indicates if a package is sensed on the wire -float16 instant_weight # The wait of the package in kg. Relevant when has_package = 1 +float32 instant_weight # The weight of the package in kg. Relevant when has_package = 1 bool net_state # A flag that indicates the net status bool lock_state # The state of the lock servo uint32 mode_duration # Time in milliseconds in the current mode -float16 motor_temperature # The current temperature of the motor -float16 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error -float16 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position -float16 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint -float16 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot -float16 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state -float16 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold +float32 motor_temperature # The current temperature of the motor +float32 spool_input_max_lag # The distance (in meters) that the actual wire position is permitted to fall behind the target position before the controller triggers an error +float32 spool_input_max_lag_window # The maximum time (e.g., 0.5 seconds) the controller will wait for the spool to reach a commanded position +float32 spool_input_max_overshoot # The difference between the peak physical position reached by the spool and the final steady-state setpoint +float32 spool_input_max_overshoot_window # The time window which allows spool/unspool overshoot +float32 spool_input_min_speed # The lowest linear velocity at which the wire is permitted to travel while the system is in an active "run" state +float32 spool_input_min_speed_window # The maximum duration the system allows for the motor to reach or maintain its "Min Speed" threshold bool spool_input_ack_observer_fault -float16 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) -float16 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) -float16 spool_input_req_shaft_ctrl_load +float32 spool_input_load_acc # The rate of change of the angular velocity of the rotating spool drum (measured in rad/s^2) +float32 spool_input_load_dec # The rate at which the angular velocity of the spool drum decreases (measured in rad/s^2) +bool spool_input_req_shaft_ctrl_load bool spool_input_req_exec_hold # A flag for executing/stopping the current action uint8 spool_input_target_ext # The desired total length of cable to be deployed or unwound bool spool_input_home_switch_activated # The endswitch which is triggered when the bobbin is in the house -float16 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert -float16 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation -float16 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft -float16 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 spool_input_max_force # The maximum allowable cable tension or linear pulling force the system can exert +float32 spool_input_min_force # The minimum amount of tension or pulling effort that must be maintained on the wire to ensure safe and reliable operation +float32 spool_input_max_torque # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float32 spool_input_min_torque # The lower threshold of rotational force that the motor is commanded or allowed to maintain bool spool_input_energize # Energizing the motor bool spool_input_encoder_reliable bool spool_internal_energize_allowed # AND (spool_input_energize, spool_input_encoder_reliable) -float16 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator -float16 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext) -float16 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft -float16 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos) -float16 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque -float16 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics -float16 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path +float32 spool_internal_ext_setpoint # The target value for the length of wire that comes out from the trajectory generator +float32 spool_internal_ext_err # The difference between where the wire should be and where it actually is (spool_internal_ext_setpoint - spool_output_ext) +float32 spool_internal_shaft_setpoint # The target angular position for the motor's output shaft +float32 spool_internal_shaft_err # The difference between where the shaft should be and where it actually is (spool_internal_shaft_setpoint - spool_output_shaft_pos) +float32 spool_internal_quad_current_req # The value for the specific component of motor current that is responsible for generating torque +float32 spool_internal_quad_current_active_setpoint # The final, safety-filtered command for torque-producing current (Iq) that is actually sent to the motor's power electronics +float32 spool_output_trajectory_margin # The maximum allowable physical distance the system can deviate from its pre-planned motion path bool spool_output_target_reached # A flag which indicates if the wire reached target bool spool_output_go_emergency_hold # A flag which controls if the spooling enters emergency hold or continue with operation bool spool_output_executing_holding # OR (spool_output_go_emergency_hold, spool_input_req_exec_hold) bool spool_output_shaft_load_ctrl # AND(spool_input_req_shaft_ctrl_load, spool_output_homing_complete) -float16 spool_output_ext # The output wire extension in meters -float16 spool_output_shaft_pos # The output shaft position in radian +float32 spool_output_ext # The output wire extension in meters +float32 spool_output_shaft_pos # The output shaft position in radian bool spool_output_homing_complete # "WIRE_HOMING" mode is complete -float16 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N) -float16 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm) -float16 spool_output_bobbin_speed # Bobbin speed, rad/s -float16 spool_output_load_speed # Load speed, m/s -float16 spool_output_total_energy_cntr # Total energy counter, J +float32 spool_output_force # The real-time linear pulling effort currently being exerted by the cable (in N) +float32 spool_output_torque # The rotational twisting force currently being generated at the motor's output shaft (in Nm) +float32 spool_output_bobbin_speed # Bobbin speed, rad/s +float32 spool_output_load_speed # Load speed, m/s +float32 spool_output_total_energy_cntr # Total energy counter, J bool spool_output_alignment_complete # Alignment complete flag \ No newline at end of file diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan new file mode 100644 index 00000000..b5fd2808 --- /dev/null +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -0,0 +1,22 @@ +# DelCon (delivery controller) parameters set command + +uint4 OPERATION_RECALL = 0 # Read a ParamSet configuration from the spool controller +uint4 OPERATION_STORE = 1 # Store a ParamSet configuration to the spool controller +uint4 OPERATION_EXECUTE = 2 # Bypass the external flash and execute ParamSet values in the spool controller (the parameters aren't saved) +uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node + +bool SPOOL_SHAFT_CONTROL = 0 +bool SPOOL_LOAD_CONTROL = 1 + +uint4 operation # The operation to perform +uint16 param_id # The ParamSet ID number +bool load_not_shaft_control # false: shaft control (SPOOL_SHAFT_CONTROL); true: load control (SPOOL_LOAD_CONTROL) +float32 shaft_pos_rad # The shaft position in radian +float32 completion_time_s # The time to complete the setup +float32 min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 max_torque_Nm # The software or hardware limit on the rotational twisting force the motor can apply to the spool shaft +float32 obs_tension_detector_min_torque_Nm # The lower threshold of rotational force that the motor is commanded or allowed to maintain +float32 obs_tension_detector_window_s # The time in seconds which obs_tension_detector_min_torque_Nm was observed +float32 obs_traj_deviation_pos_m # Maximum allowed positive deviation from the planned trajectory [m] +float32 obs_traj_deviation_neg_m # Maximum allowed negative deviation from the planned trajectory [m] +float32 obs_allowed_deviation_pos_window_s # Time window over which positive trajectory deviation is evaluated [s] \ No newline at end of file diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan new file mode 100644 index 00000000..5da8854a --- /dev/null +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -0,0 +1,14 @@ +# DelCon (delivery controller) constants set + +uint4 OPERATION_RECALL = 0 # Read the constants configuration from the spool controller +uint4 OPERATION_STORE = 1 # Store the constants configuration to the spool controller +uint4 OPERATION_UNUSED = 2 # Currently unused value +uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node + +uint4 operation # The operation to perform +float32 wire_diameter # Diameter of the wire in meters +float32 barrel_diameter # The diameter of the barrel in meters +float32 spool_width # The width of the spool +float32 gearbox_ratio # Gearbox ratio +float32 wire_packing_efficiencies # Packing efficiency factor of the wound wire +float32 total_length_of_spooled_wire # The wire's total length in meters \ No newline at end of file diff --git a/flytrex/delcon/21010.WriteConfigFile.uavcan b/flytrex/delcon/21010.WriteConfigFile.uavcan new file mode 100644 index 00000000..344ca2e3 --- /dev/null +++ b/flytrex/delcon/21010.WriteConfigFile.uavcan @@ -0,0 +1,10 @@ +# DelCon (delivery controller) write configuration file (a broadcast message that is used for send/response) + +uint16 STATUS_OK = 0 # The file write can continue +uint16 STATUS_BUSY = 1 # The DelCon is busy, so file write needs to be postpone +uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file write needs to be postpone +uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file write needs to be postpone + +uint8 destination_node_id # The destination's node ID +uint16 status # The status of the request. This field is set be the responder +Path image_file_remote_path # The file to upload to the DelCon \ No newline at end of file diff --git a/flytrex/delcon/21011.ReadConfigFile.uavcan b/flytrex/delcon/21011.ReadConfigFile.uavcan new file mode 100644 index 00000000..a582ded1 --- /dev/null +++ b/flytrex/delcon/21011.ReadConfigFile.uavcan @@ -0,0 +1,9 @@ +# DelCon (delivery controller) read configuration file (a broadcast message that is used for send/response) + +uint16 STATUS_OK = 0 # The file write can continue +uint16 STATUS_BUSY = 1 # The DelCon is busy, so file read needs to be postpone +uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file read needs to be postpone +uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file read needs to be postpone + +uint8 destination_node_id # The destination's node ID +uint16 status # The status of the request. This field is set be the responder \ No newline at end of file diff --git a/flytrex/delcon/Path.uavcan b/flytrex/delcon/Path.uavcan new file mode 100644 index 00000000..c9e2b75c --- /dev/null +++ b/flytrex/delcon/Path.uavcan @@ -0,0 +1,11 @@ +# +# Nested type. +# +# File system path in UTF8. +# +# The only valid separator is forward slash. +# + +uint8 SEPARATOR = '/' + +uint8[<=200] path From 9b5408e7db2a76a0c03ccfc4d8d2be1c8958d0e5 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 10 Mar 2026 10:23:53 +0200 Subject: [PATCH 09/13] 1. Add 'error' field to ParamSet and DesignConstantsSet messages 2. Rename 'status' field to 'error' in WriteConfigFile and ReadConfigFile messages --- flytrex/delcon/21002.ParamSet.uavcan | 1 + .../delcon/21003.DesignConstantsSet.uavcan | 1 + flytrex/delcon/21010.WriteConfigFile.uavcan | 7 +----- flytrex/delcon/21011.ReadConfigFile.uavcan | 7 +----- flytrex/delcon/Error.uavcan | 22 +++++++++++++++++++ 5 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 flytrex/delcon/Error.uavcan diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan index b5fd2808..0b60ef6c 100644 --- a/flytrex/delcon/21002.ParamSet.uavcan +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -9,6 +9,7 @@ bool SPOOL_SHAFT_CONTROL = 0 bool SPOOL_LOAD_CONTROL = 1 uint4 operation # The operation to perform +Error error # A returned error by the responder uint16 param_id # The ParamSet ID number bool load_not_shaft_control # false: shaft control (SPOOL_SHAFT_CONTROL); true: load control (SPOOL_LOAD_CONTROL) float32 shaft_pos_rad # The shaft position in radian diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan index 5da8854a..ca465fa3 100644 --- a/flytrex/delcon/21003.DesignConstantsSet.uavcan +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -6,6 +6,7 @@ uint4 OPERATION_UNUSED = 2 # Currently unused uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node uint4 operation # The operation to perform +Error error # A returned error by the responder float32 wire_diameter # Diameter of the wire in meters float32 barrel_diameter # The diameter of the barrel in meters float32 spool_width # The width of the spool diff --git a/flytrex/delcon/21010.WriteConfigFile.uavcan b/flytrex/delcon/21010.WriteConfigFile.uavcan index 344ca2e3..09bb348a 100644 --- a/flytrex/delcon/21010.WriteConfigFile.uavcan +++ b/flytrex/delcon/21010.WriteConfigFile.uavcan @@ -1,10 +1,5 @@ # DelCon (delivery controller) write configuration file (a broadcast message that is used for send/response) -uint16 STATUS_OK = 0 # The file write can continue -uint16 STATUS_BUSY = 1 # The DelCon is busy, so file write needs to be postpone -uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file write needs to be postpone -uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file write needs to be postpone - uint8 destination_node_id # The destination's node ID -uint16 status # The status of the request. This field is set be the responder +Error error # A returned error by the responder Path image_file_remote_path # The file to upload to the DelCon \ No newline at end of file diff --git a/flytrex/delcon/21011.ReadConfigFile.uavcan b/flytrex/delcon/21011.ReadConfigFile.uavcan index a582ded1..a0e39abf 100644 --- a/flytrex/delcon/21011.ReadConfigFile.uavcan +++ b/flytrex/delcon/21011.ReadConfigFile.uavcan @@ -1,9 +1,4 @@ # DelCon (delivery controller) read configuration file (a broadcast message that is used for send/response) -uint16 STATUS_OK = 0 # The file write can continue -uint16 STATUS_BUSY = 1 # The DelCon is busy, so file read needs to be postpone -uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file read needs to be postpone -uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file read needs to be postpone - uint8 destination_node_id # The destination's node ID -uint16 status # The status of the request. This field is set be the responder \ No newline at end of file +Error error # A returned error by the responder \ No newline at end of file diff --git a/flytrex/delcon/Error.uavcan b/flytrex/delcon/Error.uavcan new file mode 100644 index 00000000..03f80eab --- /dev/null +++ b/flytrex/delcon/Error.uavcan @@ -0,0 +1,22 @@ +# +# Nested type. +# File operation & DelCon result code. +# +int16 STATUS_OK = 0 +int16 STATUS_UNKNOWN_ERROR = 32767 + +int16 STATUS_NOT_FOUND = 2 +int16 STATUS_IO_ERROR = 5 +int16 STATUS_ACCESS_DENIED = 13 +int16 STATUS_IS_DIRECTORY = 21 # I.e. attempt to read/write on a path that points to a directory +int16 STATUS_INVALID_VALUE = 22 # E.g. file name is not valid for the target file system +int16 STATUS_FILE_TOO_LARGE = 27 +int16 STATUS_OUT_OF_SPACE = 28 +int16 STATUS_NOT_IMPLEMENTED = 38 + +int16 STATUS_IDX_OUT_OF_BOUND = 40 # Param ID is out of bound + +int16 STATUS_BUSY = 50 # The DelCon is busy, so file write needs to be postpone +int16 STATUS_LOW_MEM = 51 # DelCon experiences low memory, so file write needs to be postpone + +int16 value From 3b5729302a3e675f6bd829c0e9226bb9576de5e9 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 10 Mar 2026 10:51:15 +0200 Subject: [PATCH 10/13] 1. Add 'error' field to ParamSet and DesignConstantsSet messages 2. Rename 'status' field to 'error' in WriteConfigFile and ReadConfigFile messages --- flytrex/delcon/21002.ParamSet.uavcan | 1 + .../delcon/21003.DesignConstantsSet.uavcan | 1 + flytrex/delcon/21010.WriteConfigFile.uavcan | 7 +----- flytrex/delcon/21011.ReadConfigFile.uavcan | 7 +----- flytrex/delcon/Error.uavcan | 22 +++++++++++++++++++ 5 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 flytrex/delcon/Error.uavcan diff --git a/flytrex/delcon/21002.ParamSet.uavcan b/flytrex/delcon/21002.ParamSet.uavcan index b5fd2808..0b60ef6c 100644 --- a/flytrex/delcon/21002.ParamSet.uavcan +++ b/flytrex/delcon/21002.ParamSet.uavcan @@ -9,6 +9,7 @@ bool SPOOL_SHAFT_CONTROL = 0 bool SPOOL_LOAD_CONTROL = 1 uint4 operation # The operation to perform +Error error # A returned error by the responder uint16 param_id # The ParamSet ID number bool load_not_shaft_control # false: shaft control (SPOOL_SHAFT_CONTROL); true: load control (SPOOL_LOAD_CONTROL) float32 shaft_pos_rad # The shaft position in radian diff --git a/flytrex/delcon/21003.DesignConstantsSet.uavcan b/flytrex/delcon/21003.DesignConstantsSet.uavcan index 5da8854a..ca465fa3 100644 --- a/flytrex/delcon/21003.DesignConstantsSet.uavcan +++ b/flytrex/delcon/21003.DesignConstantsSet.uavcan @@ -6,6 +6,7 @@ uint4 OPERATION_UNUSED = 2 # Currently unused uint4 OPERATION_RESPONSE = 3 # A response that is sent from the node uint4 operation # The operation to perform +Error error # A returned error by the responder float32 wire_diameter # Diameter of the wire in meters float32 barrel_diameter # The diameter of the barrel in meters float32 spool_width # The width of the spool diff --git a/flytrex/delcon/21010.WriteConfigFile.uavcan b/flytrex/delcon/21010.WriteConfigFile.uavcan index 344ca2e3..09bb348a 100644 --- a/flytrex/delcon/21010.WriteConfigFile.uavcan +++ b/flytrex/delcon/21010.WriteConfigFile.uavcan @@ -1,10 +1,5 @@ # DelCon (delivery controller) write configuration file (a broadcast message that is used for send/response) -uint16 STATUS_OK = 0 # The file write can continue -uint16 STATUS_BUSY = 1 # The DelCon is busy, so file write needs to be postpone -uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file write needs to be postpone -uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file write needs to be postpone - uint8 destination_node_id # The destination's node ID -uint16 status # The status of the request. This field is set be the responder +Error error # A returned error by the responder Path image_file_remote_path # The file to upload to the DelCon \ No newline at end of file diff --git a/flytrex/delcon/21011.ReadConfigFile.uavcan b/flytrex/delcon/21011.ReadConfigFile.uavcan index a582ded1..a0e39abf 100644 --- a/flytrex/delcon/21011.ReadConfigFile.uavcan +++ b/flytrex/delcon/21011.ReadConfigFile.uavcan @@ -1,9 +1,4 @@ # DelCon (delivery controller) read configuration file (a broadcast message that is used for send/response) -uint16 STATUS_OK = 0 # The file write can continue -uint16 STATUS_BUSY = 1 # The DelCon is busy, so file read needs to be postpone -uint16 STATUS_LOW_MEM = 2 # DelCon experiences low memory, so file read needs to be postpone -uint16 STATUS_UNKNOWN_ERR = 0xFFFF # DelCon experiences unknown error, so file read needs to be postpone - uint8 destination_node_id # The destination's node ID -uint16 status # The status of the request. This field is set be the responder \ No newline at end of file +Error error # A returned error by the responder \ No newline at end of file diff --git a/flytrex/delcon/Error.uavcan b/flytrex/delcon/Error.uavcan new file mode 100644 index 00000000..03f80eab --- /dev/null +++ b/flytrex/delcon/Error.uavcan @@ -0,0 +1,22 @@ +# +# Nested type. +# File operation & DelCon result code. +# +int16 STATUS_OK = 0 +int16 STATUS_UNKNOWN_ERROR = 32767 + +int16 STATUS_NOT_FOUND = 2 +int16 STATUS_IO_ERROR = 5 +int16 STATUS_ACCESS_DENIED = 13 +int16 STATUS_IS_DIRECTORY = 21 # I.e. attempt to read/write on a path that points to a directory +int16 STATUS_INVALID_VALUE = 22 # E.g. file name is not valid for the target file system +int16 STATUS_FILE_TOO_LARGE = 27 +int16 STATUS_OUT_OF_SPACE = 28 +int16 STATUS_NOT_IMPLEMENTED = 38 + +int16 STATUS_IDX_OUT_OF_BOUND = 40 # Param ID is out of bound + +int16 STATUS_BUSY = 50 # The DelCon is busy, so file write needs to be postpone +int16 STATUS_LOW_MEM = 51 # DelCon experiences low memory, so file write needs to be postpone + +int16 value From 37ba5395be5be8762c5bbf168a958651a288dd08 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Thu, 19 Mar 2026 14:24:53 +0200 Subject: [PATCH 11/13] 1. Add STATUS_TIMEOUT to Error.uavcan --- flytrex/delcon/Error.uavcan | 1 + 1 file changed, 1 insertion(+) diff --git a/flytrex/delcon/Error.uavcan b/flytrex/delcon/Error.uavcan index 03f80eab..e2e965dc 100644 --- a/flytrex/delcon/Error.uavcan +++ b/flytrex/delcon/Error.uavcan @@ -18,5 +18,6 @@ int16 STATUS_IDX_OUT_OF_BOUND = 40 # Param ID is out of bound int16 STATUS_BUSY = 50 # The DelCon is busy, so file write needs to be postpone int16 STATUS_LOW_MEM = 51 # DelCon experiences low memory, so file write needs to be postpone +int16 STATUS_TIMEOUT = 52 # Timeout from previous file read request detected int16 value From 5dacba4903a55280632274869032f591f3d3fba9 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Thu, 19 Mar 2026 14:45:33 +0200 Subject: [PATCH 12/13] 1. Add STATUS_TIMEOUT to Error.uavcan --- flytrex/delcon/Error.uavcan | 1 + 1 file changed, 1 insertion(+) diff --git a/flytrex/delcon/Error.uavcan b/flytrex/delcon/Error.uavcan index 03f80eab..e2e965dc 100644 --- a/flytrex/delcon/Error.uavcan +++ b/flytrex/delcon/Error.uavcan @@ -18,5 +18,6 @@ int16 STATUS_IDX_OUT_OF_BOUND = 40 # Param ID is out of bound int16 STATUS_BUSY = 50 # The DelCon is busy, so file write needs to be postpone int16 STATUS_LOW_MEM = 51 # DelCon experiences low memory, so file write needs to be postpone +int16 STATUS_TIMEOUT = 52 # Timeout from previous file read request detected int16 value From 7776c242e1f96ece2dbefd9051c865ff5e508325 Mon Sep 17 00:00:00 2001 From: "Ilan.G" Date: Tue, 2 Jun 2026 16:17:13 +0300 Subject: [PATCH 13/13] 1. Rename 21000.TCAData.uavcan file to 22000.TCAData.uavcan --- .../bms/{21000.TCAData.uavcan => 22000.TCAData.uavcan} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename flytrex/diagnostics/bms/{21000.TCAData.uavcan => 22000.TCAData.uavcan} (100%) diff --git a/flytrex/diagnostics/bms/21000.TCAData.uavcan b/flytrex/diagnostics/bms/22000.TCAData.uavcan similarity index 100% rename from flytrex/diagnostics/bms/21000.TCAData.uavcan rename to flytrex/diagnostics/bms/22000.TCAData.uavcan