#include <iostream>
#include <string_view>
#include <mdf/mdfreader.h>
#include <mdf/ichannelgroup.h>
#include <mdf/idatagroup.h>
using namespace mdf;
int main()
{
constexpr std::string_view kTestFile = "K:/test/mdf/crashfile.mf4";
MdfReader reader(kTestFile.data());
reader.ReadEverythingButData();
const auto* mdf_file = reader.GetFile(); DataGroupList dg_list; mdf_file->DataGroups(dg_list);
for (auto* dg4 : dg_list) {
ChannelObserverList subscriber_list;
const auto cg_list = dg4->ChannelGroups();
for (const auto* cg4 : cg_list ) {
const auto cn_list = cg4->Channels();
for (const auto* cn4 : cn_list) {
auto sub = CreateChannelObserver(*dg4, *cg4, *cn4);
subscriber_list.emplace_back(std::move(sub));
}
}
reader.ReadData(*dg4); double channel_value = 0.0; double eng_value = 0.0; for (auto& obs : subscriber_list) {
for (size_t sample = 0; sample < obs->NofSamples(); ++sample) {
const auto channel_valid = obs->GetChannelValue(sample, channel_value);
const auto eng_valid = obs->GetEngValue(sample, eng_value);
}
}
dg4->ClearData();
}
reader.Close();
return 0;
}