Changed tool table to use getters and setters

This commit is contained in:
Alden Hart
2017-01-17 12:24:26 -05:00
parent 9587f1338b
commit eb78d8aac2
4 changed files with 391 additions and 395 deletions
+188 -191
View File
@@ -1530,7 +1530,6 @@ static void _exec_program_finalize(float *value, bool *flag)
if ((cm->cycle_state == CYCLE_MACHINING || cm->cycle_state == CYCLE_OFF) &&
// (cm->machine_state != MACHINE_ALARM) && // omitted by OMC (RAS)
(cm->machine_state != MACHINE_SHUTDOWN)) {
// cm->machine_state = (cmMachineState)value[0]; // don't update macs/cycs if we're in the middle of a canned cycle,
cm->machine_state = machine_state; // don't update macs/cycs if we're in the middle of a canned cycle,
cm->cycle_state = CYCLE_OFF; // or if we're in machine alarm/shutdown mode
}
@@ -1541,7 +1540,6 @@ static void _exec_program_finalize(float *value, bool *flag)
mp_zero_segment_velocity(); // for reporting purposes
// perform the following resets if it's a program END
// if (((uint8_t)value[0]) == MACHINE_PROGRAM_END) {
if (machine_state == MACHINE_PROGRAM_END) {
cm_suspend_origin_offsets(); // G92.2 - as per NIST
// cm_reset_origin_offsets(); // G92.1 - alternative to above
@@ -1632,6 +1630,163 @@ stat_t cm_json_wait(char *json_string)
* These functions are not part of the NIST defined functions
***********************************************************************************/
/***** AXIS HELPERS *****************************************************************
* _coord() - return coordinate system number or -1 if error
* _axis() - return axis # or -1 if not an axis (works for mapped motors as well)
* cm_get_axis_type() - return linear axis (0), rotary axis (1) or error (-1)
* cm_get_axis_char() - return ASCII char for axis given the axis number
*/
static int8_t _coord(char *token) // extract coordinate system from 3rd character
{
char *ptr;
char coord_list[] = {"456789"};
if ((ptr = strchr(coord_list, token[2])) == NULL) { // test the 3rd character against the string
return (-1);
}
return (ptr - coord_list);
}
/* _axis()
*
* Cases that are handled by _get_axis():
* - sys/... value is a system parameter (global), there is no axis
* - xam any axis parameter will return the axis number
* - 1ma any motor parameter will return the mapped axis for that motor
* - 1su an example of the above
* - mpox readouts
* - g54x offsets
* - tlx tool length offset
* - tt1x tool table
* - tt32x tool table
* - _tex diagnostic parameters
*
* Note that this function will return an erroneous value if called by a non-axis tag,
* such as 'coph' But it should not be called in these cases in any event.
*/
static int8_t _axis(const index_t index)
{
// test if this is a SYS parameter (global), in which case there will be no axis
if (strcmp("sys", cfgArray[index].group) == 0) {
return (AXIS_TYPE_SYSTEM);
}
// if the leading character of the token is a number it's a motor
char c = cfgArray[index].token[0];
if (isdigit(cfgArray[index].token[0])) {
return(st_cfg.mot[c-0x31].motor_map);
}
// otherwise it's an axis. Or undefined, which is usually a global.
char *ptr;
char axes[] = {"xyzabc"};
if ((ptr = strchr(axes, c)) == NULL) { // test for prefixed axis
c = *(cfgArray[index].token + strlen(cfgArray[index].token) -1); // test for postfixed axis
if ((ptr = strchr(axes, c)) == NULL) {
return (AXIS_TYPE_UNDEFINED);
}
}
return (ptr - axes);
}
cmAxisType cm_get_axis_type(const index_t index)
{
int8_t axis = _axis(index);
if (axis <= AXIS_TYPE_UNDEFINED) {
return ((cmAxisType)axis);
}
if (axis >= AXIS_A) {
return (AXIS_TYPE_ROTARY);
}
return (AXIS_TYPE_LINEAR);
}
char cm_get_axis_char(const int8_t axis)
{
char axis_char[] = "XYZABC";
if ((axis < 0) || (axis > AXES)) return (' ');
return (axis_char[axis]);
}
/***********************************************************************************
* Run Commands
*
* cm_run_qf() - flush planner queue
* cm_run_home() - run homing sequence
*/
stat_t cm_run_qf(nvObj_t *nv)
{
cm_request_queue_flush();
return (STAT_OK);
}
stat_t cm_run_home(nvObj_t *nv)
{
if (fp_TRUE(nv->value)) {
float axes[] = { 1,1,1,1,1,1 };
bool flags[] = { 1,1,1,1,1,1 };
cm_homing_cycle_start(axes, flags);
}
return (STAT_OK);
}
/*
* Jogging Commands
*
* cm_get_jogging_dest()
* cm_run_jog()
*/
float cm_get_jogging_dest(void)
{
return cm->jogging_dest;
}
stat_t cm_run_jog(nvObj_t *nv)
{
set_float(nv, cm->jogging_dest);
cm_jogging_cycle_start(_axis(nv->index));
return (STAT_OK);
}
/**** Functions called directly from cfgArray table - mostly wrappers ****
* _get_msg_helper() - helper to get string values
*
* cm_get_stat() - get combined machine state as value and string
* cm_get_macs() - get raw machine state as value and string
* cm_get_cycs() - get raw cycle state as value and string
* cm_get_mots() - get raw motion state as value and string
* cm_get_hold() - get raw hold state as value and string
* cm_get_home() - get raw homing state as value and string
*
* cm_get_unit() - get units mode as integer and display string
* cm_get_coor() - get goodinate system
* cm_get_momo() - get runtime motion mode
* cm_get_plan() - get model plane select
* cm_get_path() - get model path control mode
* cm_get_dist() - get model distance mode
* cm_get_admo() - get model arc distance mode
* cm_get_frmo() - get model feed rate mode
* cm_get_tool() - get tool
* cm_get_feed() - get feed rate
* cm_get_mline()- get model line number for status reports
* cm_get_line() - get active (model or runtime) line number for status reports
* cm_get_vel() - get runtime velocity
* cm_get_ofs() - get current work offset (runtime)
* cm_get_pos() - get current work position (runtime)
* cm_get_mpos() - get current machine position (runtime)
*
* cm_print_pos()- print work position (with proper units)
* cm_print_mpos()- print machine position (always mm units)
* cm_print_coor()- print coordinate offsets with linear units
* cm_print_corr()- print coordinate offsets with rotary units
*/
// Strings for writing settings as nvObj string values
// Ref: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=120881&start=0
@@ -1668,9 +1823,9 @@ static const char msg_stat11[] = "Interlock";
static const char msg_stat12[] = "Shutdown";
static const char msg_stat13[] = "Panic";
static const char *const msg_stat[] = { msg_stat0, msg_stat1, msg_stat2, msg_stat3,
msg_stat4, msg_stat5, msg_stat6, msg_stat7,
msg_stat8, msg_stat9, msg_stat10, msg_stat11,
msg_stat12, msg_stat13 };
msg_stat4, msg_stat5, msg_stat6, msg_stat7,
msg_stat8, msg_stat9, msg_stat10, msg_stat11,
msg_stat12, msg_stat13 };
static const char msg_macs0[] = "Initializing";
static const char msg_macs1[] = "Ready";
static const char msg_macs2[] = "Alarm";
@@ -1681,8 +1836,8 @@ static const char msg_macs6[] = "Interlock";
static const char msg_macs7[] = "SHUTDOWN";
static const char msg_macs8[] = "PANIC";
static const char *const msg_macs[] = { msg_macs0, msg_macs1, msg_macs2, msg_macs3,
msg_macs4, msg_macs5, msg_macs6, msg_macs7,
msg_macs8 };
msg_macs4, msg_macs5, msg_macs6, msg_macs7,
msg_macs8 };
static const char msg_cycs0[] = "Off";
static const char msg_cycs1[] = "Machining";
static const char msg_cycs2[] = "Homing";
@@ -1705,7 +1860,7 @@ static const char msg_hold5[] = "Decel Done";
static const char msg_hold6[] = "Pending";
static const char msg_hold7[] = "Hold";
static const char *const msg_hold[] = { msg_hold0, msg_hold1, msg_hold2, msg_hold3,
msg_hold4, msg_hold5, msg_hold6, msg_hold7 };
msg_hold4, msg_hold5, msg_hold6, msg_hold7 };
static const char msg_home0[] = "Not Homed";
static const char msg_home1[] = "Homed";
@@ -1777,116 +1932,6 @@ static const char *const msg_frmo[] = { msg_g93, msg_g94, msg_g95 };
#endif // __TEXT_MODE
/***** AXIS HELPERS *****************************************************************
* _coord() - return coordinate system number or -1 if error
* _axis() - return axis # or -1 if not an axis (works for mapped motors as well)
* cm_get_axis_type() - return linear axis (0), rotary axis (1) or error (-1)
* cm_get_axis_char() - return ASCII char for axis given the axis number
*/
static int8_t _coord(char *token) // extract coordinate system from 3rd character
{
char *ptr;
char coord_list[] = {"456789"};
if ((ptr = strchr(coord_list, token[2])) == NULL) { // test the 3rd character against the string
return (-1);
}
return (ptr - coord_list);
}
/* _axis()
*
* Cases that are handled by _get_axis():
* - sys/... value is a system parameter (global), there is no axis
* - xam any axis parameter will return the axis number
* - 1ma any motor parameter will return the mapped axis for that motor
* - 1su an example of the above
* - mpox readouts
* - g54x offsets
* - tlx tool length offset
* - tt1x tool table
* - tt32x tool table
* - _tex diagnostic parameters
*/
static int8_t _axis(const index_t index)
{
// test if this is a SYS parameter (global), in which case there will be no axis
if (strcmp("sys", cfgArray[index].group) == 0) {
return (AXIS_TYPE_SYSTEM);
}
// if the leading character of the token is a number it's a motor
char c = cfgArray[index].token[0];
if (isdigit(cfgArray[index].token[0])) {
return(st_cfg.mot[c-0x31].motor_map);
}
// otherwise it's an axis. Or undefined, which is usually a global.
char *ptr;
char axes[] = {"xyzabc"};
if ((ptr = strchr(axes, c)) == NULL) { // test the character in the 0 and 3 positions
if ((ptr = strchr(axes, cfgArray[index].token[3])) == NULL) { // to accommodate 'xam' and 'g54x' styles
return (AXIS_TYPE_UNDEFINED);
}
}
return (ptr - axes);
}
cmAxisType cm_get_axis_type(const index_t index)
{
int8_t axis = _axis(index);
if (axis <= AXIS_TYPE_UNDEFINED) {
return ((cmAxisType)axis);
}
if (axis >= AXIS_A) {
return (AXIS_TYPE_ROTARY);
}
return (AXIS_TYPE_LINEAR);
}
char cm_get_axis_char(const int8_t axis)
{
char axis_char[] = "XYZABC";
if ((axis < 0) || (axis > AXES)) return (' ');
return (axis_char[axis]);
}
/**** Functions called directly from cfgArray table - mostly wrappers ****
* _get_msg_helper() - helper to get string values
*
* cm_get_stat() - get combined machine state as value and string
* cm_get_macs() - get raw machine state as value and string
* cm_get_cycs() - get raw cycle state as value and string
* cm_get_mots() - get raw motion state as value and string
* cm_get_hold() - get raw hold state as value and string
* cm_get_home() - get raw homing state as value and string
*
* cm_get_unit() - get units mode as integer and display string
* cm_get_coor() - get goodinate system
* cm_get_momo() - get runtime motion mode
* cm_get_plan() - get model plane select
* cm_get_path() - get model path control mode
* cm_get_dist() - get model distance mode
* cm_get_admo() - get model arc distance mode
* cm_get_frmo() - get model feed rate mode
* cm_get_tool() - get tool
* cm_get_feed() - get feed rate
* cm_get_mline()- get model line number for status reports
* cm_get_line() - get active (model or runtime) line number for status reports
* cm_get_vel() - get runtime velocity
* cm_get_ofs() - get current work offset (runtime)
* cm_get_pos() - get current work position (runtime)
* cm_get_mpos() - get current machine position (runtime)
*
* cm_print_pos()- print work position (with proper units)
* cm_print_mpos()- print machine position (always mm units)
* cm_print_coor()- print coordinate offsets with linear units
* cm_print_corr()- print coordinate offsets with rotary units
*/
// Add the string for the enum to the nv, but leave it as a TYPE_INT
stat_t _get_msg_helper(nvObj_t *nv, const char *const msg_array[], uint8_t value)
{
@@ -1913,28 +1958,7 @@ stat_t cm_get_frmo(nvObj_t *nv) { return(_get_msg_helper(nv, msg_frmo, cm_get_fe
stat_t cm_get_toolv(nvObj_t *nv) { return(get_int(nv, cm_get_tool(ACTIVE_MODEL))); }
stat_t cm_get_mline(nvObj_t *nv) { return(get_int(nv, cm_get_linenum(MODEL))); }
stat_t cm_get_line(nvObj_t *nv) { return(get_int(nv, cm_get_linenum(ACTIVE_MODEL))); }
/*
stat_t cm_get_toolv(nvObj_t *nv)
{
nv->value = (float)cm_get_tool(ACTIVE_MODEL);
nv->valuetype = TYPE_INT;
return (STAT_OK);
}
stat_t cm_get_mline(nvObj_t *nv)
{
nv->value = (float)cm_get_linenum(MODEL);
nv->valuetype = TYPE_INT;
return (STAT_OK);
}
stat_t cm_get_line(nvObj_t *nv)
{
nv->value = (float)cm_get_linenum(ACTIVE_MODEL);
nv->valuetype = TYPE_INT;
return (STAT_OK);
}
*/
stat_t cm_get_vel(nvObj_t *nv)
{
if (cm_get_motion_state() == MOTION_STOP) {
@@ -1974,18 +1998,33 @@ stat_t cm_get_g30(nvObj_t *nv) { return (get_float(nv, cm->gmx.g30_position[_a
**** TOOL TABLE AND OFFSET GET AND SET FUNCTIONS ****
*****************************************************/
stat_t cm_get_tof(nvObj_t *nv)
static uint8_t _tool(nvObj_t *nv)
{
nv->value = cm->tl_offset[_axis(nv->index)];
nv->precision = GET_TABLE_WORD(precision);
nv->valuetype = TYPE_FLOAT;
return (STAT_OK);
if (nv->group[0] != 0) {
return (atoi(&nv->group[2])); // ttNN is the group, axis is in the token
}
return (atoi(&nv->token[2])); // ttNNx is all in the token
}
stat_t cm_set_tof(nvObj_t *nv)
stat_t cm_get_tof(nvObj_t *nv) { return (get_float(nv, cm->tl_offset[_axis(nv->index)])); }
stat_t cm_set_tof(nvObj_t *nv) { return (set_float(nv, cm->tl_offset[_axis(nv->index)])); }
stat_t cm_get_tt(nvObj_t *nv)
{
uint8_t toolnum = _tool(nv);
if (toolnum > TOOLS) {
return (STAT_INPUT_EXCEEDS_MAX_VALUE);
}
return (get_float(nv, tt.tt_offset[toolnum][_axis(nv->index)]));
}
stat_t cm_set_tt(nvObj_t *nv)
{
cm->tl_offset[_axis(nv->index)] = nv->value;
return (STAT_OK);
uint8_t toolnum = _tool(nv);
if (toolnum > TOOLS) {
return (STAT_INPUT_EXCEEDS_MAX_VALUE);
}
return(set_float(nv, tt.tt_offset[toolnum][_axis(nv->index)]));
}
/************************************
@@ -2209,48 +2248,6 @@ stat_t cm_set_gpa(nvObj_t *nv) { return(set_int(nv, (uint8_t &)cm->default_path_
stat_t cm_get_gdi(nvObj_t *nv) { return(get_int(nv, cm->default_distance_mode)); }
stat_t cm_set_gdi(nvObj_t *nv) { return(set_int(nv, (uint8_t &)cm->default_distance_mode, ABSOLUTE_DISTANCE_MODE, INCREMENTAL_DISTANCE_MODE)); }
/*
* Run Commands
*
* cm_run_qf() - flush planner queue
* cm_run_home() - run homing sequence
*/
stat_t cm_run_qf(nvObj_t *nv)
{
cm_request_queue_flush();
return (STAT_OK);
}
stat_t cm_run_home(nvObj_t *nv)
{
if (fp_TRUE(nv->value)) {
float axes[] = { 1,1,1,1,1,1 };
bool flags[] = { 1,1,1,1,1,1 };
cm_homing_cycle_start(axes, flags);
}
return (STAT_OK);
}
/*
* Jogging Commands
*
* cm_get_jogging_dest()
* cm_run_jog()
*/
float cm_get_jogging_dest(void)
{
return cm->jogging_dest;
}
stat_t cm_run_jog(nvObj_t *nv)
{
set_float(nv, cm->jogging_dest);
cm_jogging_cycle_start(_axis(nv->index));
return (STAT_OK);
}
/***********************************************************************************
* Debugging Commands
***********************************************************************************/
@@ -2395,8 +2392,8 @@ void cm_print_tram(nvObj_t *nv) { text_print(nv, fmt_tram);}; // TYPE BOOL
* cm_print_zb()
*
* cm_print_pos() - print position with unit displays for MM or Inches
* cm_print_mpo() - print position with fixed unit display - always in Degrees or MM
* cm_print_tram() - print if the coordinate system is rotated
* cm_print_mpo() - print position with fixed unit display - always in Degrees or MM
* cm_print_tram() - print if the coordinate system is rotated
*/
static const char fmt_Xam[] = "[%s%s] %s axis mode%18d %s\n";
+2
View File
@@ -531,6 +531,8 @@ stat_t cm_run_home(nvObj_t *nv); // start homing cycle
stat_t cm_get_tof(nvObj_t *nv); // get tool offset
stat_t cm_set_tof(nvObj_t *nv); // set tool offset
stat_t cm_get_tt(nvObj_t *nv); // get tool table value
stat_t cm_set_tt(nvObj_t *nv); // set tool table value
stat_t cm_get_am(nvObj_t *nv); // get axis mode
stat_t cm_set_am(nvObj_t *nv); // set axis mode
+200 -203
View File
@@ -677,8 +677,6 @@ const cfgItem_t cfgArray[] = {
{ "", "tram", _f0,0, cm_print_tram,cm_get_tram,cm_set_tram,(float *)&cs.null, 0 }, // SET to attempt setting rotation matrix from probes
{ "", "defa",_f0, 0, tx_print_nul, help_defa,set_defaults,(float *)&cs.null,0 }, // set/print defaults / help screen
{ "", "flash",_f0,0, tx_print_nul, help_flash,hw_flash, (float *)&cs.null,0 },
// { "", "switch",_f0,0, tx_print_nul, get_nul, cm_switch, (float *)&cs.null,0 },
// { "", "return",_f0,0, tx_print_nul, get_nul, cm_return, (float *)&cs.null,0 },
#ifdef __HELP_SCREENS
{ "", "help",_f0, 0, tx_print_nul, help_config, set_nul, (float *)&cs.null,0 }, // prints config help screen
@@ -709,238 +707,237 @@ const cfgItem_t cfgArray[] = {
#endif
// Tool table offsets
{ "tof","tofx",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofy",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofz",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofa",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofb",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofc",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof,(float *)&cs.null, 0 },
{ "tof","tofx",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tof","tofy",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tof","tofz",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tof","tofa",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tof","tofb",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tof","tofc",_fipc, 3, cm_print_cofs, cm_get_tof, cm_set_tof, (float *)&cs.null, 0 },
{ "tt1","tt1x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[1][AXIS_X], TT1_X_OFFSET },
{ "tt1","tt1y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[1][AXIS_Y], TT1_Y_OFFSET },
{ "tt1","tt1z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[1][AXIS_Z], TT1_Z_OFFSET },
{ "tt1","tt1a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[1][AXIS_A], TT1_A_OFFSET },
{ "tt1","tt1b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[1][AXIS_B], TT1_B_OFFSET },
{ "tt1","tt1c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[1][AXIS_C], TT1_C_OFFSET },
// Tool table
{ "tt1","tt1x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_X_OFFSET },
{ "tt1","tt1y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_Y_OFFSET },
{ "tt1","tt1z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_Z_OFFSET },
{ "tt1","tt1a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_A_OFFSET },
{ "tt1","tt1b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_B_OFFSET },
{ "tt1","tt1c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_C_OFFSET },
{ "tt2","tt2x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[2][AXIS_X], TT2_X_OFFSET },
{ "tt2","tt2y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[2][AXIS_Y], TT2_Y_OFFSET },
{ "tt2","tt2z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[2][AXIS_Z], TT2_Z_OFFSET },
{ "tt2","tt2a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[2][AXIS_A], TT2_A_OFFSET },
{ "tt2","tt2b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[2][AXIS_B], TT2_B_OFFSET },
{ "tt2","tt2c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[2][AXIS_C], TT2_C_OFFSET },
{ "tt2","tt2x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_X_OFFSET },
{ "tt2","tt2y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_Y_OFFSET },
{ "tt2","tt2z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_Z_OFFSET },
{ "tt2","tt2a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_A_OFFSET },
{ "tt2","tt2b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_B_OFFSET },
{ "tt2","tt2c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT2_C_OFFSET },
{ "tt3","tt3x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[3][AXIS_X], TT3_X_OFFSET },
{ "tt3","tt3y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[3][AXIS_Y], TT3_Y_OFFSET },
{ "tt3","tt3z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[3][AXIS_Z], TT3_Z_OFFSET },
{ "tt3","tt3a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[3][AXIS_A], TT3_A_OFFSET },
{ "tt3","tt3b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[3][AXIS_B], TT3_B_OFFSET },
{ "tt3","tt3c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[3][AXIS_C], TT1_C_OFFSET },
{ "tt3","tt3x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT3_X_OFFSET },
{ "tt3","tt3y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT3_Y_OFFSET },
{ "tt3","tt3z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT3_Z_OFFSET },
{ "tt3","tt3a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT3_A_OFFSET },
{ "tt3","tt3b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT3_B_OFFSET },
{ "tt3","tt3c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT1_C_OFFSET },
{ "tt4","tt4x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[4][AXIS_X], TT4_X_OFFSET },
{ "tt4","tt4y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[4][AXIS_Y], TT4_Y_OFFSET },
{ "tt4","tt4z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[4][AXIS_Z], TT4_Z_OFFSET },
{ "tt4","tt4a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[4][AXIS_A], TT4_A_OFFSET },
{ "tt4","tt4b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[4][AXIS_B], TT4_B_OFFSET },
{ "tt4","tt4c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[4][AXIS_C], TT4_C_OFFSET },
{ "tt4","tt4x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_X_OFFSET },
{ "tt4","tt4y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_Y_OFFSET },
{ "tt4","tt4z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_Z_OFFSET },
{ "tt4","tt4a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_A_OFFSET },
{ "tt4","tt4b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_B_OFFSET },
{ "tt4","tt4c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT4_C_OFFSET },
{ "tt5","tt5x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[5][AXIS_X], TT5_X_OFFSET },
{ "tt5","tt5y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[5][AXIS_Y], TT5_Y_OFFSET },
{ "tt5","tt5z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[5][AXIS_Z], TT5_Z_OFFSET },
{ "tt5","tt5a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[5][AXIS_A], TT5_A_OFFSET },
{ "tt5","tt5b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[5][AXIS_B], TT5_B_OFFSET },
{ "tt5","tt5c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[5][AXIS_C], TT5_C_OFFSET },
{ "tt5","tt5x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_X_OFFSET },
{ "tt5","tt5y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_Y_OFFSET },
{ "tt5","tt5z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_Z_OFFSET },
{ "tt5","tt5a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_A_OFFSET },
{ "tt5","tt5b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_B_OFFSET },
{ "tt5","tt5c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT5_C_OFFSET },
{ "tt6","tt6x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[6][AXIS_X], TT6_X_OFFSET },
{ "tt6","tt6y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[6][AXIS_Y], TT6_Y_OFFSET },
{ "tt6","tt6z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[6][AXIS_Z], TT6_Z_OFFSET },
{ "tt6","tt6a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[6][AXIS_A], TT6_A_OFFSET },
{ "tt6","tt6b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[6][AXIS_B], TT6_B_OFFSET },
{ "tt6","tt6c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[6][AXIS_C], TT6_C_OFFSET },
{ "tt6","tt6x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_X_OFFSET },
{ "tt6","tt6y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_Y_OFFSET },
{ "tt6","tt6z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_Z_OFFSET },
{ "tt6","tt6a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_A_OFFSET },
{ "tt6","tt6b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_B_OFFSET },
{ "tt6","tt6c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT6_C_OFFSET },
{ "tt7","tt7x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[7][AXIS_X], TT7_X_OFFSET },
{ "tt7","tt7y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[7][AXIS_Y], TT7_Y_OFFSET },
{ "tt7","tt7z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[7][AXIS_Z], TT7_Z_OFFSET },
{ "tt7","tt7a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[7][AXIS_A], TT7_A_OFFSET },
{ "tt7","tt7b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[7][AXIS_B], TT7_B_OFFSET },
{ "tt7","tt7c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[7][AXIS_C], TT7_C_OFFSET },
{ "tt7","tt7x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_X_OFFSET },
{ "tt7","tt7y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_Y_OFFSET },
{ "tt7","tt7z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_Z_OFFSET },
{ "tt7","tt7a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_A_OFFSET },
{ "tt7","tt7b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_B_OFFSET },
{ "tt7","tt7c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT7_C_OFFSET },
{ "tt8","tt8x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[8][AXIS_X], TT8_X_OFFSET },
{ "tt8","tt8y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[8][AXIS_Y], TT8_Y_OFFSET },
{ "tt8","tt8z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[8][AXIS_Z], TT8_Z_OFFSET },
{ "tt8","tt8a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[8][AXIS_A], TT8_A_OFFSET },
{ "tt8","tt8b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[8][AXIS_B], TT8_B_OFFSET },
{ "tt8","tt8c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[8][AXIS_C], TT8_C_OFFSET },
{ "tt8","tt8x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_X_OFFSET },
{ "tt8","tt8y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_Y_OFFSET },
{ "tt8","tt8z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_Z_OFFSET },
{ "tt8","tt8a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_A_OFFSET },
{ "tt8","tt8b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_B_OFFSET },
{ "tt8","tt8c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT8_C_OFFSET },
{ "tt9","tt9x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[9][AXIS_X], TT9_X_OFFSET },
{ "tt9","tt9y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[9][AXIS_Y], TT9_Y_OFFSET },
{ "tt9","tt9z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[9][AXIS_Z], TT9_Z_OFFSET },
{ "tt9","tt9a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[9][AXIS_A], TT9_A_OFFSET },
{ "tt9","tt9b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[9][AXIS_B], TT9_B_OFFSET },
{ "tt9","tt9c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[9][AXIS_C], TT9_C_OFFSET },
{ "tt9","tt9x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_X_OFFSET },
{ "tt9","tt9y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_Y_OFFSET },
{ "tt9","tt9z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_Z_OFFSET },
{ "tt9","tt9a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_A_OFFSET },
{ "tt9","tt9b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_B_OFFSET },
{ "tt9","tt9c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT9_C_OFFSET },
{ "tt10","tt10x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[10][AXIS_X], TT10_X_OFFSET },
{ "tt10","tt10y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[10][AXIS_Y], TT10_Y_OFFSET },
{ "tt10","tt10z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[10][AXIS_Z], TT10_Z_OFFSET },
{ "tt10","tt10a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[10][AXIS_A], TT10_A_OFFSET },
{ "tt10","tt10b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[10][AXIS_B], TT10_B_OFFSET },
{ "tt10","tt10c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[10][AXIS_C], TT10_C_OFFSET },
{ "tt10","tt10x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_X_OFFSET },
{ "tt10","tt10y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_Y_OFFSET },
{ "tt10","tt10z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_Z_OFFSET },
{ "tt10","tt10a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_A_OFFSET },
{ "tt10","tt10b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_B_OFFSET },
{ "tt10","tt10c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT10_C_OFFSET },
{ "tt11","tt11x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[11][AXIS_X], TT11_X_OFFSET },
{ "tt11","tt11y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[11][AXIS_Y], TT11_Y_OFFSET },
{ "tt11","tt11z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[11][AXIS_Z], TT11_Z_OFFSET },
{ "tt11","tt11a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[11][AXIS_A], TT11_A_OFFSET },
{ "tt11","tt11b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[11][AXIS_B], TT11_B_OFFSET },
{ "tt11","tt11c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[11][AXIS_C], TT11_C_OFFSET },
{ "tt11","tt11x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_X_OFFSET },
{ "tt11","tt11y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_Y_OFFSET },
{ "tt11","tt11z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_Z_OFFSET },
{ "tt11","tt11a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_A_OFFSET },
{ "tt11","tt11b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_B_OFFSET },
{ "tt11","tt11c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT11_C_OFFSET },
{ "tt12","tt12x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[12][AXIS_X], TT12_X_OFFSET },
{ "tt12","tt12y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[12][AXIS_Y], TT12_Y_OFFSET },
{ "tt12","tt12z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[12][AXIS_Z], TT12_Z_OFFSET },
{ "tt12","tt12a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[12][AXIS_A], TT12_A_OFFSET },
{ "tt12","tt12b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[12][AXIS_B], TT12_B_OFFSET },
{ "tt12","tt12c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[12][AXIS_C], TT12_C_OFFSET },
{ "tt12","tt12x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_X_OFFSET },
{ "tt12","tt12y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_Y_OFFSET },
{ "tt12","tt12z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_Z_OFFSET },
{ "tt12","tt12a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_A_OFFSET },
{ "tt12","tt12b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_B_OFFSET },
{ "tt12","tt12c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT12_C_OFFSET },
{ "tt13","tt13x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[13][AXIS_X], TT13_X_OFFSET },
{ "tt13","tt13y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[13][AXIS_Y], TT13_Y_OFFSET },
{ "tt13","tt13z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[13][AXIS_Z], TT13_Z_OFFSET },
{ "tt13","tt13a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[13][AXIS_A], TT13_A_OFFSET },
{ "tt13","tt13b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[13][AXIS_B], TT13_B_OFFSET },
{ "tt13","tt13c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[13][AXIS_C], TT13_C_OFFSET },
{ "tt13","tt13x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_X_OFFSET },
{ "tt13","tt13y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_Y_OFFSET },
{ "tt13","tt13z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_Z_OFFSET },
{ "tt13","tt13a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_A_OFFSET },
{ "tt13","tt13b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_B_OFFSET },
{ "tt13","tt13c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT13_C_OFFSET },
{ "tt14","tt14x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[14][AXIS_X], TT14_X_OFFSET },
{ "tt14","tt14y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[14][AXIS_Y], TT14_Y_OFFSET },
{ "tt14","tt14z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[14][AXIS_Z], TT14_Z_OFFSET },
{ "tt14","tt14a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[14][AXIS_A], TT14_A_OFFSET },
{ "tt14","tt14b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[14][AXIS_B], TT14_B_OFFSET },
{ "tt14","tt14c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[14][AXIS_C], TT14_C_OFFSET },
{ "tt14","tt14x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_X_OFFSET },
{ "tt14","tt14y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_Y_OFFSET },
{ "tt14","tt14z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_Z_OFFSET },
{ "tt14","tt14a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_A_OFFSET },
{ "tt14","tt14b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_B_OFFSET },
{ "tt14","tt14c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT14_C_OFFSET },
{ "tt15","tt15x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[15][AXIS_X], TT15_X_OFFSET },
{ "tt15","tt15y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[15][AXIS_Y], TT15_Y_OFFSET },
{ "tt15","tt15z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[15][AXIS_Z], TT15_Z_OFFSET },
{ "tt15","tt15a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[15][AXIS_A], TT15_A_OFFSET },
{ "tt15","tt15b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[15][AXIS_B], TT15_B_OFFSET },
{ "tt15","tt15c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[15][AXIS_C], TT15_C_OFFSET },
{ "tt15","tt15x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_X_OFFSET },
{ "tt15","tt15y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_Y_OFFSET },
{ "tt15","tt15z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_Z_OFFSET },
{ "tt15","tt15a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_A_OFFSET },
{ "tt15","tt15b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_B_OFFSET },
{ "tt15","tt15c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT15_C_OFFSET },
{ "tt16","tt16x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[16][AXIS_X], TT16_X_OFFSET },
{ "tt16","tt16y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[16][AXIS_Y], TT16_Y_OFFSET },
{ "tt16","tt16z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[16][AXIS_Z], TT16_Z_OFFSET },
{ "tt16","tt16a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[16][AXIS_A], TT16_A_OFFSET },
{ "tt16","tt16b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[16][AXIS_B], TT16_B_OFFSET },
{ "tt16","tt16c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[16][AXIS_C], TT16_C_OFFSET },
{ "tt16","tt16x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_X_OFFSET },
{ "tt16","tt16y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_Y_OFFSET },
{ "tt16","tt16z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_Z_OFFSET },
{ "tt16","tt16a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_A_OFFSET },
{ "tt16","tt16b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_B_OFFSET },
{ "tt16","tt16c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT16_C_OFFSET },
{ "tt17","tt17x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[17][AXIS_X], TT17_X_OFFSET },
{ "tt17","tt17y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[17][AXIS_Y], TT17_Y_OFFSET },
{ "tt17","tt17z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[17][AXIS_Z], TT17_Z_OFFSET },
{ "tt17","tt17a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[17][AXIS_A], TT17_A_OFFSET },
{ "tt17","tt17b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[17][AXIS_B], TT17_B_OFFSET },
{ "tt17","tt17c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[17][AXIS_C], TT17_C_OFFSET },
{ "tt17","tt17x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_X_OFFSET },
{ "tt17","tt17y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_Y_OFFSET },
{ "tt17","tt17z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_Z_OFFSET },
{ "tt17","tt17a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_A_OFFSET },
{ "tt17","tt17b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_B_OFFSET },
{ "tt17","tt17c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT17_C_OFFSET },
{ "tt18","tt18x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[18][AXIS_X], TT18_X_OFFSET },
{ "tt18","tt18y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[18][AXIS_Y], TT18_Y_OFFSET },
{ "tt18","tt18z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[18][AXIS_Z], TT18_Z_OFFSET },
{ "tt18","tt18a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[18][AXIS_A], TT18_A_OFFSET },
{ "tt18","tt18b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[18][AXIS_B], TT18_B_OFFSET },
{ "tt18","tt18c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[18][AXIS_C], TT18_C_OFFSET },
{ "tt18","tt18x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_X_OFFSET },
{ "tt18","tt18y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_Y_OFFSET },
{ "tt18","tt18z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_Z_OFFSET },
{ "tt18","tt18a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_A_OFFSET },
{ "tt18","tt18b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_B_OFFSET },
{ "tt18","tt18c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT18_C_OFFSET },
{ "tt19","tt19x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[19][AXIS_X], TT19_X_OFFSET },
{ "tt19","tt19y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[19][AXIS_Y], TT19_Y_OFFSET },
{ "tt19","tt19z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[19][AXIS_Z], TT19_Z_OFFSET },
{ "tt19","tt19a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[19][AXIS_A], TT19_A_OFFSET },
{ "tt19","tt19b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[19][AXIS_B], TT19_B_OFFSET },
{ "tt19","tt19c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[19][AXIS_C], TT19_C_OFFSET },
{ "tt19","tt19x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_X_OFFSET },
{ "tt19","tt19y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_Y_OFFSET },
{ "tt19","tt19z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_Z_OFFSET },
{ "tt19","tt19a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_A_OFFSET },
{ "tt19","tt19b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_B_OFFSET },
{ "tt19","tt19c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT19_C_OFFSET },
{ "tt20","tt20x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[20][AXIS_X], TT20_X_OFFSET },
{ "tt20","tt20y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[20][AXIS_Y], TT20_Y_OFFSET },
{ "tt20","tt20z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[20][AXIS_Z], TT20_Z_OFFSET },
{ "tt20","tt20a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[20][AXIS_A], TT20_A_OFFSET },
{ "tt20","tt20b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[20][AXIS_B], TT20_B_OFFSET },
{ "tt20","tt20c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[20][AXIS_C], TT20_C_OFFSET },
{ "tt20","tt20x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_X_OFFSET },
{ "tt20","tt20y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_Y_OFFSET },
{ "tt20","tt20z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_Z_OFFSET },
{ "tt20","tt20a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_A_OFFSET },
{ "tt20","tt20b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_B_OFFSET },
{ "tt20","tt20c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT20_C_OFFSET },
{ "tt21","tt21x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[21][AXIS_X], TT21_X_OFFSET },
{ "tt21","tt21y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[21][AXIS_Y], TT21_Y_OFFSET },
{ "tt21","tt21z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[21][AXIS_Z], TT21_Z_OFFSET },
{ "tt21","tt21a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[21][AXIS_A], TT21_A_OFFSET },
{ "tt21","tt21b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[21][AXIS_B], TT21_B_OFFSET },
{ "tt21","tt21c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[21][AXIS_C], TT21_C_OFFSET },
{ "tt21","tt21x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_X_OFFSET },
{ "tt21","tt21y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_Y_OFFSET },
{ "tt21","tt21z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_Z_OFFSET },
{ "tt21","tt21a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_A_OFFSET },
{ "tt21","tt21b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_B_OFFSET },
{ "tt21","tt21c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT21_C_OFFSET },
{ "tt22","tt22x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[22][AXIS_X], TT22_X_OFFSET },
{ "tt22","tt22y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[22][AXIS_Y], TT22_Y_OFFSET },
{ "tt22","tt22z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[22][AXIS_Z], TT22_Z_OFFSET },
{ "tt22","tt22a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[22][AXIS_A], TT22_A_OFFSET },
{ "tt22","tt22b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[22][AXIS_B], TT22_B_OFFSET },
{ "tt22","tt22c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[22][AXIS_C], TT22_C_OFFSET },
{ "tt22","tt22x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_X_OFFSET },
{ "tt22","tt22y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_Y_OFFSET },
{ "tt22","tt22z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_Z_OFFSET },
{ "tt22","tt22a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_A_OFFSET },
{ "tt22","tt22b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_B_OFFSET },
{ "tt22","tt22c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT22_C_OFFSET },
{ "tt23","tt23x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[23][AXIS_X], TT23_X_OFFSET },
{ "tt23","tt23y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[23][AXIS_Y], TT23_Y_OFFSET },
{ "tt23","tt23z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[23][AXIS_Z], TT23_Z_OFFSET },
{ "tt23","tt23a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[23][AXIS_A], TT23_A_OFFSET },
{ "tt23","tt23b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[23][AXIS_B], TT23_B_OFFSET },
{ "tt23","tt23c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[23][AXIS_C], TT23_C_OFFSET },
{ "tt23","tt23x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_X_OFFSET },
{ "tt23","tt23y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_Y_OFFSET },
{ "tt23","tt23z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_Z_OFFSET },
{ "tt23","tt23a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_A_OFFSET },
{ "tt23","tt23b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_B_OFFSET },
{ "tt23","tt23c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT23_C_OFFSET },
{ "tt24","tt24x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[24][AXIS_X], TT24_X_OFFSET },
{ "tt24","tt24y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[24][AXIS_Y], TT24_Y_OFFSET },
{ "tt24","tt24z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[24][AXIS_Z], TT24_Z_OFFSET },
{ "tt24","tt24a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[24][AXIS_A], TT24_A_OFFSET },
{ "tt24","tt24b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[24][AXIS_B], TT24_B_OFFSET },
{ "tt24","tt24c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[24][AXIS_C], TT24_C_OFFSET },
{ "tt24","tt24x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_X_OFFSET },
{ "tt24","tt24y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_Y_OFFSET },
{ "tt24","tt24z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_Z_OFFSET },
{ "tt24","tt24a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_A_OFFSET },
{ "tt24","tt24b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_B_OFFSET },
{ "tt24","tt24c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT24_C_OFFSET },
{ "tt25","tt25x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[25][AXIS_X], TT25_X_OFFSET },
{ "tt25","tt25y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[25][AXIS_Y], TT25_Y_OFFSET },
{ "tt25","tt25z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[25][AXIS_Z], TT25_Z_OFFSET },
{ "tt25","tt25a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[25][AXIS_A], TT25_A_OFFSET },
{ "tt25","tt25b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[25][AXIS_B], TT25_B_OFFSET },
{ "tt25","tt25c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[25][AXIS_C], TT25_C_OFFSET },
{ "tt25","tt25x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_X_OFFSET },
{ "tt25","tt25y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_Y_OFFSET },
{ "tt25","tt25z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_Z_OFFSET },
{ "tt25","tt25a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_A_OFFSET },
{ "tt25","tt25b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_B_OFFSET },
{ "tt25","tt25c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT25_C_OFFSET },
{ "tt26","tt26x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[26][AXIS_X], TT26_X_OFFSET },
{ "tt26","tt26y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[26][AXIS_Y], TT26_Y_OFFSET },
{ "tt26","tt26z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[26][AXIS_Z], TT26_Z_OFFSET },
{ "tt26","tt26a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[26][AXIS_A], TT26_A_OFFSET },
{ "tt26","tt26b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[26][AXIS_B], TT26_B_OFFSET },
{ "tt26","tt26c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[26][AXIS_C], TT26_C_OFFSET },
{ "tt26","tt26x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_X_OFFSET },
{ "tt26","tt26y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_Y_OFFSET },
{ "tt26","tt26z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_Z_OFFSET },
{ "tt26","tt26a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_A_OFFSET },
{ "tt26","tt26b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_B_OFFSET },
{ "tt26","tt26c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT26_C_OFFSET },
{ "tt27","tt27x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[27][AXIS_X], TT27_X_OFFSET },
{ "tt27","tt27y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[27][AXIS_Y], TT27_Y_OFFSET },
{ "tt27","tt27z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[27][AXIS_Z], TT27_Z_OFFSET },
{ "tt27","tt27a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[27][AXIS_A], TT27_A_OFFSET },
{ "tt27","tt27b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[27][AXIS_B], TT27_B_OFFSET },
{ "tt27","tt27c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[27][AXIS_C], TT27_C_OFFSET },
{ "tt27","tt27x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_X_OFFSET },
{ "tt27","tt27y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_Y_OFFSET },
{ "tt27","tt27z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_Z_OFFSET },
{ "tt27","tt27a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_A_OFFSET },
{ "tt27","tt27b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_B_OFFSET },
{ "tt27","tt27c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT27_C_OFFSET },
{ "tt28","tt28x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[28][AXIS_X], TT28_X_OFFSET },
{ "tt28","tt28y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[28][AXIS_Y], TT28_Y_OFFSET },
{ "tt28","tt28z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[28][AXIS_Z], TT28_Z_OFFSET },
{ "tt28","tt28a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[28][AXIS_A], TT28_A_OFFSET },
{ "tt28","tt28b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[28][AXIS_B], TT28_B_OFFSET },
{ "tt28","tt28c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[28][AXIS_C], TT28_C_OFFSET },
{ "tt28","tt28x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_X_OFFSET },
{ "tt28","tt28y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_Y_OFFSET },
{ "tt28","tt28z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_Z_OFFSET },
{ "tt28","tt28a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_A_OFFSET },
{ "tt28","tt28b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_B_OFFSET },
{ "tt28","tt28c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT28_C_OFFSET },
{ "tt29","tt29x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[29][AXIS_X], TT29_X_OFFSET },
{ "tt29","tt29y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[29][AXIS_Y], TT29_Y_OFFSET },
{ "tt29","tt29z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[29][AXIS_Z], TT29_Z_OFFSET },
{ "tt29","tt29a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[29][AXIS_A], TT29_A_OFFSET },
{ "tt29","tt29b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[29][AXIS_B], TT29_B_OFFSET },
{ "tt29","tt29c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[29][AXIS_C], TT29_C_OFFSET },
{ "tt29","tt29x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_X_OFFSET },
{ "tt29","tt29y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_Y_OFFSET },
{ "tt29","tt29z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_Z_OFFSET },
{ "tt29","tt29a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_A_OFFSET },
{ "tt29","tt29b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_B_OFFSET },
{ "tt29","tt29c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT29_C_OFFSET },
{ "tt30","tt30x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[30][AXIS_X], TT30_X_OFFSET },
{ "tt30","tt30y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[30][AXIS_Y], TT30_Y_OFFSET },
{ "tt30","tt30z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[30][AXIS_Z], TT30_Z_OFFSET },
{ "tt30","tt30a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[30][AXIS_A], TT30_A_OFFSET },
{ "tt30","tt30b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[30][AXIS_B], TT30_B_OFFSET },
{ "tt30","tt30c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[30][AXIS_C], TT30_C_OFFSET },
{ "tt31","tt31x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[31][AXIS_X], TT31_X_OFFSET },
{ "tt31","tt31y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[31][AXIS_Y], TT31_Y_OFFSET },
{ "tt31","tt31z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[31][AXIS_Z], TT31_Z_OFFSET },
{ "tt31","tt31a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[31][AXIS_A], TT31_A_OFFSET },
{ "tt31","tt31b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[31][AXIS_B], TT31_B_OFFSET },
{ "tt31","tt31c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[31][AXIS_C], TT31_C_OFFSET },
{ "tt32","tt32x",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[32][AXIS_X], TT32_X_OFFSET },
{ "tt32","tt32y",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[32][AXIS_Y], TT32_Y_OFFSET },
{ "tt32","tt32z",_fipc, 3, cm_print_cofs, get_flt, set_flu,(float *)&tt.tt_offset[32][AXIS_Z], TT32_Z_OFFSET },
{ "tt32","tt32a",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[32][AXIS_A], TT32_A_OFFSET },
{ "tt32","tt32b",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[32][AXIS_B], TT32_B_OFFSET },
{ "tt32","tt32c",_fipc, 3, cm_print_cofs, get_flt, set_flt,(float *)&tt.tt_offset[32][AXIS_C], TT32_C_OFFSET },
{ "tt30","tt30x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_X_OFFSET },
{ "tt30","tt30y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_Y_OFFSET },
{ "tt30","tt30z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_Z_OFFSET },
{ "tt30","tt30a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_A_OFFSET },
{ "tt30","tt30b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_B_OFFSET },
{ "tt30","tt30c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT30_C_OFFSET },
{ "tt31","tt31x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_X_OFFSET },
{ "tt31","tt31y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_Y_OFFSET },
{ "tt31","tt31z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_Z_OFFSET },
{ "tt31","tt31a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_A_OFFSET },
{ "tt31","tt31b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_B_OFFSET },
{ "tt31","tt31c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT31_C_OFFSET },
{ "tt32","tt32x",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_X_OFFSET },
{ "tt32","tt32y",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_Y_OFFSET },
{ "tt32","tt32z",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_Z_OFFSET },
{ "tt32","tt32a",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_A_OFFSET },
{ "tt32","tt32b",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_B_OFFSET },
{ "tt32","tt32c",_fipc, 3, cm_print_cofs, cm_get_tt, cm_set_tt, (float *)&cs.null, TT32_C_OFFSET },
// Diagnostic parameters
#ifdef __DIAGNOSTIC_PARAMETERS
@@ -1321,7 +1318,7 @@ void convert_outgoing_float(nvObj_t *nv) { return(_convert (nv, INCHES_PER_MM));
* set_float() - boilerplate for setting a floating point value with unit conversion
* set_float_range() - set a floating point value with inclusive range check
*
* get_float() returns a raw float value in internal canonical units (e.g. mm, degrees)
* get_float() loads nv->value with 'value' in internal canonical units (e.g. mm, degrees)
* without units conversion. If conversion is required call convert_outgoing_float()
* afterwards. The text mode and JSON display routines do this, so you generally don't
* have to worry about this.
+1 -1
View File
@@ -262,7 +262,7 @@ char *get_status_message(stat_t status);
#define STAT_P_WORD_IS_ZERO 162
#define STAT_P_WORD_IS_NEGATIVE 163 // dwells require positive P values
#define STAT_P_WORD_IS_NOT_AN_INTEGER 164 // G10s and other commands require integer P numbers
#define STAT_P_WORD_IS_NOT_VALID_TOOL_NUMBER 165
#define STAT_P_WORD_IS_NOT_VALID_TOOL_NUMBER 165 // invalid tool number
#define STAT_D_WORD_IS_MISSING 166
#define STAT_D_WORD_IS_INVALID 167
#define STAT_E_WORD_IS_MISSING 168