diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2020-11-16 08:54:40 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2020-11-16 08:54:40 +0100 |
commit | eb523e91f692ae0ef9d069e11a2a177a02431c28 (patch) | |
tree | f55a9d2670ff129a995813df1d66487cb2306fff /lib/edioutput | |
parent | 57fb9afea4c1db9d33c4ba94a681a36b0f80af40 (diff) | |
download | dabmux-eb523e91f692ae0ef9d069e11a2a177a02431c28.tar.gz dabmux-eb523e91f692ae0ef9d069e11a2a177a02431c28.tar.bz2 dabmux-eb523e91f692ae0ef9d069e11a2a177a02431c28.zip |
common a676d57: EDI output: Make Transport Addressing optional
Diffstat (limited to 'lib/edioutput')
-rw-r--r-- | lib/edioutput/EDIConfig.h | 1 | ||||
-rw-r--r-- | lib/edioutput/PFT.cpp | 10 | ||||
-rw-r--r-- | lib/edioutput/PFT.h | 5 |
3 files changed, 9 insertions, 7 deletions
diff --git a/lib/edioutput/EDIConfig.h b/lib/edioutput/EDIConfig.h index ca76322..4f1df97 100644 --- a/lib/edioutput/EDIConfig.h +++ b/lib/edioutput/EDIConfig.h @@ -68,6 +68,7 @@ struct configuration_t { bool dump = false; // dump a file with the EDI packets bool verbose = false; bool enable_pft = false; // Enable protection and fragmentation + bool enable_transport_header = true; // Sets Addr, Source and Dest in PFT unsigned int tagpacket_alignment = 0; std::vector<std::shared_ptr<destination_t> > destinations; unsigned int dest_port = 0; // common destination port, because it's encoded in the transport layer diff --git a/lib/edioutput/PFT.cpp b/lib/edioutput/PFT.cpp index 371d36f..1e3d4da 100644 --- a/lib/edioutput/PFT.cpp +++ b/lib/edioutput/PFT.cpp @@ -233,7 +233,6 @@ std::vector< PFTFragment > PFT::Assemble(AFPacket af_packet) vector< vector<uint8_t> > pft_fragments; // These contain PF headers const bool enable_RS = (m_m > 0); - const bool enable_transport = true; unsigned int findex = 0; @@ -276,7 +275,7 @@ std::vector< PFTFragment > PFT::Assemble(AFPacket af_packet) plen |= 0x8000; // Set FEC bit } - if (enable_transport) { + if (m_transport_header) { plen |= 0x4000; // Set ADDR bit } @@ -288,11 +287,10 @@ std::vector< PFTFragment > PFT::Assemble(AFPacket af_packet) packet.push_back(zero_pad); // RSz } - if (enable_transport) { + if (m_transport_header) { // Source (16 bits) - uint16_t addr_source = 0; - packet.push_back(addr_source >> 8); - packet.push_back(addr_source & 0xFF); + packet.push_back(m_addr_source >> 8); + packet.push_back(m_addr_source & 0xFF); // Dest (16 bits) packet.push_back(m_dest_port >> 8); diff --git a/lib/edioutput/PFT.h b/lib/edioutput/PFT.h index 502aa39..1019915 100644 --- a/lib/edioutput/PFT.h +++ b/lib/edioutput/PFT.h @@ -71,7 +71,10 @@ class PFT unsigned int m_dest_port = 12000; // Destination port for transport header uint16_t m_pseq = 0; size_t m_num_chunks = 0; - bool m_verbose = 0; + bool m_verbose = false; + + bool m_transport_header = false; + const uint16_t m_addr_source = 0; }; } |