Remove reader flags.

This commit is contained in:
David Given
2021-05-15 18:56:30 +02:00
parent 3c9fb79263
commit 5a38db166f
10 changed files with 23 additions and 62 deletions

View File

@@ -42,5 +42,16 @@ message DecoderProto {
Victor9kDecoderProto victor9k = 17; Victor9kDecoderProto victor9k = 17;
ZilogMczDecoderProto zilogmcz = 18; ZilogMczDecoderProto zilogmcz = 18;
} }
optional string copy_flux_to = 19
[(help) = "while decoding, write a copy of the flux to this file"];
optional bool dump_records = 20 [default = false,
(help) = "if set, then dump the parsed but undecoded disk records"];
optional bool dump_sectors = 21 [default = false,
(help) = "if set, then dump the decoded sectors to this file"];
optional int32 retries = 22 [default = 5,
(help) = "how many times to retry each track in the event of a read failure"];
optional string write_csv_to = 23
[(help) = "if set, write a CSV report of the disk state"];
} }

View File

@@ -17,38 +17,10 @@
#include "imagewriter/imagewriter.h" #include "imagewriter/imagewriter.h"
#include "fmt/format.h" #include "fmt/format.h"
#include "proto.h" #include "proto.h"
#include "lib/decoders/decoders.pb.h"
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
FlagGroup readerFlags;
static StringFlag destination(
{ "--write-flux", "-f" },
"write the raw magnetic flux to this file",
"");
static SettableFlag justRead(
{ "--just-read" },
"just read the disk and do no further processing");
static SettableFlag dumpRecords(
{ "--dump-records" },
"Dump the parsed but undecoded records.");
static SettableFlag dumpSectors(
{ "--dump-sectors" },
"Dump the decoded sectors.");
static IntFlag retries(
{ "--retries" },
"How many times to retry each track in the event of a read failure.",
5);
static StringFlag csvFile(
{ "--write-csv" },
"write a CSV report of the disk state",
"");
static std::unique_ptr<FluxSink> outputFluxSink; static std::unique_ptr<FluxSink> outputFluxSink;
void Track::readFluxmap() void Track::readFluxmap()
@@ -137,7 +109,7 @@ void readDiskCommand(FluxSource& fluxsource, AbstractDecoder& decoder, ImageWrit
track->fluxsource = &fluxsource; track->fluxsource = &fluxsource;
std::map<int, std::unique_ptr<Sector>> readSectors; std::map<int, std::unique_ptr<Sector>> readSectors;
for (int retry = ::retries; retry >= 0; retry--) for (int retry = config.decoder().retries(); retry >= 0; retry--)
{ {
track->readFluxmap(); track->readFluxmap();
decoder.decodeToSectors(*track); decoder.decodeToSectors(*track);
@@ -197,7 +169,7 @@ void readDiskCommand(FluxSource& fluxsource, AbstractDecoder& decoder, ImageWrit
std::cout << retry << " retries remaining" << std::endl; std::cout << retry << " retries remaining" << std::endl;
} }
if (dumpRecords) if (config.decoder().dump_records())
{ {
std::cout << "\nRaw (undecoded) records follow:\n\n"; std::cout << "\nRaw (undecoded) records follow:\n\n";
for (auto& record : track->rawrecords) for (auto& record : track->rawrecords)
@@ -209,7 +181,7 @@ void readDiskCommand(FluxSource& fluxsource, AbstractDecoder& decoder, ImageWrit
} }
} }
if (dumpSectors) if (config.decoder().dump_sectors())
{ {
std::cout << "\nDecoded sectors follow:\n\n"; std::cout << "\nDecoded sectors follow:\n\n";
for (auto& sector : track->sectors) for (auto& sector : track->sectors)
@@ -247,8 +219,8 @@ void readDiskCommand(FluxSource& fluxsource, AbstractDecoder& decoder, ImageWrit
} }
writer.printMap(allSectors); writer.printMap(allSectors);
if (!csvFile.get().empty()) if (!config.decoder().has_write_csv_to())
writer.writeCsv(allSectors, csvFile.get()); writer.writeCsv(allSectors, config.decoder().write_csv_to());
writer.writeImage(allSectors); writer.writeImage(allSectors);
if (failures) if (failures)

View File

@@ -1,21 +1,12 @@
#ifndef READER_H #ifndef READER_H
#define READER_H #define READER_H
#include "flags.h"
class AbstractDecoder; class AbstractDecoder;
class FluxSource; class FluxSource;
class Fluxmap; class Fluxmap;
class ImageWriter; class ImageWriter;
class Track; class Track;
extern FlagGroup readerFlags;
extern void setReaderDefaultSource(const std::string& source);
extern void setReaderDefaultOutput(const std::string& output);
extern void setReaderRevolutions(int revolutions);
extern void setReaderHardSectorCount(int sectorCount);
extern std::vector<std::unique_ptr<Track>> readTracks(); extern std::vector<std::unique_ptr<Track>> readTracks();
extern void readDiskCommand(FluxSource& source, AbstractDecoder& decoder, ImageWriter& writer); extern void readDiskCommand(FluxSource& source, AbstractDecoder& decoder, ImageWriter& writer);

View File

@@ -17,8 +17,6 @@
#include "lib/config.pb.h" #include "lib/config.pb.h"
#include "proto.h" #include "proto.h"
FlagGroup writerFlags;
static sqlite3* outdb; static sqlite3* outdb;
void writeTracks( void writeTracks(

View File

@@ -1,20 +1,12 @@
#ifndef WRITER_H #ifndef WRITER_H
#define WRITER_H #define WRITER_H
#include "flags.h"
extern FlagGroup writerFlags;
class Fluxmap; class Fluxmap;
class AbstractEncoder; class AbstractEncoder;
class Geometry; class Geometry;
class ImageReader; class ImageReader;
class FluxSink; class FluxSink;
extern void setWriterDefaultDest(const std::string& dest);
extern void setWriterDefaultInput(const std::string& input);
extern void setWriterHardSectorCount(int sectorCount);
extern void writeTracks(FluxSink& fluxSink, const std::function<std::unique_ptr<Fluxmap>(int track, int side)> producer); extern void writeTracks(FluxSink& fluxSink, const std::function<std::unique_ptr<Fluxmap>(int track, int side)> producer);
extern void fillBitmapTo(std::vector<bool>& bitmap, extern void fillBitmapTo(std::vector<bool>& bitmap,

View File

@@ -3,7 +3,7 @@
#include "fluxmap.h" #include "fluxmap.h"
#include "writer.h" #include "writer.h"
static FlagGroup flags { &writerFlags }; static FlagGroup flags;
int mainErase(int argc, const char* argv[]) int mainErase(int argc, const char* argv[])
{ {

View File

@@ -11,7 +11,7 @@
#include "track.h" #include "track.h"
#include "fmt/format.h" #include "fmt/format.h"
static FlagGroup flags { &readerFlags }; static FlagGroup flags;
static SettableFlag dumpFluxFlag( static SettableFlag dumpFluxFlag(
{ "--dump-flux", "-F" }, { "--dump-flux", "-F" },

View File

@@ -17,7 +17,7 @@
#include <google/protobuf/text_format.h> #include <google/protobuf/text_format.h>
#include <fstream> #include <fstream>
static FlagGroup flags { &readerFlags }; static FlagGroup flags;
extern const std::map<std::string, std::string> readables; extern const std::map<std::string, std::string> readables;

View File

@@ -17,7 +17,7 @@
#include <google/protobuf/text_format.h> #include <google/protobuf/text_format.h>
#include <fstream> #include <fstream>
static FlagGroup flags { &writerFlags }; static FlagGroup flags;
extern const std::map<std::string, std::string> writables; extern const std::map<std::string, std::string> writables;
@@ -28,10 +28,6 @@ int mainWrite(int argc, const char* argv[])
if (!config.has_input() || !config.has_output()) if (!config.has_input() || !config.has_output())
Error() << "incomplete config (did you remember to specify the format?)"; Error() << "incomplete config (did you remember to specify the format?)";
std::string s;
google::protobuf::TextFormat::PrintToString(config, &s);
std::cout << s << '\n';
std::unique_ptr<ImageReader> reader(ImageReader::create(config.input().file())); std::unique_ptr<ImageReader> reader(ImageReader::create(config.input().file()));
std::unique_ptr<AbstractEncoder> encoder(AbstractEncoder::create(config.encoder())); std::unique_ptr<AbstractEncoder> encoder(AbstractEncoder::create(config.encoder()));
std::unique_ptr<FluxSink> fluxSink(FluxSink::create(config.output().disk())); std::unique_ptr<FluxSink> fluxSink(FluxSink::create(config.output().disk()));

View File

@@ -10,10 +10,11 @@
#include <fstream> #include <fstream>
#include <ctype.h> #include <ctype.h>
static FlagGroup flags { &writerFlags }; static FlagGroup flags;
int mainWriteFlux(int argc, const char* argv[]) int mainWriteFlux(int argc, const char* argv[])
{ {
Error() << "TODO";
#if 0 #if 0
setReaderDefaultSource(":t=0-81:h=0-1"); setReaderDefaultSource(":t=0-81:h=0-1");
setWriterDefaultDest(":t=0-81:s=0-1"); setWriterDefaultDest(":t=0-81:s=0-1");