34class TimeBasedInterpolator :
public Plugin{
36 TimeBasedInterpolator();
50 float32_t block_time_s;
51 float32_t block_velocity_per_s;
56 int16_t add_move(uint8_t mode, float32_t velocity_per_s, DecimalPosition x, DecimalPosition y, DecimalPosition z, DecimalPosition e, DecimalPosition r, DecimalPosition t);
57 int16_t add_timed_move(uint8_t mode, float32_t time_s, DecimalPosition x, DecimalPosition y, DecimalPosition z, DecimalPosition e, DecimalPosition r, DecimalPosition t);
58 volatile ControlParameter speed_overide = 1;
60 volatile uint16_t slots_remaining;
63 void enroll(
RPC *rpc,
const String& instance_name);
75 DecimalPosition output_position_x;
76 DecimalPosition output_position_y;
77 DecimalPosition output_position_z;
78 DecimalPosition output_position_e;
79 DecimalPosition output_position_r;
80 DecimalPosition output_position_t;
83 volatile uint16_t next_write_index;
84 volatile uint16_t next_read_index;
86 void advance_head(
volatile uint16_t* target_head);
87 void reset_block_queue();
89 volatile uint8_t in_block = 0;
90 volatile uint16_t active_block_id;
91 volatile uint8_t active_block_type;
92 volatile uint8_t active_axes[TBI_NUM_AXES];
93 volatile float64_t active_axes_remaining_distance_mm[TBI_NUM_AXES];
94 volatile float32_t active_axes_velocity_mm_per_frame[TBI_NUM_AXES];
95 BlockPort* output_BlockPorts[TBI_NUM_AXES - 1] = {&output_x, &output_y, &output_z, &output_e, &output_r, &output_t};
96 void run_frame_on_active_block();
97 int16_t _add_move(uint8_t mode, float32_t move_time_s, float32_t velocity_per_s, DecimalPosition x, DecimalPosition y, DecimalPosition z, DecimalPosition e, DecimalPosition r, DecimalPosition t);
100 BLOCK_TYPE_INCREMENTAL,