53 lines
2.5 KiB
C
53 lines
2.5 KiB
C
#ifndef LINUXCNC_WEB_WASM_SIM_LINUXCNC_TP_H
|
|
#define LINUXCNC_WEB_WASM_SIM_LINUXCNC_TP_H
|
|
|
|
#include <stdint.h>
|
|
#include "sim_posemath.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct sim_linuxcnc_tp sim_linuxcnc_tp;
|
|
typedef struct sim_linuxcnc_tp_segment {
|
|
sim_posemath_segment segment;
|
|
uint32_t id;
|
|
int term_cond;
|
|
double progress;
|
|
double target;
|
|
} sim_linuxcnc_tp_segment;
|
|
|
|
uint32_t sim_linuxcnc_tp_size(void);
|
|
int32_t sim_linuxcnc_tp_init(sim_linuxcnc_tp *planner, double cycle_time,
|
|
double velocity_limit, double acceleration_limit);
|
|
int32_t sim_linuxcnc_tp_reset(sim_linuxcnc_tp *planner);
|
|
int32_t sim_linuxcnc_tp_set_profile(sim_linuxcnc_tp *planner, int profile, double tolerance);
|
|
int32_t sim_linuxcnc_tp_set_feed_override(sim_linuxcnc_tp *planner, double scale);
|
|
int32_t sim_linuxcnc_tp_set_dynamics(sim_linuxcnc_tp *planner, double acceleration_limit);
|
|
int32_t sim_linuxcnc_tp_set_paused(sim_linuxcnc_tp *planner, int paused);
|
|
int32_t sim_linuxcnc_tp_abort(sim_linuxcnc_tp *planner);
|
|
int32_t sim_linuxcnc_tp_set_position(sim_linuxcnc_tp *planner, const sim_posemath_pose *position);
|
|
int32_t sim_linuxcnc_tp_set_goal_position(sim_linuxcnc_tp *planner, const sim_posemath_pose *position);
|
|
int32_t sim_linuxcnc_tp_add_line(sim_linuxcnc_tp *planner, const sim_posemath_pose *end,
|
|
double velocity, double acceleration, uint32_t tag,
|
|
int canon_motion_type);
|
|
int32_t sim_linuxcnc_tp_add_circle(sim_linuxcnc_tp *planner, const sim_posemath_pose *end,
|
|
const sim_posemath_cartesian *center,
|
|
const sim_posemath_cartesian *normal, int turn,
|
|
double velocity, double acceleration, uint32_t tag,
|
|
int canon_motion_type);
|
|
int32_t sim_linuxcnc_tp_step(sim_linuxcnc_tp *planner);
|
|
int32_t sim_linuxcnc_tp_idle(sim_linuxcnc_tp *planner);
|
|
int32_t sim_linuxcnc_tp_read_state(const sim_linuxcnc_tp *planner, sim_tp_state *state);
|
|
uint32_t sim_linuxcnc_tp_queue_depth(const sim_linuxcnc_tp *planner);
|
|
int32_t sim_linuxcnc_tp_queue_segment(const sim_linuxcnc_tp *planner, uint32_t index, sim_linuxcnc_tp_segment *segment);
|
|
int32_t sim_linuxcnc_tp_restore_progress(sim_linuxcnc_tp *planner, const sim_posemath_pose *position, double velocity, uint32_t tick);
|
|
uint64_t sim_linuxcnc_tp_state_hash(const sim_linuxcnc_tp *planner);
|
|
uint32_t sim_linuxcnc_tp_canonical(const sim_linuxcnc_tp *planner, char *output, uint32_t capacity);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|