Remove stateful decoder and split decoder.

This commit is contained in:
David Given
2019-04-30 21:43:25 +02:00
parent c5d924c161
commit 1fb67dfe3c
2 changed files with 0 additions and 91 deletions

View File

@@ -234,70 +234,3 @@ void AbstractSimplifiedDecoder::pushRecord(const Fluxmap::Position& start, const
_track->rawrecords.push_back(record);
_fmr->seek(here);
}
void AbstractStatefulDecoder::decodeToSectors(Track& track)
{
Sector sector;
sector.physicalSide = track.physicalSide;
sector.physicalTrack = track.physicalTrack;
FluxmapReader fmr(*track.fluxmap);
for (;;)
{
nanoseconds_t clockPeriod = findSector(fmr, track);
if (fmr.eof() || !clockPeriod)
break;
sector.status = Sector::MISSING;
sector.data.clear();
sector.clock = clockPeriod;
_recordStart = sector.position = fmr.tell();
decodeSingleSector(fmr, track, sector);
pushRecord(fmr, track, sector);
if (sector.status != Sector::MISSING)
track.sectors.push_back(sector);
}
}
void AbstractStatefulDecoder::pushRecord(FluxmapReader& fmr, Track& track, Sector& sector)
{
RawRecord record;
record.physicalSide = track.physicalSide;
record.physicalTrack = track.physicalTrack;
record.clock = sector.clock;
record.position = _recordStart;
Fluxmap::Position here = fmr.tell();
fmr.seek(_recordStart);
record.data = toBytes(fmr.readRawBits(here, sector.clock));
track.rawrecords.push_back(record);
_recordStart = here;
}
void AbstractStatefulDecoder::discardRecord(FluxmapReader& fmr)
{
_recordStart = fmr.tell();
}
void AbstractSplitDecoder::decodeSingleSector(FluxmapReader& fmr, Track& track, Sector& sector)
{
decodeHeader(fmr, track, sector);
if (sector.status == Sector::MISSING)
return;
pushRecord(fmr, track, sector);
nanoseconds_t clockPeriod = findData(fmr, track);
if (fmr.eof() || !clockPeriod)
return;
sector.clock = clockPeriod;
discardRecord(fmr);
Fluxmap::Position pos = fmr.tell();
decodeData(fmr, track, sector);
if (sector.status == Sector::DATA_MISSING)
{
fmr.seek(pos);
return;
}
}

View File

@@ -68,28 +68,4 @@ protected:
Sector* _sector;
};
class AbstractStatefulDecoder : public AbstractDecoder
{
public:
void decodeToSectors(Track& track);
void discardRecord(FluxmapReader& fmr);
void pushRecord(FluxmapReader& fmr, Track& track, Sector& sector);
protected:
virtual nanoseconds_t findSector(FluxmapReader& fmr, Track& track) = 0;
virtual void decodeSingleSector(FluxmapReader& fmr, Track& track, Sector& sector) = 0;
private:
Fluxmap::Position _recordStart;
};
class AbstractSplitDecoder : public AbstractStatefulDecoder
{
void decodeSingleSector(FluxmapReader& fmr, Track& track, Sector& sector) override;
virtual nanoseconds_t findData(FluxmapReader& fmr, Track& track) = 0;
virtual void decodeHeader(FluxmapReader& fmr, Track& track, Sector& sector) = 0;
virtual void decodeData(FluxmapReader& fmr, Track& track, Sector& sector) = 0;
};
#endif