-// $Id:DSMCCSection.hh 327 2007-07-20 10:03:44Z tho $
+// $Id$
//
// Copyright (C) 2007
// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Thorsten Horstmann <thorsten.horstmann@fokus.fraunhofer.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// Custom includes
#include <algorithm>
-#include "Packets/PacketType.hh"
-#include "Packets/ParseInt.hh"
-#include "Packets/PacketRegistry.hh"
-#include "Packets/PacketParser.hh"
-#include "Packets/DefaultBundle/EthernetPacket.hh"
+#include <boost/crc.hpp>
+#include "../../Packets/PacketType.hh"
+#include "../../Packets/ParseInt.hh"
+#include "../../Packets/PacketRegistry.hh"
+#include "../../Packets/PacketParser.hh"
+#include "../../Packets/DefaultBundle/EthernetPacket.hh"
//#include "SNDUPacket.mpp"
///////////////////////////////hh.p////////////////////////////////////////
PacketParserBase::size_type bytes() const;
static const size_type init_bytes = 2+2+4; // D-Bit + 15 bits length + 16 bits type field + 32 bits crc
+
+ boost::uint32_t calcCrc() const;
};
+
+ struct ULEExtHeaderTypes {
+ typedef boost::uint16_t key_t;
+ };
+
/** \brief ULE SNDU Packet
\par Packet type (typedef):
\ingroup protocolbundle_mpegdvb
*/
struct SNDUPacketType
- : public PacketTypeBase,
- public PacketTypeMixin<SNDUPacketType>
+ : public PacketTypeBase
+// public PacketTypeMixin<SNDUPacketType, ULEExtHeaderTypes>
{
- typedef PacketTypeMixin<SNDUPacketType> mixin;
+// typedef PacketTypeMixin<SNDUPacketType, ULEExtHeaderType> mixin;
typedef ConcretePacket<SNDUPacketType> packet;
typedef Parse_SNDUPacket parser;
- using mixin::nextPacketRange;
-// using mixin::nextPacketType;
- using mixin::init;
+// using mixin::nextPacketRange;
+// using mixin::nextPacketType;
+// using mixin::init;
+
+// static registry_key_t nextPacketKey(packet p);
+
+ static void init(packet p);
+
+ static factory_t nextPacketType(packet p);
+
+ static optional_range nextPacketRange(packet p);
static void dump(packet p, std::ostream & os);
static PacketParserBase::size_type initSize();
+
static PacketParserBase::size_type initHeadSize();
};
typedef SNDUPacketType::packet SNDUPacket;
+
+ typedef boost::crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0, false, false> ule_crc32;
+
/*!
\def ULE_END_INDICATOR