[Libphidget-cvs-commits] CVS: libphidget/src/phidget++ CServoController.cc,1.6,1.7
Status: Alpha
Brought to you by:
jstrohm
From: Jack S. <js...@us...> - 2002-12-15 17:32:50
|
Update of /cvsroot/libphidget/libphidget/src/phidget++ In directory sc8-pr-cvs1:/tmp/cvs-serv9906/phidget++ Modified Files: CServoController.cc Log Message: Minor Index: CServoController.cc =================================================================== RCS file: /cvsroot/libphidget/libphidget/src/phidget++/CServoController.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CServoController.cc 16 Sep 2002 06:43:33 -0000 1.6 --- CServoController.cc 15 Dec 2002 17:32:44 -0000 1.7 *************** *** 21,52 **** { METHOD_GUARD; ! // Make sure it was constructed properly ! if (classType() != LP_SERVO_CONTROLLER) ! throw runtime_error("Can't initialize a CServoController with a phidget that is not a servo controller"); ! switch (productID()) { ! case 0x0038: ! { ! setServoCount(4); ! break; ! } ! case 0x0039: ! { ! setServoCount(1); ! break; ! } ! case 0x003B: ! { ! setServoCount(8); ! break; ! } ! default: { ! char temp[128]; ! sprintf(temp, "Unknown type of servo controller Vendor ID:0x0%x Product ID:0x0%x\n", vendorID(), productID()); ! throw runtime_error(temp); } - } METHOD_UNGUARD; } --- 21,53 ---- { METHOD_GUARD; ! // Make sure it was constructed properly ! if (classType() != LP_SERVO_CONTROLLER) ! throw runtime_error("Can't initialize a CServoController with a phidget that is not a servo controller"); ! switch (productID()) { ! case 0x0038: ! { ! setServoCount(4); ! break; ! } ! case 0x0039: ! { ! setServoCount(1); ! break; ! } ! //case 0x003B: ! //{ ! //setServoCount(8); ! //break; ! //} ! default: ! { ! char temp[128]; ! sprintf(temp, "Unknown type of servo controller Vendor ID:0x0%x Product ID:0x0%x\n", vendorID(), productID()); ! throw runtime_error(temp); ! } } METHOD_UNGUARD; } *************** *** 55,63 **** { METHOD_GUARD; ! for (int t = 0; t < _servoCount; t++) ! if (_servos[t].first) ! delete _servos[t].second; ! delete[]_servos; METHOD_UNGUARD; } --- 56,64 ---- { METHOD_GUARD; ! for (int t = 0; t < _servoCount; t++) ! if (_servos[t].first) ! delete _servos[t].second; ! delete[]_servos; METHOD_UNGUARD; } *************** *** 66,73 **** { METHOD_GUARD; ! if (uid.serial() == UID().serial() && uid.id() >= 0 && uid.id() < _servoCount) ! return (servo(uid.id(), create)); ! return (CPhidget::find(uid)); METHOD_UNGUARD; } --- 67,74 ---- { METHOD_GUARD; ! if (uid.serial() == UID().serial() && uid.id() >= 0 && uid.id() < _servoCount) ! return (servo(uid.id(), create)); ! return (CPhidget::find(uid)); METHOD_UNGUARD; } *************** *** 76,88 **** { METHOD_GUARD; ! if (id < 0 || id >= _servoCount) ! throw runtime_error("Invalid servo id"); ! if (create && _servos[id].second == NULL) { ! _servos[id].first = true; ! _servos[id].second = new CServo (this, id); ! } ! return (_servos[id].second); METHOD_UNGUARD; } --- 77,90 ---- { METHOD_GUARD; ! if (id < 0 || id >= _servoCount) ! throw runtime_error("Invalid servo id"); ! if (create && _servos[id].second == NULL) ! { ! _servos[id].first = true; ! _servos[id].second = new CServo (this, id); ! } ! return (_servos[id].second); METHOD_UNGUARD; } *************** *** 91,102 **** { METHOD_GUARD; ! if (id < 0 || id >= _servoCount) ! throw runtime_error("Invalid servo id"); ! if (_servos[id].second != NULL) ! throw runtime_error("This servo id is already being used."); ! _servos[id].first = false; ! _servos[id].second = servo; METHOD_UNGUARD; } --- 93,104 ---- { METHOD_GUARD; ! if (id < 0 || id >= _servoCount) ! throw runtime_error("Invalid servo id"); ! if (_servos[id].second != NULL) ! throw runtime_error("This servo id is already being used."); ! _servos[id].first = false; ! _servos[id].second = servo; METHOD_UNGUARD; } *************** *** 105,119 **** { METHOD_GUARD; ! if ((uid.id() < 0 && uid.id() >= _servoCount) ! || uid.serial() != UID().serial()) ! throw runtime_error("Invalid servo id"); ! ! ! if (_servos[uid.id()].first) ! throw runtime_error("Can't unregister a system managed servo"); ! _servos[uid.id()].first = true; ! _servos[uid.id()].second = NULL; METHOD_UNGUARD; } --- 107,118 ---- { METHOD_GUARD; ! if ((uid.id() < 0 && uid.id() >= _servoCount) || uid.serial() != UID().serial()) ! throw runtime_error("Invalid servo id"); + if (_servos[uid.id()].first) + throw runtime_error("Can't unregister a system managed servo"); ! _servos[uid.id()].first = true; ! _servos[uid.id()].second = NULL; METHOD_UNGUARD; } *************** *** 122,133 **** { METHOD_GUARD; ! _servoCount = num; ! _servos = new pair < bool, CServo *>[_servoCount]; ! for (int t = 0; t < _servoCount; t++) { ! _servos[t].first = true; ! _servos[t].second = NULL; ! } METHOD_UNGUARD; } --- 121,134 ---- { METHOD_GUARD; ! _servoCount = num; ! _servos = new pair < bool, CServo *>[_servoCount]; ! for (int t = 0; t < _servoCount; t++) ! { ! _servos[t].first = true; ! _servos[t].second = NULL; ! } ! METHOD_UNGUARD; } *************** *** 208,225 **** { METHOD_GUARD; ! if (_servoCount) { ! float p1 = 0, p2 = 0, p3 = 0, p4 = 0; ! if (_servoCount >= 1 && _servos[0].second != NULL) ! p1 = _servos[0].second->position(); ! if (_servoCount >= 2 && _servos[1].second != NULL) ! p2 = _servos[1].second->position(); ! if (_servoCount >= 3 && _servos[2].second != NULL) ! p3 = _servos[2].second->position(); ! if (_servoCount >= 4 && _servos[3].second != NULL) ! p4 = _servos[3].second->position(); ! error(phidgetQuadServo(device(), p1, p2, p3, p4)); ! } METHOD_UNGUARD; } --- 209,230 ---- { METHOD_GUARD; ! if (_servoCount) ! { ! float p1 = 0, p2 = 0, p3 = 0, p4 = 0; ! if (_servoCount >= 1 && _servos[0].second != NULL) ! p1 = _servos[0].second->position(); ! if (_servoCount >= 2 && _servos[1].second != NULL) ! p2 = _servos[1].second->position(); ! ! if (_servoCount >= 3 && _servos[2].second != NULL) ! p3 = _servos[2].second->position(); ! ! if (_servoCount >= 4 && _servos[3].second != NULL) ! p4 = _servos[3].second->position(); ! ! error(phidgetQuadServo(device(), p1, p2, p3, p4)); ! } METHOD_UNGUARD; } |