Homepage Demos Overview Downloads Tutorials Reference
Credits

SegCamBehavior Class Reference

#include <SegCamBehavior.h>

Inheritance diagram for SegCamBehavior:

Inheritance graph
[legend]
List of all members.

Detailed Description

Forwards segmented images from camera over wireless.

The format used for serialization is basically defined by the subclass of FilterBankGenerator being used. I suggest looking at that classes's documentation to determine the format used.

However, SegCamBehavior will add a few fields at the beginning of each packet to assist in processing the image stream.

I emphasize: beginning of each Vision packet, before the FilterBankGenerator header.

This is exactly the same protocol that is followed by the RawCamBehavior as well - the same code can parse either stream.

However, odd bit - since the RLEGenerator doesn't save the color information itself, SegCamBehavior will do it instead. So, if SegCamBehavior is using RLE compression, it will tack a footer at the end of the packet: (from SegmentedColorGenerator::encodeColors())

  • <unsigned int: num_cols> (number of different colors available)
  • for each of num_col:
    • <char: red> red color to use for display of this index
    • <char: green> green color to use for display of this index
    • <char: blue> blue color to use for display of this index

Definition at line 42 of file SegCamBehavior.h.

Public Member Functions

 SegCamBehavior ()
 constructor
virtual void DoStart ()
 By default, merely adds to the reference counter (through AddReference()); Note you should still call this from your overriding methods.
virtual void DoStop ()
 By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).
virtual void processEvent (const EventBase &e)
 By defining here, allows you to get away with not supplying a processEvent() function for the EventListener interface. By default, does nothing.
virtual std::string getDescription () const
 Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

Static Public Member Functions

std::string getClassDescription ()
 Gives a short description of what this class of behaviors does... you should override this (but don't have to).

Static Public Attributes

const unsigned int TCP_WIRELESS_BUFFER_SIZE = 85000
 85000 bytes for use up to 416x320 pixels / 8 min expected runs * 5 bytes per run + some padding
const unsigned int UDP_WIRELESS_BUFFER_SIZE = 64*1024
 64KB is the max udp packet size

Protected Member Functions

bool openPacket (FilterBankGenerator &fbkgen, unsigned int time, unsigned int layer)
 opens a new packet, writes header info; returns true if open, false if otherwise open (check cur==NULL for error)
bool writeRLE (const FilterBankEvent &fbke)
 writes a color image
bool writeSeg (const FilterBankEvent &fbke)
 writes a color image
void closePacket ()
 closes and sends a packet, does nothing if no packet open

Protected Attributes

SocketvisRLE
 socket to send image stream over
char * packet
 buffer being filled out to be sent
char * cur
 current location in packet
unsigned int avail
 number of bytes remaining in packet
unsigned int max_buf
 the buffer size requested from Wireless when the socket was allocated

Private Member Functions

 SegCamBehavior (const SegCamBehavior &)
 don't call
SegCamBehavioroperator= (const SegCamBehavior &)
 don't call


Constructor & Destructor Documentation

SegCamBehavior::SegCamBehavior  ) 
 

constructor

Definition at line 10 of file SegCamBehavior.cc.

SegCamBehavior::SegCamBehavior const SegCamBehavior  )  [private]
 

don't call


Member Function Documentation

void SegCamBehavior::closePacket  )  [protected]
 

closes and sends a packet, does nothing if no packet open

Definition at line 160 of file SegCamBehavior.cc.

Referenced by writeRLE(), and writeSeg().

void SegCamBehavior::DoStart  )  [virtual]
 

By default, merely adds to the reference counter (through AddReference()); Note you should still call this from your overriding methods.

Reimplemented from BehaviorBase.

Definition at line 16 of file SegCamBehavior.cc.

void SegCamBehavior::DoStop  )  [virtual]
 

By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).

Reimplemented from BehaviorBase.

Definition at line 46 of file SegCamBehavior.cc.

std::string SegCamBehavior::getClassDescription  )  [inline, static]
 

Gives a short description of what this class of behaviors does... you should override this (but don't have to).

If you do override this, also consider overriding getDescription() to return it

Reimplemented from BehaviorBase.

Definition at line 56 of file SegCamBehavior.h.

Referenced by getDescription().

virtual std::string SegCamBehavior::getDescription  )  const [inline, virtual]
 

Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

By default simply returns getName(), because any calls from a BehaviorBase function to getClassDescription() are going to call BehaviorBase::getClassDescription(), not ~YourSubClass~::getClassDescription(), because static functions can't be virtual in C++ (doh!)

This means that getDescription called on a pointer to a BehaviorBase of unknown subtype would always return an empty string, which is pretty useless. So instead we return the name in this situation. If you want getDescription to return getClassDescription, you'll have to override it in your subclass to do so.

Reimplemented from BehaviorBase.

Definition at line 61 of file SegCamBehavior.h.

bool SegCamBehavior::openPacket FilterBankGenerator fbkgen,
unsigned int  time,
unsigned int  layer
[protected]
 

opens a new packet, writes header info; returns true if open, false if otherwise open (check cur==NULL for error)

see the class documentation for SegCamBehavior for the protocol documentation

Definition at line 74 of file SegCamBehavior.cc.

Referenced by writeRLE(), and writeSeg().

SegCamBehavior& SegCamBehavior::operator= const SegCamBehavior  )  [private]
 

don't call

void SegCamBehavior::processEvent const EventBase e  )  [virtual]
 

By defining here, allows you to get away with not supplying a processEvent() function for the EventListener interface. By default, does nothing.

Reimplemented from BehaviorBase.

Definition at line 58 of file SegCamBehavior.cc.

bool SegCamBehavior::writeRLE const FilterBankEvent fbke  )  [protected]
 

writes a color image

Definition at line 113 of file SegCamBehavior.cc.

Referenced by processEvent().

bool SegCamBehavior::writeSeg const FilterBankEvent fbke  )  [protected]
 

writes a color image

Definition at line 141 of file SegCamBehavior.cc.

Referenced by processEvent().


Member Data Documentation

unsigned int SegCamBehavior::avail [protected]
 

number of bytes remaining in packet

Definition at line 74 of file SegCamBehavior.h.

Referenced by closePacket(), openPacket(), writeRLE(), and writeSeg().

char* SegCamBehavior::cur [protected]
 

current location in packet

Definition at line 73 of file SegCamBehavior.h.

Referenced by closePacket(), openPacket(), writeRLE(), and writeSeg().

unsigned int SegCamBehavior::max_buf [protected]
 

the buffer size requested from Wireless when the socket was allocated

Definition at line 75 of file SegCamBehavior.h.

Referenced by DoStart(), and openPacket().

char* SegCamBehavior::packet [protected]
 

buffer being filled out to be sent

Definition at line 72 of file SegCamBehavior.h.

Referenced by closePacket(), and openPacket().

const unsigned int SegCamBehavior::TCP_WIRELESS_BUFFER_SIZE = 85000 [static]
 

85000 bytes for use up to 416x320 pixels / 8 min expected runs * 5 bytes per run + some padding

Definition at line 47 of file SegCamBehavior.h.

const unsigned int SegCamBehavior::UDP_WIRELESS_BUFFER_SIZE = 64*1024 [static]
 

64KB is the max udp packet size

Definition at line 48 of file SegCamBehavior.h.

Socket* SegCamBehavior::visRLE [protected]
 

socket to send image stream over

Definition at line 71 of file SegCamBehavior.h.

Referenced by closePacket(), DoStart(), DoStop(), openPacket(), and processEvent().


The documentation for this class was generated from the following files:

Tekkotsu v2.2.1
Generated Tue Nov 23 16:37:51 2004 by Doxygen 1.3.9.1