Skip to content

Commit 8440b96

Browse files
authored
Merge pull request #1385 from LinuxCNC/backport-metric_machine
Backport metric machine
2 parents 30f7380 + 88ba23a commit 8440b96

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

src/emc/rs274ngc/interp_namedparams.cc

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,6 @@ int Interp::lookup_named_param(const char *nameBuf,
744744
*value = _task;
745745
break;
746746

747-
748747
default:
749748
ERS(_("BUG: lookup_named_param(%s): unhandled index=%fn"),
750749
nameBuf,index);
@@ -781,12 +780,16 @@ int Interp::init_named_parameters()
781780
const char *pkgversion = PACKAGE_VERSION; //examples: 2.4.6, 2.5.0~pre
782781
const char *version_major = "_vmajor";// named_parameter name (use lower case)
783782
const char *version_minor = "_vminor";// named_parameter name (use lower case)
784-
double vmajor=0.0, vminor=0.0;
783+
const char *metric_machine = "_metric_machine";// named_parameter name (use lower case)
784+
double vmajor=0.0, vminor=0.0, munits = 1.0;
785785
sscanf(pkgversion, "%lf%lf", &vmajor, &vminor);
786786

787787
init_readonly_param(version_major,vmajor,0);
788788
init_readonly_param(version_minor,vminor,0);
789789

790+
munits = inicheck();
791+
init_readonly_param(metric_machine,munits,0);
792+
790793
// params tagged with PA_USE_LOOKUP will call the lookup_named_param()
791794
// method. The value is used as a index for the switch() statement.
792795

@@ -906,3 +909,32 @@ int Interp::init_named_parameters()
906909

907910
return INTERP_OK;
908911
}
912+
913+
double Interp::inicheck()
914+
{
915+
IniFile inifile;
916+
const char *filename;
917+
const char *inistring;
918+
double result = -1.0;
919+
920+
if ((filename = getenv("INI_FILE_NAME")) == NULL) {
921+
return -1.0;
922+
}
923+
924+
// open it
925+
if (inifile.Open(filename) == false) {
926+
return -1.0;
927+
}
928+
929+
if (NULL != (inistring = inifile.Find("LINEAR_UNITS", "TRAJ"))) {
930+
if (!strcmp(inistring, "inch")) {
931+
result = 0.0;
932+
} else {
933+
result = 1.0;
934+
}
935+
}
936+
// close it
937+
inifile.Close();
938+
939+
return result;
940+
}

src/emc/rs274ngc/rs274ngc_interp.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ public:
134134
int add_named_param(const char *nameBuf, int attr = 0);
135135
int fetch_ini_param( const char *nameBuf, int *status, double *value);
136136
int fetch_hal_param( const char *nameBuf, int *status, double *value);
137+
double inicheck();
137138

138139
// common combination of add_named_param and store_named_param
139140
// int assign_named_param(const char *nameBuf, int attr = 0, double value = 0.0);

tests/remap/introspect/expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ speed= 3000.0
3030
global parameter set in test.ngc: 47.11
3131
parameter set via test.ini: 3.14159
3232
locals: ['a_new_local']
33-
globals: ['_a', '_a_global_set_in_test_dot_ngc', '_a_new_global', '_absolute', '_adaptive_feed', '_b', '_c', '_call_level', '_ccomp', '_coord_system', '_current_pocket', '_current_tool', '_feed', '_feed_hold', '_feed_override', '_flood', '_ijk_absolute_mode', '_imperial', '_incremental', '_ini[example]variable', '_inverse_time', '_lathe_diameter_mode', '_lathe_radius_mode', '_line', '_metric', '_mist', '_motion_mode', '_plane', '_remap_level', '_retract_old_z', '_retract_r_plane', '_rpm', '_selected_pocket', '_selected_tool', '_speed_override', '_spindle_css_mode', '_spindle_cw', '_spindle_on', '_spindle_rpm_mode', '_task', '_tool_offset', '_u', '_units_per_minute', '_units_per_rev', '_v', '_value', '_value_returned', '_vmajor', '_vminor', '_w', '_x', '_y', '_z', 'foo']
34-
params(): ['a_new_local', '_a', '_a_global_set_in_test_dot_ngc', '_a_new_global', '_absolute', '_adaptive_feed', '_b', '_c', '_call_level', '_ccomp', '_coord_system', '_current_pocket', '_current_tool', '_feed', '_feed_hold', '_feed_override', '_flood', '_ijk_absolute_mode', '_imperial', '_incremental', '_ini[example]variable', '_inverse_time', '_lathe_diameter_mode', '_lathe_radius_mode', '_line', '_metric', '_mist', '_motion_mode', '_plane', '_remap_level', '_retract_old_z', '_retract_r_plane', '_rpm', '_selected_pocket', '_selected_tool', '_speed_override', '_spindle_css_mode', '_spindle_cw', '_spindle_on', '_spindle_rpm_mode', '_task', '_tool_offset', '_u', '_units_per_minute', '_units_per_rev', '_v', '_value', '_value_returned', '_vmajor', '_vminor', '_w', '_x', '_y', '_z', 'foo']
33+
globals: ['_a', '_a_global_set_in_test_dot_ngc', '_a_new_global', '_absolute', '_adaptive_feed', '_b', '_c', '_call_level', '_ccomp', '_coord_system', '_current_pocket', '_current_tool', '_feed', '_feed_hold', '_feed_override', '_flood', '_ijk_absolute_mode', '_imperial', '_incremental', '_ini[example]variable', '_inverse_time', '_lathe_diameter_mode', '_lathe_radius_mode', '_line', '_metric', '_metric_machine', '_mist', '_motion_mode', '_plane', '_remap_level', '_retract_old_z', '_retract_r_plane', '_rpm', '_selected_pocket', '_selected_tool', '_speed_override', '_spindle_css_mode', '_spindle_cw', '_spindle_on', '_spindle_rpm_mode', '_task', '_tool_offset', '_u', '_units_per_minute', '_units_per_rev', '_v', '_value', '_value_returned', '_vmajor', '_vminor', '_w', '_x', '_y', '_z', 'foo']
34+
params(): ['a_new_local', '_a', '_a_global_set_in_test_dot_ngc', '_a_new_global', '_absolute', '_adaptive_feed', '_b', '_c', '_call_level', '_ccomp', '_coord_system', '_current_pocket', '_current_tool', '_feed', '_feed_hold', '_feed_override', '_flood', '_ijk_absolute_mode', '_imperial', '_incremental', '_ini[example]variable', '_inverse_time', '_lathe_diameter_mode', '_lathe_radius_mode', '_line', '_metric', '_metric_machine', '_mist', '_motion_mode', '_plane', '_remap_level', '_retract_old_z', '_retract_r_plane', '_rpm', '_selected_pocket', '_selected_tool', '_speed_override', '_spindle_css_mode', '_spindle_cw', '_spindle_on', '_spindle_rpm_mode', '_task', '_tool_offset', '_u', '_units_per_minute', '_units_per_rev', '_v', '_value', '_value_returned', '_vmajor', '_vminor', '_w', '_x', '_y', '_z', 'foo']
3535
15 N..... MESSAGE(" after introspect: return value=2.718280 call_level= 0.000000")
3636
16 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3737
17 N..... SET_XY_ROTATION(0.0000)

0 commit comments

Comments
 (0)