Rearrange frame header so flags precede token

pull/24/head
Paul Williamson 2022-07-12 15:58:01 -07:00
rodzic d0e909d616
commit 67c3edc5b8
2 zmienionych plików z 14 dodań i 15 usunięć

Wyświetl plik

@ -408,8 +408,8 @@ void dump_fheader(const fheader_t header)
}
//
if (header[9] & 0x80) std::cerr << "last ";
if (header[9] & 0x40) std::cerr << "BERT";
if (header[6] & 0x80) std::cerr << "last ";
if (header[6] & 0x40) std::cerr << "BERT";
std::cerr << std::endl << std::dec;
}
@ -429,10 +429,9 @@ fheader_t fill_fheader(const std::string& source_callsign, OPVFrameHeader::token
uint8_t flags = 0;
if (is_bert) flags |= 0x40;
auto it = std::copy(encoded_callsign.begin(), encoded_callsign.end(), header.begin());
it = std::copy(access_token.begin(), access_token.end(), it);
header[9] = flags;
//!!! fill in the rest of the header
std::copy(encoded_callsign.begin(), encoded_callsign.end(), header.begin());
std::copy(access_token.begin(), access_token.end(), header.begin() + 9);
header[6] = flags;
if (config->verbose) dump_fheader(header);
@ -443,7 +442,7 @@ fheader_t fill_fheader(const std::string& source_callsign, OPVFrameHeader::token
// Modify the frame header to set the EOS (end of stream) bit
void set_last_frame_bit(fheader_t& fh)
{
fh[9] |= 0x80;
fh[6] |= 0x80;
}
@ -591,7 +590,7 @@ int main(int argc, char* argv[])
access_token[1] = (config->token & 0x00ff00) >> 8;
access_token[2] = (config->token & 0x0000ff);
auto fh = fill_fheader(config->source_address, access_token, config->bert != 0); //!!! add parameters
auto fh = fill_fheader(config->source_address, access_token, config->bert != 0);
auto encoded_fh = encode_fheader(fh);
signal(SIGINT, &signal_handler);

Wyświetl plik

@ -162,20 +162,20 @@ struct OPVFrameHeader
for (auto x : callsign) if (x) std::cerr << x;
}
// If the decoded authentication token has changed, store it
if (! std::equal(raw_fh.begin() + 6, raw_fh.begin() + 9, raw_fheader_.begin() + 6))
// If the decoded flags have changed, store them
if (! std::equal(raw_fh.begin() + 12, raw_fh.begin() + 18, raw_fheader_.begin() + 12))
{
result = HeaderResult::UPDATED;
std::copy(raw_fh.begin() + 6, raw_fh.begin() + 9, token.begin());
std::cerr << "Token: " << std::hex << token[0] << token[1] << token[2] << std::dec;
flags = ((raw_fh[6] << 16) & 0xff0000) | ((raw_fh[7] << 8) & 0x00ff00) | (raw_fh[8] & 0x0000ff);
std::cerr << "Flags: " << std::hex << flags << std::dec;
}
// If the decoded flags have changed, store them
// If the decoded authentication token has changed, store it
if (! std::equal(raw_fh.begin() + 18, raw_fh.end(), raw_fheader_.begin() + 18))
{
result = HeaderResult::UPDATED;
flags = ((raw_fh[9] << 16) & 0xff0000) | ((raw_fh[10] << 8) & 0x00ff00) | (raw_fh[11] & 0x0000ff);
std::cerr << "Flags: " << std::hex << flags << std::dec;
std::copy(raw_fh.begin() + 9, raw_fh.end(), token.begin());
std::cerr << "Token: " << std::hex << token[0] << token[1] << token[2] << std::dec;
}
if (result == HeaderResult::UPDATED)