All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Types | Public Member Functions | Protected Attributes
GpCoreTools::MessageClassIdHeader Class Reference

Brief description of class still missing. More...

#include <MessageClassIdHeader.h>

List of all members.

Public Types

enum  { SynchronizationSize = 2, HeaderSize = 4, CheckSumSize = 2 }

Public Member Functions

void bigEndianValues ()
const char * header () const
bool isValid () const
bool isValid (const FletcherChecksum &cksum, const char *payload=0, unsigned short payloadLength=0) const
unsigned int lengthBigEndian () const
unsigned int lengthLittleEndian () const
void littleEndianValues ()
unsigned char messageClass () const
 MessageClassIdHeader ()
 MessageClassIdHeader (unsigned char msgClass, unsigned char msgId, unsigned int length)
 MessageClassIdHeader (const MessageClassIdHeader &o)
unsigned char messageId () const

Protected Attributes

union {
   char   _bytes [HeaderSize]
   struct {
      unsigned short   length
      unsigned char   messageClass
      unsigned char   messageId
   }   _values
}; 
unsigned char _sync [2]

Detailed Description

Brief description of class still missing.

Full description of class still missing


Member Enumeration Documentation

anonymous enum
Enumerator:
SynchronizationSize 
HeaderSize 
CheckSumSize 

Constructor & Destructor Documentation

{}
GpCoreTools::MessageClassIdHeader::MessageClassIdHeader ( unsigned char  msgClass,
unsigned char  msgId,
unsigned int  length 
) [inline]

References _sync, _values, and length.

  {
    _sync[0]=0xB5;
    _sync[1]=0x62;
    _values.messageClass=msgClass;
    _values.messageId=msgId;
    _values.length=length;
  }

References _sync, and _values.

  {
    _sync[0]=o._sync[0];
    _sync[1]=o._sync[1];
    _values.messageClass=o._values.messageClass;
    _values.messageId=o._values.messageId;
    _values.length=o._values.length;
  }

Member Function Documentation

References _bytes, and GpCoreTools::ByteOrder::swap().

  {
#if BYTE_ORDER==LITTLE_ENDIAN
    ByteOrder::swap(_bytes[2], _bytes[3]);
#endif
  }
const char* GpCoreTools::MessageClassIdHeader::header ( ) const [inline]

Referenced by UbxBuffer::bytesAvailable(), and CubeBuffer::bytesAvailable().

{return _sync[0]==0xB5 && _sync[1]==0x62;}
bool GpCoreTools::MessageClassIdHeader::isValid ( const FletcherChecksum cksum,
const char *  payload = 0,
unsigned short  payloadLength = 0 
) const [inline]

References GpCoreTools::FletcherChecksum::a, GpCoreTools::FletcherChecksum::add(), GpCoreTools::FletcherChecksum::b, header(), HeaderSize, and GpCoreTools::Log::write().

  {
    FletcherChecksum mycs;
    mycs.add(reinterpret_cast<const char *>(header()), HeaderSize);
    if(payload) {
      mycs.add(payload, payloadLength);
    }
    if(cksum==mycs) {
      return true;
    } else {
      Log::write(5, "bad checksum 0x%02hhX 0x%02hhX (in message) instead of 0x%02hhX 0x%02hhX (computed)\n", cksum.a(), cksum.b(), mycs.a(), mycs.b());
      return false;
    }
  }
unsigned int GpCoreTools::MessageClassIdHeader::lengthBigEndian ( ) const [inline]

References _bytes, and GpCoreTools::ByteOrder::swap().

  {
#if BYTE_ORDER==BIG_ENDIAN
    ByteOrder::swap(_bytes[2], _bytes[3]);
#endif
  }
unsigned char GpCoreTools::MessageClassIdHeader::messageClass ( ) const [inline]
{return _values.messageClass;}
unsigned char GpCoreTools::MessageClassIdHeader::messageId ( ) const [inline]
{return _values.messageId;}

Member Data Documentation

union { ... } [protected]
unsigned char GpCoreTools::MessageClassIdHeader::_sync[2] [protected]

Referenced by MessageClassIdHeader().

Referenced by MessageClassIdHeader().

Referenced by MessageClassIdHeader().


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines