Make machine configuration authoritative and restore native checkpoints exactly

This commit is contained in:
2026-09-18 09:09:41 +08:00
parent 6a69511276
commit 4a568f1f4c
94 changed files with 10882 additions and 301 deletions

View File

@@ -25,6 +25,10 @@ uint32_t sim_read_snapshot(uint8_t *out, uint32_t capacity);
uint32_t sim_read_event(uint8_t *out, uint32_t capacity);
int32_t sim_export_state(uint8_t *out, uint32_t capacity);
int32_t sim_import_state(const uint8_t *data, uint32_t len);
uint32_t sim_core_checkpoint_size(void);
const char *sim_checkpoint_build_id(void);
int32_t sim_core_checkpoint_export(uint8_t *output, uint32_t capacity);
int32_t sim_core_checkpoint_restore(const uint8_t *input, uint32_t length);
void sim_destroy(void);
#ifdef __cplusplus

View File

@@ -27,6 +27,9 @@ typedef struct sim_event_record {
} sim_event_record;
void sim_event_reset(void);
uint32_t sim_event_checkpoint_size(void);
int32_t sim_event_checkpoint_export(uint8_t *output, uint32_t capacity);
int32_t sim_event_checkpoint_restore(const uint8_t *input, uint32_t length);
int32_t sim_event_append(uint32_t seq, uint32_t tick, const char *kind,
const uint8_t *payload, uint32_t payload_len);
uint32_t sim_event_count(void);

View File

@@ -14,6 +14,10 @@ extern "C" {
#define SIM_HAL_COMPONENT_CAPACITY 64U
#define SIM_HAL_PARAM_CAPACITY 256U
uint32_t sim_hal_checkpoint_size(void);
int32_t sim_hal_checkpoint_export(uint8_t *output, uint32_t capacity);
int32_t sim_hal_checkpoint_restore(const uint8_t *input, uint32_t length);
enum sim_hal_result {
SIM_HAL_OK = 0,
SIM_HAL_ERR_ARGUMENT = -300,

View File

@@ -74,6 +74,9 @@ int sim_interpreter_set_coordinates(sim_interpreter *interpreter, const sim_coor
int sim_interpreter_sync_position(sim_interpreter *interpreter, const sim_posemath_pose *position);
int sim_interpreter_init(sim_interpreter *interpreter);
uint32_t sim_interpreter_checkpoint_size(void);
int32_t sim_interpreter_checkpoint_export(const sim_interpreter *interpreter, uint8_t *output, uint32_t capacity);
int32_t sim_interpreter_checkpoint_restore(sim_interpreter *interpreter, const uint8_t *input, uint32_t length);
int sim_interpreter_reset(sim_interpreter *interpreter);
int sim_interpreter_execute(sim_interpreter *interpreter, const char *block, uint32_t length);
uint32_t sim_interpreter_size(void);

View File

@@ -18,6 +18,9 @@ typedef struct sim_linuxcnc_tp_segment {
} sim_linuxcnc_tp_segment;
uint32_t sim_linuxcnc_tp_size(void);
uint32_t sim_linuxcnc_tp_checkpoint_size(void);
int32_t sim_linuxcnc_tp_checkpoint_export(const sim_linuxcnc_tp *planner, uint8_t *output, uint32_t capacity);
int32_t sim_linuxcnc_tp_checkpoint_restore(sim_linuxcnc_tp *planner, const uint8_t *input, uint32_t length);
uint32_t sim_linuxcnc_tp_queue_capacity(const sim_linuxcnc_tp *planner);
int32_t sim_linuxcnc_tp_init(sim_linuxcnc_tp *planner, double cycle_time,
double velocity_limit, double acceleration_limit);
@@ -27,6 +30,10 @@ 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_set_axis_dynamics(sim_linuxcnc_tp *planner, int axis, double velocity, double acceleration);
int32_t sim_linuxcnc_tp_set_feed_limit(sim_linuxcnc_tp *planner, double maximum);
int32_t sim_linuxcnc_tp_set_scale_minimum(sim_linuxcnc_tp *planner, double minimum);
int32_t sim_linuxcnc_tp_set_blend(sim_linuxcnc_tp *planner, int enable, int fallback, int depth, int gap, double ramp, double kink);
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);

View File

@@ -83,6 +83,9 @@ typedef struct sim_program {
} sim_program;
uint32_t sim_program_size(void);
uint32_t sim_program_checkpoint_size(void);
int32_t sim_program_checkpoint_export(const sim_program *program, uint8_t *output, uint32_t capacity);
int32_t sim_program_checkpoint_restore(sim_program *program, const uint8_t *input, uint32_t length);
int32_t sim_program_requires_subroutines(const char *source, uint32_t length);
int32_t sim_program_init(sim_program *program);
int32_t sim_program_reset(sim_program *program);

View File

@@ -37,6 +37,9 @@ int32_t sim_protocol_resume(void);
int32_t sim_protocol_state_value(void);
uint32_t sim_protocol_last_seq(void);
uint32_t sim_protocol_tick(void);
uint32_t sim_protocol_checkpoint_size(void);
int32_t sim_protocol_checkpoint_export(uint8_t *output, uint32_t capacity);
int32_t sim_protocol_checkpoint_restore(const uint8_t *input, uint32_t length);
int32_t sim_protocol_set_tick(uint32_t simulation_tick);
#ifdef __cplusplus