Files
linuxcncWebWASM/wasm-core/include/sim_linuxcnc_tp.h

62 lines
3.3 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_velocity_scale(sim_linuxcnc_tp *planner, double scale);
int32_t sim_linuxcnc_tp_set_jog_scale(sim_linuxcnc_tp *planner, double scale);
int32_t sim_linuxcnc_tp_set_axis_limit(sim_linuxcnc_tp *planner, int axis, double minimum, double maximum);
int32_t sim_linuxcnc_tp_jog(sim_linuxcnc_tp *planner, int axis, int direction, double increment, uint32_t tag);
double sim_linuxcnc_tp_velocity_scale(const sim_linuxcnc_tp *planner);
double sim_linuxcnc_tp_velocity_limit(const sim_linuxcnc_tp *planner);
double sim_linuxcnc_tp_jog_scale(const sim_linuxcnc_tp *planner);
double sim_linuxcnc_tp_jog_velocity(const sim_linuxcnc_tp *planner, int axis);
double sim_linuxcnc_tp_feed_override(const sim_linuxcnc_tp *planner);
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