//## begin module%1.4%.codegen_version preserve=yes // Read the documentation to learn more about C++ code generator // versioning. //## end module%1.4%.codegen_version //## begin module%3D86D3FC0244.cm preserve=no // %X% %Q% %Z% %W% //## end module%3D86D3FC0244.cm //## begin module%3D86D3FC0244.cp preserve=no //## end module%3D86D3FC0244.cp //## Module: Camera%3D86D3FC0244; Pseudo Package body //## Source file: C:\Program Files\Rational\Rose\C++\source\Camera.cpp //## begin module%3D86D3FC0244.additionalIncludes preserve=no //## end module%3D86D3FC0244.additionalIncludes //## begin module%3D86D3FC0244.includes preserve=yes #include "Version.h" //## end module%3D86D3FC0244.includes // Camera #include "Camera.h" //## begin module%3D86D3FC0244.additionalDeclarations preserve=yes //## end module%3D86D3FC0244.additionalDeclarations // Class Camera //## begin Camera::aCamera%3D9AA26D032A.attr preserve=no private: static Camera {U} Camera Camera::cameras[NUMBER_OF_ROBOTS]; //## end Camera::aCamera%3D9AA26D032A.attr Camera::Camera() //## begin Camera::Camera%3D86D3FC0244_const.hasinit preserve=no //## end Camera::Camera%3D86D3FC0244_const.hasinit //## begin Camera::Camera%3D86D3FC0244_const.initialization preserve=yes //## end Camera::Camera%3D86D3FC0244_const.initialization { //## begin Camera::Camera%3D86D3FC0244_const.body preserve=yes //to run the program on the EyeSim simulator the initialization must not take place //in the constructor //so we have to declare the method as public and call it in main before we start //the program //if running the program on real robots the initialization must be done in the //constructors (otherwise the camera initialization doesn't work, for example //(for whatever reason) // initialize(); //## end Camera::Camera%3D86D3FC0244_const.body } Camera::~Camera() { //## begin Camera::~Camera%3D86D3FC0244_dest.body preserve=yes release(); //## end Camera::~Camera%3D86D3FC0244_dest.body } //## Other Operations (implementation) Camera* Camera::getCamera () { //## begin Camera::getCamera%3D9AA24401FE.body preserve=yes return &cameras[OSMachineID()]; //## end Camera::getCamera%3D9AA24401FE.body } void Camera::getFrame (image& aImage) { //## begin Camera::getFrame%3D9292500154.body preserve=yes CAMGetFrame(&aImage); LCDPutGraphic(&aImage); // added by TB //## end Camera::getFrame%3D9292500154.body } void Camera::getColorFrame (colimage& aColorImage) { //## begin Camera::getColorFrame%3D92926000DC.body preserve=yes CAMGetColFrame(&aColorImage, 0); //0 means no automatic conversion to grayscale LCDPutColorGraphic(&aColorImage); // added by TB //## end Camera::getColorFrame%3D92926000DC.body } bool Camera::initialize () { //## begin Camera::initialize%3D92923E00DC.body preserve=yes int camera = CAMInit(NORMAL); //CAMMode(AUTOBRIGHTNESS);??? switch(camera) { case 255: LCDPutString("No camera!\n"); OSPanic(""); //or return false?? break; case 254: LCDPutString("error!\n"); OSPanic(""); //or return false?? break; case 0: LCDPutString("No color camera!\n"); OSPanic(""); //or return false?? break; case 16: LCDPutString("QuickCam V2 color\n"); //ok?? break; case 17: LCDPutString("EyeCam-1 (6300)\n"); //ok?? break; case 18: LCDPutString("EyeCam-2 (7620)\n"); //ok?? break; case 19: LCDPutString("EyeCam-3 (6620)\n"); //ok?? break; default: LCDPutString("Unknown camera\ntype!\n"); OSPanic(""); //or return false?? break; } //the EyeSim simulator does not support servos yet #ifndef EYESIM_CUBECLUSTERING_PARAMETERS if ((cameraServoHandle = SERVOInit(SERVO12))) { #ifdef EYEBOT8_CUBECLUSTERING_PARAMETERS SERVOSet(cameraServoHandle, 120); //values can go from 0 .. 255 #endif #ifdef EYEBOT3_CUBECLUSTERING_PARAMETERS SERVOSet(cameraServoHandle, 112); //values can go from 0 .. 255 #endif #ifdef EYEBOT10_CUBECLUSTERING_PARAMETERS SERVOSet(cameraServoHandle, 128); //values can go from 0 .. 255 #endif } else { LCDPutString("No camera servo!\n"); } #endif return true; //## end Camera::initialize%3D92923E00DC.body } bool Camera::release () { //## begin Camera::release%3D92923E010E.body preserve=yes CAMRelease(); SERVORelease(cameraServoHandle); return true; //## end Camera::release%3D92923E010E.body } // Additional Declarations //## begin Camera%3D86D3FC0244.declarations preserve=yes //## end Camera%3D86D3FC0244.declarations //## begin module%3D86D3FC0244.epilog preserve=yes //## end module%3D86D3FC0244.epilog