#include "../../Utils/auto_unit_test.hh"
#include <boost/test/test_tools.hpp>
+#include <senf/Utils/hexdump.hh>
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
using namespace senf;
-BOOST_AUTO_UNIT_TEST(transportPacket_packet)
+BOOST_AUTO_UNIT_TEST(transportPacket_parse)
{
// 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,
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(), 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->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->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////////////////////////////////////////