/* * Decode the DMP header. If data is null we're expected to use the last * header we got. * @param headers the HeaderSet to add to * @param data a pointer to the data * @param length length of the data * @returns true if successful, false otherwise */ bool DMPInflator::DecodeHeader(HeaderSet &headers, const uint8_t *data, unsigned int length, unsigned int &bytes_used) { if (data) { // the header bit was set, decode it if (length >= DMPHeader::DMP_HEADER_SIZE) { DMPHeader header(*data); m_last_header = header; m_last_header_valid = true; headers.SetDMPHeader(header); bytes_used = DMPHeader::DMP_HEADER_SIZE; return true; } bytes_used = 0; return false; } // use the last header if it exists bytes_used = 0; if (!m_last_header_valid) { OLA_WARN << "Missing DMP Header data"; return false; } headers.SetDMPHeader(m_last_header); return true; }
/* * Check that the header set works */ void HeaderSetTest::testHeaderSet() { HeaderSet headers; RootHeader root_header; E131Header e131_header("e131", 1, 2, 6001); E133Header e133_header("foo", 1, 2050); DMPHeader dmp_header(false, false, NON_RANGE, ONE_BYTES); // test the root header component CID cid = CID::Generate(); root_header.SetCid(cid); headers.SetRootHeader(root_header); OLA_ASSERT(root_header == headers.GetRootHeader()); // test the E1.31 header component headers.SetE131Header(e131_header); OLA_ASSERT(e131_header == headers.GetE131Header()); // test the E1.33 header component headers.SetE133Header(e133_header); OLA_ASSERT(e133_header == headers.GetE133Header()); // test the DMP headers component headers.SetDMPHeader(dmp_header); OLA_ASSERT(dmp_header == headers.GetDMPHeader()); // test assign HeaderSet headers2 = headers; OLA_ASSERT(root_header == headers2.GetRootHeader()); OLA_ASSERT(e131_header == headers2.GetE131Header()); OLA_ASSERT(e133_header == headers2.GetE133Header()); OLA_ASSERT(dmp_header == headers2.GetDMPHeader()); OLA_ASSERT(headers2 == headers); // test copy HeaderSet headers3(headers); OLA_ASSERT(root_header == headers3.GetRootHeader()); OLA_ASSERT(e131_header == headers3.GetE131Header()); OLA_ASSERT(e133_header == headers3.GetE133Header()); OLA_ASSERT(dmp_header == headers3.GetDMPHeader()); OLA_ASSERT(headers3 == headers); }