Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages | Examples

ArTCM2.cpp

00001 /*
00002 MobileRobots Advanced Robotics Interface for Applications (ARIA)
00003 Copyright (C) 2004, 2005 ActivMedia Robotics LLC
00004 Copyright (C) 2006, 2007 MobileRobots Inc.
00005 
00006      This program is free software; you can redistribute it and/or modify
00007      it under the terms of the GNU General Public License as published by
00008      the Free Software Foundation; either version 2 of the License, or
00009      (at your option) any later version.
00010 
00011      This program is distributed in the hope that it will be useful,
00012      but WITHOUT ANY WARRANTY; without even the implied warranty of
00013      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014      GNU General Public License for more details.
00015 
00016      You should have received a copy of the GNU General Public License
00017      along with this program; if not, write to the Free Software
00018      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 If you wish to redistribute ARIA under different terms, contact 
00021 MobileRobots for information about a commercial version of ARIA at 
00022 robots@mobilerobots.com or 
00023 MobileRobots Inc, 19 Columbia Drive, Amherst, NH 03031; 800-639-9481
00024 */
00025 
00026 #include "ariaOSDef.h"
00027 #include "ArExport.h"
00028 #include "ArCommands.h"
00029 #include "ArRobot.h"
00030 #include "ArTCM2.h"
00031 
00032 AREXPORT ArTCM2::ArTCM2(ArRobot *robot) :
00033   myPacketHandlerCB(this, &ArTCM2::packetHandler)
00034 {
00035   myRobot = robot;
00036   myPacketHandlerCB.setName("ArTCM2");
00037   if (myRobot != NULL)
00038     myRobot->addPacketHandler(&myPacketHandlerCB);
00039   
00040 }
00041 
00042 AREXPORT ArTCM2::~ArTCM2()
00043 {
00044   if (myRobot != NULL)
00045     myRobot->remPacketHandler(&myPacketHandlerCB);
00046 }
00047 
00048 AREXPORT bool ArTCM2::packetHandler(ArRobotPacket *packet)
00049 {
00050   if (packet->getID() != 0xC0)
00051     return false;
00052   
00053   myCompass = ArMath::fixAngle(packet->bufToByte2() / 10.0);
00054   myPitch = ArMath::fixAngle(packet->bufToByte2() / 10.0);
00055   myRoll = ArMath::fixAngle(packet->bufToByte2() / 10.0);
00056   myXMag = packet->bufToByte2() / 100.0;  
00057   myYMag = packet->bufToByte2() / 100.0;
00058   myZMag = packet->bufToByte2() / 100.0;
00059   myTemperature = packet->bufToByte2() / 10.0;
00060   myError = packet->bufToByte2();
00061   myCalibrationH = packet->bufToByte();
00062   myCalibrationV = packet->bufToByte();
00063   myCalibrationM = packet->bufToByte2() / 100.0;
00064 
00065   if (myTimeLastPacket != time(NULL)) 
00066   {
00067       myTimeLastPacket = time(NULL);
00068       myPacCount = myPacCurrentCount;
00069       myPacCurrentCount = 0;
00070   }
00071   myPacCurrentCount++;
00072   return true;
00073 }
00074 
00075 AREXPORT int ArTCM2::getPacCount()
00076 {
00077   if (myTimeLastPacket == time(NULL))
00078     return myPacCount;
00079   if (myTimeLastPacket == time(NULL) - 1)
00080     return myPacCurrentCount;
00081   return 0;
00082 }

Generated on Tue Feb 20 10:51:41 2007 for Aria by  doxygen 1.4.0