kopia lustrzana https://github.com/mobilinkd/m17-cxx-demod
Rearrange frame header so flags precede token
rodzic
d0e909d616
commit
67c3edc5b8
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue