X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FMPEGDVBBundle%2FDatagramSection.hh;h=bf5d87a32e968331fac0de7a7f903da32b11c688;hb=ab243554f940af9f873e1a920d0a6b7886c6f5cf;hp=9873b038d52d94544e55302fdc98759e7078ada8;hpb=9a98d859501eb314cb36208e2787d27da0367b5e;p=senf.git diff --git a/Packets/MPEGDVBBundle/DatagramSection.hh b/Packets/MPEGDVBBundle/DatagramSection.hh index 9873b03..bf5d87a 100644 --- a/Packets/MPEGDVBBundle/DatagramSection.hh +++ b/Packets/MPEGDVBBundle/DatagramSection.hh @@ -47,33 +47,25 @@ namespace senf { { # include SENF_FIXED_PARSER() - SENF_PARSER_INHERIT(Parse_DSMCCSection); + SENF_PARSER_INHERIT( Parse_DSMCCSection ); - SENF_PARSE_FIELD( mac_addr_4, Parse_UInt8 ); - SENF_PARSE_FIELD( mac_addr_3, Parse_UInt8 ); - SENF_PARSE_FIELD( mac_addr_2, Parse_UInt8 ); - SENF_PARSE_FIELD( mac_addr_1, Parse_UInt8 ); + SENF_PARSER_FIELD ( mac_addr_4 , Parse_UInt8 ); + SENF_PARSER_FIELD ( mac_addr_3 , Parse_UInt8 ); + SENF_PARSER_FIELD ( mac_addr_2 , Parse_UInt8 ); + SENF_PARSER_FIELD ( mac_addr_1 , Parse_UInt8 ); - SENF_PARSER_FINALIZE(Parse_DatagramSection); + SENF_PARSER_FINALIZE( Parse_DatagramSection ); - typedef Parse_UIntField < 2, 4 > Parse_payload_scrmbl_ctrl; - typedef Parse_UIntField < 4, 6 > Parse_addr_scrmbl_ctrl; - typedef Parse_Flag < 6 > Parse_llc_snap_flag; + // Parse table_id_extension as two bytes + SENF_PARSER_GOTO( table_id_extension ); + SENF_PARSER_FIELD ( mac_addr_6 , Parse_UInt8 ); + SENF_PARSER_FIELD ( mac_addr_5 , Parse_UInt8 ); - Parse_UInt8 mac_addr_6() const { return parse( 3 ); } - Parse_UInt8 mac_addr_5() const { return parse( 4 ); } - - Parse_payload_scrmbl_ctrl payload_scrmbl_ctrl() const { - return parse( 5 ); - } - - Parse_addr_scrmbl_ctrl addr_scrmbl_ctrl() const { - return parse( 5 ); - } - - Parse_llc_snap_flag llc_snap_flag() const { - return parse( 5 ); - } + // Divide 5 bit version_num field into several subfields. + SENF_PARSER_SKIP_BITS( 2 ); + SENF_PARSER_BITFIELD ( payload_scrmbl_ctrl , 2, unsigned ); + SENF_PARSER_BITFIELD ( addr_scrmbl_ctrl , 2, unsigned ); + SENF_PARSER_BITFIELD ( llc_snap_flag , 1, bool ); }; /** \brief Datagram Section