mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-11-02 19:36:04 +01:00
stepcompress: Pass oid in stepcompress_fill() instead of stepcompress_alloc()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user