Skip to content

Commit 3a9a9e4

Browse files
committed
interpmodule: fix speed property
This makes the `speed` property into a working array, instead of a broken scalar. The `interpreter.speed` property is intended to report the current spindle speed. It's been broken since the multi-spindle stuff went in: the code compiled but failed at runtime, as demonstrated by the `sim/axis/remap/getting-started/demo.ini` config.
1 parent e714b3a commit 3a9a9e4

3 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/emc/rs274ngc/interp_array_types.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
namespace pp = pyplusplus::containers::static_sized;
2727

28+
typedef pp::array_1_t<double, EMCMOT_MAX_SPINDLES> spindle_speed_array, (*spindle_speed_w)(Interp &);
2829
typedef pp::array_1_t< int, ACTIVE_G_CODES> active_g_codes_array, (*active_g_codes_w)( Interp & );
2930
typedef pp::array_1_t< int, ACTIVE_M_CODES> active_m_codes_array, (*active_m_codes_w)( Interp & );
3031
typedef pp::array_1_t< double, ACTIVE_SETTINGS> active_settings_array, (*active_settings_w)( Interp & );

src/emc/rs274ngc/interpmodule.cc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ namespace pp = pyplusplus::containers::static_sized;
5555
#define IS_STRING(x) (PyObject_IsInstance(x.ptr(), (PyObject*)&PyString_Type))
5656
#define IS_INT(x) (PyObject_IsInstance(x.ptr(), (PyObject*)&PyInt_Type))
5757

58+
static spindle_speed_array spindle_speed_wrapper (Interp & inst) {
59+
return spindle_speed_array(inst._setup.speed);
60+
}
61+
5862
static active_g_codes_array active_g_codes_wrapper ( Interp & inst) {
5963
return active_g_codes_array(inst._setup.active_g_codes);
6064
}
@@ -510,12 +514,6 @@ static inline double get_rotation_xy (Interp &interp) {
510514
static inline void set_rotation_xy(Interp &interp, double value) {
511515
interp._setup.rotation_xy = value;
512516
}
513-
static inline double get_speed (Interp &interp, int spindle) {
514-
return interp._setup.speed[spindle];
515-
}
516-
static inline void set_speed(Interp &interp, int spindle, double value) {
517-
interp._setup.speed[spindle] = value;
518-
}
519517
static inline double get_traverse_rate (Interp &interp) {
520518
return interp._setup.traverse_rate;
521519
}
@@ -920,7 +918,6 @@ BOOST_PYTHON_MODULE(interpreter) {
920918
.add_property("program_z", &get_program_z, &set_program_z)
921919
.add_property("return_value", &get_return_value, &set_return_value)
922920
.add_property("rotation_xy", &get_rotation_xy, &set_rotation_xy)
923-
.add_property("speed", &get_speed, &set_speed)
924921
.add_property("traverse_rate", &get_traverse_rate, &set_traverse_rate)
925922
.add_property("u_axis_offset", &get_u_axis_offset, &set_u_axis_offset)
926923
.add_property("u_origin_offset", &get_u_origin_offset, &set_u_origin_offset)
@@ -974,6 +971,14 @@ BOOST_PYTHON_MODULE(interpreter) {
974971

975972

976973
// _setup arrays
974+
.add_property(
975+
"speed",
976+
bp::make_function(
977+
spindle_speed_w(&spindle_speed_wrapper),
978+
bp::with_custodian_and_ward_postcall<0, 1>()
979+
)
980+
)
981+
977982
.add_property( "active_g_codes",
978983
bp::make_function( active_g_codes_w(&active_g_codes_wrapper),
979984
bp::with_custodian_and_ward_postcall< 0, 1 >()))

src/emc/rs274ngc/pyarrays.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ void export_Arrays()
3939
using namespace boost::python;
4040
using namespace boost;
4141

42+
pp::register_array_1<double, EMCMOT_MAX_SPINDLES>("SpindleSpeedArray");
4243
pp::register_array_1< int, ACTIVE_G_CODES> ("ActiveGcodesArray" );
4344
pp::register_array_1< int, ACTIVE_M_CODES> ("ActiveMcodesArray" );
4445
pp::register_array_1< double, ACTIVE_SETTINGS> ("ActiveSettingsArray");

0 commit comments

Comments
 (0)