#ifndef EMCPOSE_H
#define EMCPOSE_H
#include "emcpos.h"
#include "posemath.h"
typedef enum {
EMCPOSE_ERR_OK = 0,
EMCPOSE_ERR_FAIL = -1,
EMCPOSE_ERR_INPUT_MISSING = -2,
EMCPOSE_ERR_OUTPUT_MISSING = -3,
EMCPOSE_ERR_ALL
} EmcPoseErr;
void emcPoseZero(EmcPose * const pos);
int emcPoseAdd(EmcPose const * const p1, EmcPose const * const p2, EmcPose * const out);
int emcPoseSub(EmcPose const * const p1, EmcPose const * const p2, EmcPose * const out);
int emcPoseToPmCartesian(EmcPose const * const pose,
PmCartesian * const xyz, PmCartesian * const abc, PmCartesian * const uvw);
int pmCartesianToEmcPose(PmCartesian const * const xyz,
PmCartesian const * const abc, PmCartesian const * const uvw, EmcPose * const pose);
int emcPoseSelfAdd(EmcPose * const self, EmcPose const * const p2);
int emcPoseSelfSub(EmcPose * const self, EmcPose const * const p2);
int emcPoseSetXYZ(PmCartesian const * const xyz, EmcPose * const pose);
int emcPoseSetABC(PmCartesian const * const abc, EmcPose * const pose);
int emcPoseSetUVW(PmCartesian const * const uvw, EmcPose * const pose);
int emcPoseGetXYZ(EmcPose const * const pose, PmCartesian * const xyz);
int emcPoseGetABC(EmcPose const * const pose, PmCartesian * const abc);
int emcPoseGetUVW(EmcPose const * const pose, PmCartesian * const uvw);
int emcPoseMagnitude(EmcPose const * const pose, double * const out);
int emcPoseValid(EmcPose const * const pose);
#endif