Hopefully get the imagereader/imagewriter and IBM encoder/decoders using sector

IDs.
This commit is contained in:
David Given
2021-07-29 00:02:46 +02:00
parent 8b115f8156
commit 29e8c99b4f
34 changed files with 304 additions and 61 deletions

View File

@@ -35,7 +35,7 @@ public:
ImgInputOutputProto::TrackdataProto trackdata;
getTrackFormat(trackdata, track, side);
for (int sectorId = 0; sectorId < trackdata.sectors(); sectorId++)
for (int sectorId : getSectors(trackdata))
{
Bytes data(trackdata.sector_size());
inputFile.read((char*) data.begin(), data.size());
@@ -75,6 +75,32 @@ private:
trackdata.MergeFrom(f);
}
}
std::vector<unsigned> getSectors(const ImgInputOutputProto::TrackdataProto& trackdata)
{
std::vector<unsigned> sectors;
switch (trackdata.sectors_oneof_case())
{
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::kSectors:
{
for (int sectorId : trackdata.sectors().sector())
sectors.push_back(sectorId);
break;
}
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::kSectorRange:
{
int sectorId = trackdata.sector_range().start_sector();
for (int i=0; i<trackdata.sector_range().sector_count(); i++)
sectors.push_back(sectorId + i);
break;
}
default:
Error() << "no list of sectors provided in track format";
}
return sectors;
}
};
std::unique_ptr<ImageReader> ImageReader::createImgImageReader(