#include "Compass.h" Compass Compass::compasses[NUMBER_OF_ROBOTS]; Compass::Compass() { //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(); } Compass::~Compass() { release(); } Compass* Compass::getCompass () { return &compasses[OSMachineID()]; } bool Compass::initialize () { //no compass on simulator /* if (COMPASSInit(COMPASS) != 0) { LCDPutString("Compass init. error!"); OSPanic(""); //put that here or in calling method?? } COMPASSStart(true); //true means continuous measurement, as opposed to a single measurement */ return true; } bool Compass::release () { if (COMPASSRelease() != 0) return false; else return true; } int Compass::getHeading () { /* int heading = COMPASSGet(); if (heading < 0) return 0; //really do that??? else return heading;*/ //no compass on simulator return 0; }