stepcompress: Pass oid in stepcompress_fill() instead of stepcompress_alloc()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor
2025-09-18 18:45:18 -04:00
parent f21cca049f
commit a29cfc1701
6 changed files with 16 additions and 16 deletions

View File

@@ -36,9 +36,10 @@ defs_stepcompress = """
int step_count, interval, add; int step_count, interval, add;
}; };
struct stepcompress *stepcompress_alloc(uint32_t oid, char name[16]); struct stepcompress *stepcompress_alloc(char name[16]);
void stepcompress_fill(struct stepcompress *sc, uint32_t max_error void stepcompress_fill(struct stepcompress *sc, uint32_t oid
, int32_t queue_step_msgtag, int32_t set_next_step_dir_msgtag); , uint32_t max_error, int32_t queue_step_msgtag
, int32_t set_next_step_dir_msgtag);
void stepcompress_set_invert_sdir(struct stepcompress *sc void stepcompress_set_invert_sdir(struct stepcompress *sc
, uint32_t invert_sdir); , uint32_t invert_sdir);
void stepcompress_free(struct stepcompress *sc); void stepcompress_free(struct stepcompress *sc);

View File

@@ -258,13 +258,12 @@ static void sc_thread_free(struct stepcompress *sc);
// Allocate a new 'stepcompress' object // Allocate a new 'stepcompress' object
struct stepcompress * __visible struct stepcompress * __visible
stepcompress_alloc(uint32_t oid, char name[16]) stepcompress_alloc(char name[16])
{ {
struct stepcompress *sc = malloc(sizeof(*sc)); struct stepcompress *sc = malloc(sizeof(*sc));
memset(sc, 0, sizeof(*sc)); memset(sc, 0, sizeof(*sc));
list_init(&sc->msg_queue); list_init(&sc->msg_queue);
list_init(&sc->history_list); list_init(&sc->history_list);
sc->oid = oid;
sc->sdir = -1; sc->sdir = -1;
int ret = sc_thread_alloc(sc, name); int ret = sc_thread_alloc(sc, name);
@@ -275,9 +274,10 @@ stepcompress_alloc(uint32_t oid, char name[16])
// Fill message id information // Fill message id information
void __visible void __visible
stepcompress_fill(struct stepcompress *sc, uint32_t max_error stepcompress_fill(struct stepcompress *sc, uint32_t oid, uint32_t max_error
, int32_t queue_step_msgtag, int32_t set_next_step_dir_msgtag) , int32_t queue_step_msgtag, int32_t set_next_step_dir_msgtag)
{ {
sc->oid = oid;
sc->max_error = max_error; sc->max_error = max_error;
sc->queue_step_msgtag = queue_step_msgtag; sc->queue_step_msgtag = queue_step_msgtag;
sc->set_next_step_dir_msgtag = set_next_step_dir_msgtag; sc->set_next_step_dir_msgtag = set_next_step_dir_msgtag;

View File

@@ -11,8 +11,8 @@ struct pull_history_steps {
int step_count, interval, add; int step_count, interval, add;
}; };
struct stepcompress *stepcompress_alloc(uint32_t oid, char name[16]); struct stepcompress *stepcompress_alloc(char name[16]);
void stepcompress_fill(struct stepcompress *sc, uint32_t max_error void stepcompress_fill(struct stepcompress *sc, uint32_t oid, uint32_t max_error
, int32_t queue_step_msgtag , int32_t queue_step_msgtag
, int32_t set_next_step_dir_msgtag); , int32_t set_next_step_dir_msgtag);
void stepcompress_set_invert_sdir(struct stepcompress *sc void stepcompress_set_invert_sdir(struct stepcompress *sc

View File

@@ -69,10 +69,10 @@ class PrinterMotionQueuing:
ffi_main, ffi_lib = chelper.get_ffi() ffi_main, ffi_lib = chelper.get_ffi()
return ffi_lib.trapq_append return ffi_lib.trapq_append
# C steppersync tracking # C steppersync tracking
def allocate_stepcompress(self, mcu, oid, name): def allocate_stepcompress(self, mcu, name):
name = name.encode("utf-8")[:15] name = name.encode("utf-8")[:15]
ffi_main, ffi_lib = chelper.get_ffi() ffi_main, ffi_lib = chelper.get_ffi()
sc = ffi_main.gc(ffi_lib.stepcompress_alloc(oid, name), sc = ffi_main.gc(ffi_lib.stepcompress_alloc(name),
ffi_lib.stepcompress_free) ffi_lib.stepcompress_free)
self.stepcompress.append((mcu, sc)) self.stepcompress.append((mcu, sc))
return sc return sc

View File

@@ -14,12 +14,11 @@ class MCU_queued_pwm:
self._hardware_pwm = False self._hardware_pwm = False
self._cycle_time = 0.100 self._cycle_time = 0.100
self._max_duration = 2. self._max_duration = 2.
self._oid = oid = mcu.create_oid() self._oid = mcu.create_oid()
printer = mcu.get_printer() printer = mcu.get_printer()
sname = config.get_name().split()[-1] sname = config.get_name().split()[-1]
self._motion_queuing = printer.load_object(config, 'motion_queuing') self._motion_queuing = printer.load_object(config, 'motion_queuing')
self._stepqueue = self._motion_queuing.allocate_stepcompress( self._stepqueue = self._motion_queuing.allocate_stepcompress(mcu, sname)
mcu, oid, sname)
ffi_main, ffi_lib = chelper.get_ffi() ffi_main, ffi_lib = chelper.get_ffi()
self._stepcompress_queue_mq_msg = ffi_lib.stepcompress_queue_mq_msg self._stepcompress_queue_mq_msg = ffi_lib.stepcompress_queue_mq_msg
mcu.register_config_callback(self._build_config) mcu.register_config_callback(self._build_config)

View File

@@ -29,7 +29,7 @@ class MCU_stepper:
self._units_in_radians = units_in_radians self._units_in_radians = units_in_radians
self._step_dist = rotation_dist / steps_per_rotation self._step_dist = rotation_dist / steps_per_rotation
self._mcu = mcu = step_pin_params['chip'] self._mcu = mcu = step_pin_params['chip']
self._oid = oid = mcu.create_oid() self._oid = mcu.create_oid()
mcu.register_config_callback(self._build_config) mcu.register_config_callback(self._build_config)
self._step_pin = step_pin_params['pin'] self._step_pin = step_pin_params['pin']
self._invert_step = step_pin_params['invert'] self._invert_step = step_pin_params['invert']
@@ -45,7 +45,7 @@ class MCU_stepper:
self._active_callbacks = [] self._active_callbacks = []
motion_queuing = printer.load_object(config, 'motion_queuing') motion_queuing = printer.load_object(config, 'motion_queuing')
sname = self._name.split()[-1] sname = self._name.split()[-1]
self._stepqueue = motion_queuing.allocate_stepcompress(mcu, oid, sname) self._stepqueue = motion_queuing.allocate_stepcompress(mcu, sname)
ffi_main, ffi_lib = chelper.get_ffi() ffi_main, ffi_lib = chelper.get_ffi()
ffi_lib.stepcompress_set_invert_sdir(self._stepqueue, self._invert_dir) ffi_lib.stepcompress_set_invert_sdir(self._stepqueue, self._invert_dir)
self._stepper_kinematics = None self._stepper_kinematics = None
@@ -123,7 +123,7 @@ class MCU_stepper:
max_error = self._mcu.get_max_stepper_error() max_error = self._mcu.get_max_stepper_error()
max_error_ticks = self._mcu.seconds_to_clock(max_error) max_error_ticks = self._mcu.seconds_to_clock(max_error)
ffi_main, ffi_lib = chelper.get_ffi() ffi_main, ffi_lib = chelper.get_ffi()
ffi_lib.stepcompress_fill(self._stepqueue, max_error_ticks, ffi_lib.stepcompress_fill(self._stepqueue, self._oid, max_error_ticks,
step_cmd_tag, dir_cmd_tag) step_cmd_tag, dir_cmd_tag)
def get_oid(self): def get_oid(self):
return self._oid return self._oid