Run XYZAC through upstream LinuxCNC TP
This commit is contained in:
@@ -140,6 +140,16 @@ int sim_kinematics_switch_inverse(sim_kinematics_switch *switcher,
|
||||
return result;
|
||||
}
|
||||
|
||||
int sim_kinematics_switch_inverse_mode(const sim_kinematics_switch *switcher, int mode,
|
||||
const sim_posemath_pose *pose, double *joints,
|
||||
uint32_t joint_count,
|
||||
sim_kinematics_result_info *info) {
|
||||
if (switcher == 0 || pose == 0 || joints == 0) return SIM_KIN_ERR_ARGUMENT;
|
||||
if (!valid_mode(mode)) return SIM_KIN_ERR_INVALID_MODE;
|
||||
if (!switcher->registered[mode] || switcher->modules[mode] == 0) return SIM_KIN_ERR_MISSING_MODULE;
|
||||
return sim_kinematics_inverse_ex(switcher->modules[mode], pose, joint_count, 0, joints, info);
|
||||
}
|
||||
|
||||
int sim_kinematics_switch_select(sim_kinematics_switch *switcher, int mode,
|
||||
double *joints, uint32_t joint_count,
|
||||
sim_posemath_pose *pose,
|
||||
@@ -161,6 +171,27 @@ int sim_kinematics_switch_select(sim_kinematics_switch *switcher, int mode,
|
||||
return result;
|
||||
}
|
||||
|
||||
int sim_kinematics_switch_select_physical(sim_kinematics_switch *switcher, int mode,
|
||||
const double *joints, uint32_t joint_count,
|
||||
sim_posemath_pose *pose,
|
||||
sim_kinematics_result_info *info) {
|
||||
int result;
|
||||
if (switcher == 0 || joints == 0 || pose == 0) return SIM_KIN_ERR_ARGUMENT;
|
||||
if (!valid_mode(mode)) return SIM_KIN_ERR_INVALID_MODE;
|
||||
if (switcher->switching) return SIM_KIN_ERR_SWITCH_INTERRUPTED;
|
||||
if (!switcher->registered[mode] || switcher->modules[mode] == 0) return SIM_KIN_ERR_MISSING_MODULE;
|
||||
switcher->active_mode = mode;
|
||||
switcher->pending_mode = mode;
|
||||
switcher->switching = 0;
|
||||
switcher->generation += 1;
|
||||
switcher->switch_count += 1;
|
||||
result = sim_kinematics_switch_forward(switcher, joints, joint_count, pose, info);
|
||||
if (result != SIM_KIN_OK) return result;
|
||||
switcher->last_pose[mode] = *pose;
|
||||
switcher->have_last_pose[mode] = 1;
|
||||
return SIM_KIN_OK;
|
||||
}
|
||||
|
||||
int sim_kinematics_switch_active(const sim_kinematics_switch *switcher) {
|
||||
return switcher == 0 ? SIM_KIN_ERR_ARGUMENT : switcher->active_mode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user