@@ -478,25 +478,36 @@ void ControlBoardRemapper::configureBuffers()
478478}
479479
480480
481- bool ControlBoardRemapper::setControlModeAllAxes (const int cm)
482- {
483- std::lock_guard<std::mutex> lock (buffers.mutex );
484-
485- for (int j=0 ; j < controlledJoints; j++)
486- {
487- buffers.controlBoardModes [j] = cm;
488- }
489-
490- return this ->setControlModes (buffers.controlBoardModes .data ());
491- }
492-
493481// ////////////////////////////////////////////////////////////////////////////
494482// / ControlBoard methods
495483// ////////////////////////////////////////////////////////////////////////////
496484
497485//
498486// IPid Interface
499487//
488+
489+ ReturnValue ControlBoardRemapper::getAvailablePids (int j, std::vector<yarp::dev::PidControlTypeEnum>& avail)
490+ {
491+ int off=(int )remappedControlBoards.lut [j].axisIndexInSubControlBoard ;
492+ size_t subIndex=remappedControlBoards.lut [j].subControlBoardIndex ;
493+
494+ RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard (subIndex);
495+ if (!p) {
496+ return ReturnValue::return_code::return_value_error_generic;
497+ }
498+
499+ ReturnValue ok = ReturnValue_ok;
500+
501+ if (p->pid ) {
502+ ok = p->pid ->getAvailablePids (off, avail);
503+ }
504+ else {
505+ ok = ReturnValue::return_code::return_value_error_generic;
506+ }
507+
508+ return ok;
509+ }
510+
500511ReturnValue ControlBoardRemapper::setPid (const PidControlTypeEnum& pidtype, int j, const Pid &p)
501512{
502513 int off=(int )remappedControlBoards.lut [j].axisIndexInSubControlBoard ;
@@ -2737,7 +2748,7 @@ ReturnValue ControlBoardRemapper::enableAmp(int j)
27372748
27382749ReturnValue ControlBoardRemapper::disableAmp (int j)
27392750{
2740- return this ->setControlMode (j, VOCAB_CM_IDLE );
2751+ return this ->setControlMode (j, yarp::dev::SelectableControlModeEnum:: VOCAB_CM_IDLE );
27412752}
27422753
27432754ReturnValue ControlBoardRemapper::getAmpStatus (int *st)
@@ -3739,7 +3750,29 @@ ReturnValue ControlBoardRemapper::getCurrentImpedanceLimit(int j, double *min_st
37393750 return ReturnValue::return_code::return_value_error_generic;
37403751}
37413752
3742- ReturnValue ControlBoardRemapper::getControlMode (int j, int *mode)
3753+ ReturnValue ControlBoardRemapper::getAvailableControlModes (int j, std::vector<yarp::dev::SelectableControlModeEnum>& avail)
3754+ {
3755+ int off=(int )remappedControlBoards.lut [j].axisIndexInSubControlBoard ;
3756+ size_t subIndex=remappedControlBoards.lut [j].subControlBoardIndex ;
3757+
3758+ RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard (subIndex);
3759+ if (!p) {
3760+ return ReturnValue::return_code::return_value_error_generic;
3761+ }
3762+
3763+ ReturnValue ok = ReturnValue_ok;
3764+
3765+ if (p->iMode ) {
3766+ ok = p->iMode ->getAvailableControlModes (off, avail);
3767+ }
3768+ else {
3769+ ok = ReturnValue::return_code::return_value_error_generic;
3770+ }
3771+
3772+ return ok;
3773+ }
3774+
3775+ ReturnValue ControlBoardRemapper::getControlMode (int j, yarp::dev::ControlModeEnum& mode)
37433776{
37443777 int off=(int )remappedControlBoards.lut [j].axisIndexInSubControlBoard ;
37453778 size_t subIndex=remappedControlBoards.lut [j].subControlBoardIndex ;
@@ -3762,7 +3795,7 @@ ReturnValue ControlBoardRemapper::getControlMode(int j, int *mode)
37623795
37633796}
37643797
3765- ReturnValue ControlBoardRemapper::getControlModes (int * modes)
3798+ ReturnValue ControlBoardRemapper::getControlModes (std::vector<yarp::dev::ControlModeEnum>& modes)
37663799{
37673800 ReturnValue ret=ReturnValue_ok;
37683801 std::lock_guard<std::mutex> lock (allJointsBuffers.mutex );
@@ -3775,9 +3808,8 @@ ReturnValue ControlBoardRemapper::getControlModes(int *modes)
37753808
37763809 if ( p->iMode )
37773810 {
3778- ok = p->iMode ->getControlModes (allJointsBuffers.m_nJointsInSubControlBoard [ctrlBrd],
3779- allJointsBuffers.m_jointsInSubControlBoard [ctrlBrd].data (),
3780- allJointsBuffers.m_bufferForSubControlBoardControlModes [ctrlBrd].data ());
3811+ ok = p->iMode ->getControlModes ( allJointsBuffers.m_jointsInSubControlBoard [ctrlBrd],
3812+ allJointsBuffers.m_bufferForSubControlBoardControlModesEnum [ctrlBrd]);
37813813 }
37823814 else
37833815 {
@@ -3787,19 +3819,19 @@ ReturnValue ControlBoardRemapper::getControlModes(int *modes)
37873819 ret = ret && ok;
37883820 }
37893821
3790- allJointsBuffers.fillCompleteJointVectorFromSubControlBoardBuffers (modes,remappedControlBoards);
3822+ allJointsBuffers.fillCompleteJointVectorFromSubControlBoardBuffers (modes. data () ,remappedControlBoards);
37913823
37923824 return ret;
37933825}
37943826
37953827// IControlMode interface
3796- ReturnValue ControlBoardRemapper::getControlModes (const int n_joints, const int * joints, int * modes)
3828+ ReturnValue ControlBoardRemapper::getControlModes (std::vector< int > joints, std::vector<yarp::dev::ControlModeEnum>& modes)
37973829{
37983830 ReturnValue ret=ReturnValue_ok;
37993831 std::lock_guard<std::mutex> lock (selectedJointsBuffers.mutex );
38003832
38013833 // Resize the input buffers
3802- selectedJointsBuffers.resizeSubControlBoardBuffers (n_joints ,joints,remappedControlBoards);
3834+ selectedJointsBuffers.resizeSubControlBoardBuffers (joints. size () ,joints. data () ,remappedControlBoards);
38033835
38043836 for (size_t ctrlBrd=0 ; ctrlBrd < remappedControlBoards.getNrOfSubControlBoards (); ctrlBrd++)
38053837 {
@@ -3809,9 +3841,8 @@ ReturnValue ControlBoardRemapper::getControlModes(const int n_joints, const int
38093841
38103842 if ( p->iMode )
38113843 {
3812- ok = p->iMode ->getControlModes (selectedJointsBuffers.m_nJointsInSubControlBoard [ctrlBrd],
3813- selectedJointsBuffers.m_jointsInSubControlBoard [ctrlBrd].data (),
3814- selectedJointsBuffers.m_bufferForSubControlBoardControlModes [ctrlBrd].data ());
3844+ ok = p->iMode ->getControlModes ( selectedJointsBuffers.m_jointsInSubControlBoard [ctrlBrd],
3845+ selectedJointsBuffers.m_bufferForSubControlBoardControlModesEnum [ctrlBrd]);
38153846 }
38163847 else
38173848 {
@@ -3821,12 +3852,12 @@ ReturnValue ControlBoardRemapper::getControlModes(const int n_joints, const int
38213852 ret = ret && ok;
38223853 }
38233854
3824- selectedJointsBuffers.fillArbitraryJointVectorFromSubControlBoardBuffers (modes,n_joints ,joints,remappedControlBoards);
3855+ selectedJointsBuffers.fillArbitraryJointVectorFromSubControlBoardBuffers (modes. data (),joints. size () ,joints. data () ,remappedControlBoards);
38253856
38263857 return ret;
38273858}
38283859
3829- ReturnValue ControlBoardRemapper::setControlMode (const int j, const int mode)
3860+ ReturnValue ControlBoardRemapper::setControlMode (int j, yarp::dev::SelectableControlModeEnum mode)
38303861{
38313862 ReturnValue ret = ReturnValue_ok;
38323863
@@ -3852,22 +3883,21 @@ ReturnValue ControlBoardRemapper::setControlMode(const int j, const int mode)
38523883 return ret;
38533884}
38543885
3855- ReturnValue ControlBoardRemapper::setControlModes (const int n_joints, const int * joints, int * modes)
3886+ ReturnValue ControlBoardRemapper::setControlModes (std::vector< int > joints, std::vector<yarp::dev::SelectableControlModeEnum> modes)
38563887{
38573888 ReturnValue ret=ReturnValue_ok;
38583889 std::lock_guard<std::mutex> lock (selectedJointsBuffers.mutex );
38593890
3860- selectedJointsBuffers.fillSubControlBoardBuffersFromArbitraryJointVector (modes,n_joints ,joints,remappedControlBoards);
3891+ selectedJointsBuffers.fillSubControlBoardBuffersFromArbitraryJointVector (modes. data (),joints. size () ,joints. data () ,remappedControlBoards);
38613892
38623893 for (size_t ctrlBrd=0 ; ctrlBrd < remappedControlBoards.getNrOfSubControlBoards (); ctrlBrd++)
38633894 {
38643895 RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard (ctrlBrd);
38653896
38663897 ReturnValue ok = ReturnValue_ok;
38673898 if (p->iMode ) {
3868- ok = p->iMode ->setControlModes (selectedJointsBuffers.m_nJointsInSubControlBoard [ctrlBrd],
3869- selectedJointsBuffers.m_jointsInSubControlBoard [ctrlBrd].data (),
3870- selectedJointsBuffers.m_bufferForSubControlBoardControlModes [ctrlBrd].data ());
3899+ ok = p->iMode ->setControlModes ( selectedJointsBuffers.m_jointsInSubControlBoard [ctrlBrd],
3900+ selectedJointsBuffers.m_bufferForSubControlBoardSelectableControlModesEnum [ctrlBrd]);
38713901 }
38723902 else {
38733903 ok = ReturnValue::return_code::return_value_error_generic;
@@ -3878,22 +3908,21 @@ ReturnValue ControlBoardRemapper::setControlModes(const int n_joints, const int
38783908 return ret;
38793909}
38803910
3881- ReturnValue ControlBoardRemapper::setControlModes (int * modes)
3911+ ReturnValue ControlBoardRemapper::setControlModes (std::vector<yarp::dev::SelectableControlModeEnum> modes)
38823912{
38833913 ReturnValue ret=ReturnValue_ok;
38843914 std::lock_guard<std::mutex> lock (allJointsBuffers.mutex );
38853915
3886- allJointsBuffers.fillSubControlBoardBuffersFromCompleteJointVector (modes,remappedControlBoards);
3916+ allJointsBuffers.fillSubControlBoardBuffersFromCompleteJointVector (modes. data () ,remappedControlBoards);
38873917
38883918 for (size_t ctrlBrd=0 ; ctrlBrd < remappedControlBoards.getNrOfSubControlBoards (); ctrlBrd++)
38893919 {
38903920 RemappedSubControlBoard *p=remappedControlBoards.getSubControlBoard (ctrlBrd);
38913921
38923922 ReturnValue ok = ReturnValue_ok;
38933923 if (p->iMode ) {
3894- ok = p->iMode ->setControlModes (allJointsBuffers.m_nJointsInSubControlBoard [ctrlBrd],
3895- allJointsBuffers.m_jointsInSubControlBoard [ctrlBrd].data (),
3896- allJointsBuffers.m_bufferForSubControlBoardControlModes [ctrlBrd].data ());
3924+ ok = p->iMode ->setControlModes (allJointsBuffers.m_jointsInSubControlBoard [ctrlBrd],
3925+ allJointsBuffers.m_bufferForSubControlBoardSelectableControlModesEnum [ctrlBrd]);
38973926 }
38983927 else {
38993928 ok = ReturnValue::return_code::return_value_error_generic;
0 commit comments