controlboardinterfacesimpl.inl
来自「一个语言识别引擎」· INL 代码 · 共 1,307 行 · 第 1/3 页
INL
1,307 行
bool ImplementPidControl<DERIVED, IMPLEMENT>::disablePid(int j)
{
int k=0;
k=castToMapper(helper)->toHw(j);
return iPid->disablePidRaw(k);
}
template<class DERIVED, class IMPLEMENT>
bool ImplementPidControl<DERIVED, IMPLEMENT>::setOffset(int j, double v)
{
int k=0;
k=castToMapper(helper)->toHw(j);
return iPid->setOffsetRaw(k, v);
}
////////////////////////
// Encoder Interface Implementation
template <class DERIVED, class IMPLEMENT>
ImplementEncoders<DERIVED, IMPLEMENT>::ImplementEncoders(DERIVED *y)
{
iEncoders= dynamic_cast<IEncodersRaw *> (y);
helper = 0;
temp=0;
}
template <class DERIVED, class IMPLEMENT>
ImplementEncoders<DERIVED, IMPLEMENT>::~ImplementEncoders()
{
uninitialize();
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>:: initialize (int size, const int *amap, const double *enc, const double *zos)
{
if (helper!=0)
return false;
helper=(void *)(new ControlBoardHelper(size, amap, enc, zos));
ACE_ASSERT (helper != 0);
temp=new double [size];
ACE_ASSERT (temp != 0);
return true;
}
/**
* Clean up internal data and memory.
* @return true if uninitialization is executed, false otherwise.
*/
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::uninitialize ()
{
if (helper!=0)
{
delete castToMapper(helper);
helper=0;
}
checkAndDestroy(temp);
return true;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getAxes(int *ax)
{
(*ax)=castToMapper(helper)->axes();
return true;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::resetEncoder(int j)
{
int k;
k=castToMapper(helper)->toHw(j);
return iEncoders->resetEncoderRaw(k);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::resetEncoders()
{
return iEncoders->resetEncodersRaw();
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::setEncoder(int j, double val)
{
int k;
double enc;
castToMapper(helper)->posA2E(val, j, enc, k);
return iEncoders->setEncoderRaw(k, enc);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::setEncoders(const double *val)
{
castToMapper(helper)->posA2E(val, temp);
return iEncoders->setEncodersRaw(temp);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoder(int j, double *v)
{
int k;
double enc;
bool ret;
k=castToMapper(helper)->toHw(j);
ret=iEncoders->getEncoderRaw(k, &enc);
*v=castToMapper(helper)->posE2A(enc, k);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoders(double *v)
{
bool ret;
ret=iEncoders->getEncodersRaw(temp);
castToMapper(helper)->posE2A(temp, v);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoderSpeed(int j, double *v)
{
int k;
double enc;
bool ret;
k=castToMapper(helper)->toHw(j);
ret=iEncoders->getEncoderSpeedRaw(k, &enc);
*v=castToMapper(helper)->velE2A(enc, k);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoderSpeeds(double *v)
{
bool ret;
ret=iEncoders->getEncoderSpeedsRaw(temp);
castToMapper(helper)->velE2A(temp, v);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoderAcceleration(int j, double *v)
{
int k;
double enc;
bool ret;
k=castToMapper(helper)->toHw(j);
ret=iEncoders->getEncoderAccelerationRaw(k, &enc);
*v=castToMapper(helper)->accE2A(enc, k);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementEncoders<DERIVED, IMPLEMENT>::getEncoderAccelerations(double *v)
{
bool ret;
ret=iEncoders->getEncoderAccelerationsRaw(temp);
castToMapper(helper)->accE2A(temp, v);
return ret;
}
////////////////////////
// ControlCalibration Interface Implementation
template <class DERIVED, class IMPLEMENT>
ImplementControlCalibration<DERIVED, IMPLEMENT>::ImplementControlCalibration(DERIVED *y)
{
iCalibrate= dynamic_cast<IControlCalibrationRaw *> (y);
helper = 0;
temp=0;
}
template <class DERIVED, class IMPLEMENT>
ImplementControlCalibration<DERIVED, IMPLEMENT>::~ImplementControlCalibration()
{
uninitialize();
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlCalibration<DERIVED, IMPLEMENT>:: initialize (int size, const int *amap, const double *enc, const double *zos)
{
if (helper!=0)
return false;
helper=(void *)(new ControlBoardHelper(size, amap, enc, zos));
ACE_ASSERT (helper != 0);
temp=new double [size];
ACE_ASSERT (temp != 0);
return true;
}
/**
* Clean up internal data and memory.
* @return true if uninitialization is executed, false otherwise.
*/
template <class DERIVED, class IMPLEMENT>
bool ImplementControlCalibration<DERIVED, IMPLEMENT>::uninitialize ()
{
if (helper!=0)
{
delete castToMapper(helper);
helper=0;
}
checkAndDestroy(temp);
return true;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlCalibration<DERIVED, IMPLEMENT>::calibrate(int j, double p)
{
int k=castToMapper(helper)->toHw(j);
return iCalibrate->calibrateRaw(k, p);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlCalibration<DERIVED, IMPLEMENT>::done(int j)
{
int k=castToMapper(helper)->toHw(j);
return iCalibrate->doneRaw(k);
}
////////////////////////
///////////////// ImplementControlLimits
template <class DERIVED, class IMPLEMENT>
ImplementControlLimits<DERIVED, IMPLEMENT>::ImplementControlLimits(DERIVED *y)
{
iLimits= dynamic_cast<IControlLimitsRaw *> (y);
helper = 0;
temp=0;
}
template <class DERIVED, class IMPLEMENT>
ImplementControlLimits<DERIVED, IMPLEMENT>::~ImplementControlLimits()
{
uninitialize();
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlLimits<DERIVED, IMPLEMENT>:: initialize (int size, const int *amap, const double *enc, const double *zos)
{
if (helper!=0)
return false;
// not sure if fix from next line to the line after is correct, hope so
//helper=(void *)(new ControlBoardHelper(size, amap, enc, zeros));
helper=(void *)(new ControlBoardHelper(size, amap, enc, zos));
ACE_ASSERT (helper != 0);
temp=new double [size];
ACE_ASSERT (temp != 0);
return true;
}
/**
* Clean up internal data and memory.
* @return true if uninitialization is executed, false otherwise.
*/
template <class DERIVED, class IMPLEMENT>
bool ImplementControlLimits<DERIVED, IMPLEMENT>::uninitialize ()
{
if (helper!=0)
delete castToMapper(helper);
helper=0;
checkAndDestroy(temp);
return true;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlLimits<DERIVED, IMPLEMENT>::setLimits(int j, double min, double max)
{
double minEnc;
double maxEnc;
int k=0;
castToMapper(helper)->posA2E(min, j, minEnc, k);
castToMapper(helper)->posA2E(max, j, maxEnc, k);
return iLimits->setLimitsRaw(k, minEnc, maxEnc);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementControlLimits<DERIVED, IMPLEMENT>::getLimits(int j, double *min, double *max)
{
double minEnc;
double maxEnc;
int k=castToMapper(helper)->toHw(j);
bool ret=iLimits->getLimitsRaw(k, &minEnc, &maxEnc);
*min=castToMapper(helper)->posE2A(minEnc, k);
*max=castToMapper(helper)->posE2A(maxEnc, k);
return ret;
}
//////////////////////////////
///////////////// Implement
template <class DERIVED, class IMPLEMENT>
ImplementAmplifierControl<DERIVED, IMPLEMENT>::ImplementAmplifierControl(DERIVED *y)
{
iAmplifier= dynamic_cast<IAmplifierControlRaw *> (y);
helper = 0;
dTemp=0;
iTemp=0;
}
template <class DERIVED, class IMPLEMENT>
ImplementAmplifierControl<DERIVED, IMPLEMENT>::~ImplementAmplifierControl()
{
uninitialize();
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>:: initialize (int size, const int *amap, const double *enc, const double *zos)
{
if (helper!=0)
return false;
// not sure if fix from next line to the line after is correct, hope so
//helper=(void *)(new ControlBoardHelper(size, amap, enc, zeros));
helper=(void *)(new ControlBoardHelper(size, amap, enc, zos));
ACE_ASSERT (helper != 0);
dTemp=new double[size];
ACE_ASSERT (dTemp != 0);
iTemp=new int[size];
ACE_ASSERT (iTemp != 0);
return true;
}
/**
* Clean up internal data and memory.
* @return true if uninitialization is executed, false otherwise.
*/
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::uninitialize ()
{
if (helper!=0)
delete castToMapper(helper);
delete [] dTemp;
delete [] iTemp;
helper=0;
dTemp=0;
iTemp=0;
return true;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::enableAmp(int j)
{
int k=castToMapper(helper)->toHw(j);
return iAmplifier->enableAmpRaw(k);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::disableAmp(int j)
{
int k=castToMapper(helper)->toHw(j);
return iAmplifier->disableAmpRaw(k);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::getCurrents(double *currs)
{
bool ret=iAmplifier->getCurrentsRaw(dTemp);
castToMapper(helper)->toUser(dTemp, currs);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::getCurrent(int j, double *c)
{
int k=castToMapper(helper)->toHw(j);
bool ret=iAmplifier->getCurrentRaw(k, c);
return ret;
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::setMaxCurrent(int j, double v)
{
int k=castToMapper(helper)->toHw(j);
return iAmplifier->setMaxCurrentRaw(k, v);
}
template <class DERIVED, class IMPLEMENT>
bool ImplementAmplifierControl<DERIVED, IMPLEMENT>::getAmpStatus(int *st)
{
bool ret=iAmplifier->getAmpStatusRaw(iTemp);
castToMapper(helper)->toUser(iTemp, st);
return ret;
}
/////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?