28using namespace std::literals::string_literals;
32 const std::vector<std::tuple<std::string, uint32_t, uint32_t>> RadioConfigs = {
34 {
"DM-1701"s, 0x2001u, 0x2040u },
35 {
"2017"s, 0x2001u, 0x2040u },
36 {
"DR780"s, 0x2001u, 0x2040u }
39 enum class RDTType : uint8_t
49 auto Read(std::ifstream& i) ->
void
52 i.read((
char*)magic.data(), 0x05);
53 i.read((
char*)&n0,
sizeof(uint8_t));
54 i.read((
char*)&channel_offset,
sizeof(uint32_t));
55 i.read((
char*)&n1,
sizeof(uint8_t));
57 i.read((
char*)target.data(), 0x06);
58 i.read((
char*)&n2,
sizeof(uint8_t));
59 i.read((
char*)&n3,
sizeof(uint32_t));
61 target_name.resize(0xff);
62 i.read((
char*)target_name.data(), 0xff);
63 target_name.resize(strlen(target_name.c_str()));
65 i.read((
char*)&n4,
sizeof(uint32_t));
66 i.read((
char*)&n5,
sizeof(uint32_t));
67 i.read((
char*)&n6,
sizeof(uint32_t));
68 i.read((
char*)&n7,
sizeof(uint32_t));
71 i.read((
char*)radio.data(), 0x10);
72 radio.resize(strlen(radio.c_str()));
74 i.read((
char*)nz,
sizeof(uint32_t) * 0x3c);
78 auto Validate()
const ->
bool
84 else if(
"Target"s != target)
91 auto GetTimestampOffset()
const -> uint32_t
93 for(
const auto& rx : RadioConfigs)
95 auto r = std::get<0>(rx);
96 auto o = std::get<1>(rx);
106 auto GetGeneralOffset()
const -> uint32_t
108 for(
const auto& rx : RadioConfigs)
110 auto r = std::get<0>(rx);
111 auto o = std::get<2>(rx);
124 uint32_t channel_offset;
129 std::string target_name;