X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FMPEGDVBBundle%2FTransportPacket.test.cc;h=7879ff0730dc1cb2cb145009c37838b5935fabf6;hb=fb2fe88ee9a9d2a777ecaf3327d04b60479fcc8d;hp=76c89df93f85c826c0cf847ade1ed9c7aecd65f8;hpb=2a5995bedd9e4861dce1a70a460fdeb7bd0f2ad7;p=senf.git diff --git a/Packets/MPEGDVBBundle/TransportPacket.test.cc b/Packets/MPEGDVBBundle/TransportPacket.test.cc index 76c89df..7879ff0 100644 --- a/Packets/MPEGDVBBundle/TransportPacket.test.cc +++ b/Packets/MPEGDVBBundle/TransportPacket.test.cc @@ -1,9 +1,9 @@ -// $Id: IpV4Packet.test.cc 364 2007-07-31 09:39:56Z g0dil $ +// $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Thorsten Horstmann // // 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 @@ -28,30 +28,39 @@ // Custom includes #include "TransportPacket.hh" -#include +#include "../../Utils/auto_unit_test.hh" #include +#include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// using namespace senf; -BOOST_AUTO_UNIT_TEST(transportPacket_packet) +BOOST_AUTO_UNIT_TEST(transportPacket_parse) { - // TransportStream-Packet containing a MPE encoded section with an IPv6 ping packet, + // TransportStream-Packet containing a ULE encoded IPv6 ping packet, // captured with dvbsnoop unsigned char data[] = { - 0x47, 0x41, 0x0f, 0x1e, 0x00, 0x80, 0x4c, 0x86, - 0xdd, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, - 0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68, - 0xaf, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x04 ,0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58, - 0xe1, 0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01, - 0x00, 0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x1d, 0xc4, 0xe8, 0xc1, 0xff, 0xff, 0xff, + // Transport Packet Header + 0x47, 0x41, 0x0f, 0x1e, + // Payload Pointer + 0x00, + // SNDU Header + 0x80, 0x4c, 0x86, 0xdd, + // IPv6 Packet + 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x40, + 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68, 0xaf, + 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, + 0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58, 0xe1, + 0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01, 0x00, + 0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, + // SNDU footer (crc-32) + 0x1d, 0xc4, 0xe8, 0xc1, + // Transport Packet stuffing 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -64,19 +73,51 @@ BOOST_AUTO_UNIT_TEST(transportPacket_packet) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; - senf::TransportPacket p (senf::TransportPacket::create(data)); + TransportPacket p (TransportPacket::create(data)); - BOOST_CHECK_EQUAL( p->sync_byte(), TRANSPORT_PACKET_SYNC_BYTE ); - BOOST_CHECK( ! p->transport_error_indicator() ); - BOOST_CHECK( p->pusi() ); - BOOST_CHECK( ! p->transport_priority() ); - BOOST_CHECK_EQUAL( p->pid(), 0x010fu ); - BOOST_CHECK_EQUAL( p->transport_scrmbl_ctrl(), 0x0u ); - BOOST_CHECK_EQUAL( p->adaptation_field_ctrl(), 0x1u ); - BOOST_CHECK_EQUAL( p->continuity_counter(), 0x0eu ); + BOOST_CHECK_EQUAL( p->sync_byte(), TransportPacketType::SYNC_BYTE+0 ); + BOOST_CHECK( ! p->transport_error_indicator() ); + BOOST_CHECK( p->pusi() ); + BOOST_CHECK( ! p->transport_priority() ); + BOOST_CHECK_EQUAL( p->pid(), 0x010fu ); + BOOST_CHECK_EQUAL( p->transport_scrmbl_ctrl(), 0x0u ); + BOOST_CHECK_EQUAL( p->adaptation_field_ctrl(), 0x1u ); + BOOST_CHECK_EQUAL( p->continuity_counter(), 0x0eu ); + BOOST_CHECK_EQUAL( p->pointer_field(), 0x0u ); +} + + +BOOST_AUTO_UNIT_TEST(transportPacket_create_with_pusi) +{ + TransportPacket ts_packet (TransportPacket::create()); + ts_packet->setPUSI(true); + ts_packet->pid() = 0x010fu; + ts_packet->continuity_counter() = 0x0eu; + + unsigned char payload_data[] = { // see test above + // SNDU Header + 0x80, 0x4c, 0x86, 0xdd, + // IPv6 Packet + 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x40, + 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68, 0xaf, + 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, + 0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58, 0xe1, + 0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01, 0x00, + 0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, + // SNDU footer (crc-32) + 0x1d, 0xc4, 0xe8, 0xc1 + }; + senf::DataPacket payload (senf::DataPacket::createAfter( ts_packet, payload_data)); + + //TransportPacketType::addStuffingPacketAfter( ts_packet); + + //senf::hexdump(ts_packet.data().begin(), ts_packet.data().end(), std::cout); } ///////////////////////////////cc.e////////////////////////////////////////