X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2F80221Bundle%2FMIHPacket.hh;h=a67f0a6b4837c02191d2dd49a5e6f6cc7576500c;hb=eb89ea10c8c11d2ef12239cb037c958dec50f006;hp=a2c7ceba042945ed01c82466a3ba50a640208ade;hpb=45f1f7608c81c1d5e417c97a3e9273e0282d6a0d;p=senf.git diff --git a/Packets/80221Bundle/MIHPacket.hh b/Packets/80221Bundle/MIHPacket.hh index a2c7ceb..a67f0a6 100644 --- a/Packets/80221Bundle/MIHPacket.hh +++ b/Packets/80221Bundle/MIHPacket.hh @@ -28,37 +28,72 @@ // Custom includes #include "../../Packets/Packets.hh" +#include "TLVPacket.hh" //#include "MIHPacket.mpp" ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { - struct MIHPacketParser : public senf::PacketParserBase + struct MIHF_IdParser : public PacketParserBase + { + # include SENF_PARSER() + + SENF_PARSER_FINALIZE ( MIHF_IdParser ); + }; + + struct MIHPacketParser : public PacketParserBase { # include SENF_PARSER() - SENF_PARSER_BITFIELD ( version, 4, unsigned ); - SENF_PARSER_BITFIELD ( ackRequest, 1, bool ); - SENF_PARSER_BITFIELD ( ackResponse, 1, bool ); - SENF_PARSER_BITFIELD ( uir, 1, bool ); - SENF_PARSER_BITFIELD ( moreFragment, 1, bool ); - SENF_PARSER_BITFIELD ( fragmentNr, 7, unsigned ); - SENF_PARSER_SKIP_BITS ( 1 ); + SENF_PARSER_BITFIELD_RO ( version, 4, unsigned ); + SENF_PARSER_BITFIELD ( ackRequest, 1, bool ); + SENF_PARSER_BITFIELD ( ackResponse, 1, bool ); + SENF_PARSER_BITFIELD ( uir, 1, bool ); + SENF_PARSER_BITFIELD ( moreFragment, 1, bool ); + SENF_PARSER_BITFIELD ( fragmentNr, 7, unsigned ); + SENF_PARSER_SKIP_BITS ( 1 ); // MIH message ID (MID) - SENF_PARSER_BITFIELD ( sid, 4, unsigned ); - SENF_PARSER_BITFIELD ( opcode, 2, unsigned ); - SENF_PARSER_BITFIELD ( aid, 10, unsigned ); + SENF_PARSER_BITFIELD ( sid, 4, unsigned ); + SENF_PARSER_BITFIELD ( opcode, 2, unsigned ); + SENF_PARSER_BITFIELD ( aid, 10, unsigned ); SENF_PARSER_SKIP_BITS ( 4 ); SENF_PARSER_BITFIELD ( transactionId, 12, unsigned ); SENF_PARSER_FIELD_RO ( payloadLength, UInt16Parser ); + // Source MIHF Id + SENF_PARSER_PRIVATE_FIELD ( source_type, UInt8Parser ); + SENF_PARSER_PRIVATE_FIELD ( source_length, DynamicTLVLengthParser ); + SENF_PARSER_FIELD ( source_mihf_id, MIHF_IdParser ); + + // Destination MIHF Id + SENF_PARSER_PRIVATE_FIELD ( destination_type, UInt8Parser ); + SENF_PARSER_PRIVATE_FIELD ( destination_length, DynamicTLVLengthParser ); + SENF_PARSER_FIELD ( destination_mihf_id, MIHF_IdParser ); + SENF_PARSER_FINALIZE ( MIHPacketParser ); + + SENF_PARSER_INIT() { + version_() = 1; + source_type() = 1; + destination_type() = 2; + } + + friend class MIHPacketType; }; - + /** \brief MIH packet + + \par Packet type (typedef): + \ref MIHPacket + + \par Fields: + \ref MIHPacketParser + + \ingroup protocolbundle_80221 + */ struct MIHPacketType : public PacketTypeBase, public PacketTypeMixin @@ -72,7 +107,7 @@ namespace senf { using mixin::initSize; static void dump(packet p, std::ostream &os); -// static void finalize(packet p); + static void finalize(packet p); }; typedef ConcretePacket MIHPacket;