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

ArRobotPacketReceiver Class Reference

Given a device connection it receives packets from the robot through it. More...

#include <ArRobotPacketReceiver.h>

List of all members.

Public Member Functions

 ArRobotPacketReceiver (ArDeviceConnection *deviceConnection, bool allocatePackets=false, unsigned char sync1=0xfa, unsigned char sync2=0xfb)
 Constructor with assignment of a device connection.
 ArRobotPacketReceiver (bool allocatePackets=false, unsigned char sync1=0xfa, unsigned char sync2=0xfb)
 Constructor without an already assigned device connection.
ArDeviceConnectiongetDeviceConnection (void)
 Gets the device this instance receives packets from.
bool isAllocatingPackets (void)
 Gets whether or not the receiver is allocating packets.
ArRobotPacketreceivePacket (unsigned int msWait=0)
 Receives a packet from the robot if there is one available.
void setDeviceConnection (ArDeviceConnection *deviceConnection)
 Sets the device this instance receives packets from.
virtual ~ArRobotPacketReceiver ()
 Destructor.

Protected Types

enum  { STATE_SYNC1, STATE_SYNC2, STATE_ACQUIRE_DATA }

Protected Attributes

bool myAllocatePackets
ArDeviceConnectionmyDeviceConn
ArRobotPacket myPacket
unsigned char mySync1
unsigned char mySync2


Detailed Description

Given a device connection it receives packets from the robot through it.

Definition at line 36 of file ArRobotPacketReceiver.h.


Constructor & Destructor Documentation

ArRobotPacketReceiver::ArRobotPacketReceiver bool  allocatePackets = false,
unsigned char  sync1 = 0xfa,
unsigned char  sync2 = 0xfb
 

Constructor without an already assigned device connection.

Parameters:
allocatePackets whether to allocate memory for the packets before returning them (true) or to just return a pointer to an internal packet (false)... most everything should use false as this will help prevent many memory leaks or corruptions
sync1 first byte of the header this receiver will receive, this should be left as the default in nearly all cases, ie don't mess with it
sync2 second byte of the header this receiver will receive, this should be left as the default in nearly all cases, ie don't mess with it

Definition at line 46 of file ArRobotPacketReceiver.cpp.

ArRobotPacketReceiver::ArRobotPacketReceiver ArDeviceConnection deviceConnection,
bool  allocatePackets = false,
unsigned char  sync1 = 0xfa,
unsigned char  sync2 = 0xfb
 

Constructor with assignment of a device connection.

Parameters:
deviceConnection the connection which the receiver will use
allocatePackets whether to allocate memory for the packets before returning them (true) or to just return a pointer to an internal packet (false)... most everything should use false as this will help prevent many memory leaks or corruptions
sync1 first byte of the header this receiver will receive, this should be left as the default in nearly all cases, ie don't mess with it
sync2 second byte of the header this receiver will receive, this should be left as the default in nearly all cases, ie don't mess with it

Definition at line 68 of file ArRobotPacketReceiver.cpp.


Member Function Documentation

ArRobotPacket * ArRobotPacketReceiver::receivePacket unsigned int  msWait = 0  ) 
 

Receives a packet from the robot if there is one available.

Parameters:
msWait how long to block for the start of a packet, nonblocking if 0
Returns:
NULL if there are no packets in alloted time, otherwise a pointer to the packet received, if allocatePackets is true than the place that called this function owns the packet and should delete the packet when done... if allocatePackets is false then nothing must store a pointer to this packet, the packet must be used and done with by the time this method is called again

this case can't happen since c can't be over that so taking it out if (c > 255) { ArLog::log(ArLog::Normal, "ArRobotPacketReceiver::receivePacket: bad packet, more than 255 bytes"); state = STATE_SYNC1; break; }

Definition at line 104 of file ArRobotPacketReceiver.cpp.

References ArTime::addMSec(), ArBasePacket::dataToBuf(), ArBasePacket::empty(), ArDeviceConnection::getStatus(), ArLog::log(), ArTime::mSecTo(), ArBasePacket::resetRead(), ArBasePacket::setLength(), ArRobotPacket::setTimeReceived(), ArTime::setToNow(), ArBasePacket::uByteToBuf(), and ArRobotPacket::verifyCheckSum().

Referenced by ArRobot::asyncConnectHandler(), and ArRobot::packetHandler().


The documentation for this class was generated from the following files:
Generated on Wed Oct 19 12:56:54 2005 for Aria by  doxygen 1.4.0