Initial wasm simulator checkpoint

This commit is contained in:
CNC Local
2026-05-22 04:43:21 +08:00
commit 55d9fff9f0
54 changed files with 5523 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
#pragma once
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#if defined(_WIN32)
#define CNC_SIM_EXPORT __declspec(dllexport)
#else
#define CNC_SIM_EXPORT __attribute__((visibility("default")))
#endif
typedef struct CncSimHandle CncSimHandle;
typedef enum CncSimDialect {
CNC_SIM_DIALECT_LINUXCNC = 0,
CNC_SIM_DIALECT_FANUC = 1,
CNC_SIM_DIALECT_SIEMENS = 2
} CncSimDialect;
typedef enum CncSimEventType {
CNC_SIM_EVENT_NONE = 0,
CNC_SIM_EVENT_ERROR = 1,
CNC_SIM_EVENT_COMMENT = 2,
CNC_SIM_EVENT_SET_UNITS = 3,
CNC_SIM_EVENT_SET_PLANE = 4,
CNC_SIM_EVENT_SET_FEED = 5,
CNC_SIM_EVENT_SET_SPINDLE = 6,
CNC_SIM_EVENT_TOOL_CHANGE = 7,
CNC_SIM_EVENT_DWELL = 8,
CNC_SIM_EVENT_RAPID = 9,
CNC_SIM_EVENT_LINEAR_FEED = 10,
CNC_SIM_EVENT_ARC_FEED = 11,
CNC_SIM_EVENT_PROBE = 12,
CNC_SIM_EVENT_PROGRAM_END = 13,
CNC_SIM_EVENT_RTCP_PIVOT = 14,
CNC_SIM_EVENT_KINEMATICS_SWITCH = 15,
CNC_SIM_EVENT_RTCP_STATE = 16,
CNC_SIM_EVENT_SET_G5X_OFFSET = 17,
CNC_SIM_EVENT_SET_G92_OFFSET = 18,
CNC_SIM_EVENT_SET_XY_ROTATION = 19
} CncSimEventType;
typedef struct CncSimPose {
double x;
double y;
double z;
double a;
double b;
double c;
double u;
double v;
double w;
} CncSimPose;
typedef struct CncSimEvent {
uint32_t version;
CncSimEventType type;
int32_t line;
int32_t plane;
int32_t tool;
double feed;
double spindle;
double dwell_seconds;
CncSimPose start;
CncSimPose end;
CncSimPose center;
int32_t arc_turns;
int32_t reserved;
} CncSimEvent;
typedef int (*CncSimEventCallback)(const CncSimEvent *event, void *user_data);
CNC_SIM_EXPORT CncSimHandle *cnc_sim_create(void);
CNC_SIM_EXPORT void cnc_sim_destroy(CncSimHandle *handle);
CNC_SIM_EXPORT void cnc_sim_reset(CncSimHandle *handle);
CNC_SIM_EXPORT int cnc_sim_set_dialect(CncSimHandle *handle, CncSimDialect dialect);
CNC_SIM_EXPORT int cnc_sim_set_event_callback(CncSimHandle *handle, CncSimEventCallback callback, void *user_data);
CNC_SIM_EXPORT int cnc_sim_load_config_json(CncSimHandle *handle, const char *json, size_t json_len);
CNC_SIM_EXPORT int cnc_sim_parse_program(CncSimHandle *handle, const char *program, size_t program_len);
CNC_SIM_EXPORT const char *cnc_sim_last_error(CncSimHandle *handle);
#ifdef __cplusplus
}
#endif