void partMover::slider_release(GtkRange *range, gtkClassData* currentClassData) { partMover *currentPart = currentClassData->partPointer; int * joint = currentClassData->indexPointer; bool *POS_UPDATE = currentPart->CURRENT_POS_UPDATE; IPositionControl *ipos = currentPart->pos; IPidControl *ipid = currentPart->pid; IPositionDirect *iDir = currentPart->iDir; GtkWidget **sliderVel = currentPart->sliderVelArray; double val = gtk_range_get_value(range); double valVel = gtk_range_get_value((GtkRange *)sliderVel[*joint]); IControlMode *iCtrl = currentPart->ctrlmode2; int mode; iCtrl->getControlMode(*joint, &mode); if (!POS_UPDATE[*joint]) { if( ( mode == VOCAB_CM_POSITION) || (mode == VOCAB_CM_MIXED) ) { ipos->setRefSpeed(*joint, valVel); ipos->positionMove(*joint, val); } else if( ( mode == VOCAB_CM_IMPEDANCE_POS)) { fprintf(stderr, " using old 'impedance_position' mode, this control mode is deprecated!"); ipos->setRefSpeed(*joint, valVel); ipos->positionMove(*joint, val); } else if ( mode == VOCAB_CM_POSITION_DIRECT) { if (position_direct_enabled) { iDir->setPosition(*joint, val); } else { fprintf(stderr, "You cannot send direct position commands without using --direct option!"); } } else { fprintf(stderr, "Joint not in position nor positionDirect so cannot send references"); } } return; }
void partMover::sliderVel_release(GtkRange *range, gtkClassData* currentClassData) { partMover *currentPart = currentClassData->partPointer; int * joint = currentClassData->indexPointer; IPositionControl *ipos = currentPart->pos; IPositionDirect *iDir = currentPart->iDir; GtkWidget **sliderAry = currentPart->sliderArray; IControlMode *iCtrl = currentPart->ctrlmode2; int mode; double val = gtk_range_get_value(range); double posit = gtk_range_get_value((GtkRange *) sliderAry[*joint]); ipos->setRefSpeed(*joint, val); iCtrl->getControlMode(*joint, &mode); ipos->positionMove(*joint, posit); return; }