Add the boilerplate for the Agat encoder.

This commit is contained in:
dg
2023-01-05 12:04:36 +00:00
parent 909f0d628b
commit b0c77653a2
7 changed files with 54 additions and 0 deletions

View File

@@ -3,7 +3,13 @@
#define AGAT_SECTOR_SIZE 256
class Encoder;
class EncoderProto;
class Decoder;
class DecoderProto;
extern std::unique_ptr<Decoder> createAgatDecoder(const DecoderProto& config);
extern std::unique_ptr<Encoder> createAgatEncoder(const EncoderProto& config);
extern uint8_t agatChecksum(const Bytes& bytes);

View File

@@ -2,4 +2,5 @@ syntax = "proto2";
message AgatDecoderProto {}
message AgatEncoderProto {}

37
arch/agat/encoder.cc Normal file
View File

@@ -0,0 +1,37 @@
#include "globals.h"
#include "decoders/decoders.h"
#include "encoders/encoders.h"
#include "agat.h"
#include "crc.h"
#include "readerwriter.h"
#include "image.h"
#include "arch/agat/agat.pb.h"
#include "lib/encoders/encoders.pb.h"
class AgatEncoder : public Encoder
{
public:
AgatEncoder(const EncoderProto& config):
Encoder(config),
_config(config.agat())
{
}
public:
std::unique_ptr<Fluxmap> encode(std::shared_ptr<const TrackInfo>& trackInfo,
const std::vector<std::shared_ptr<const Sector>>& sectors,
const Image& image) override
{
Error() << "unimplemented";
}
private:
const AgatEncoderProto& _config;
};
std::unique_ptr<Encoder> createAgatEncoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new AgatEncoder(config));
}

View File

@@ -2,6 +2,7 @@ LIBARCH_SRCS = \
arch/aeslanier/decoder.cc \
arch/agat/agat.cc \
arch/agat/decoder.cc \
arch/agat/encoder.cc \
arch/amiga/amiga.cc \
arch/amiga/decoder.cc \
arch/amiga/encoder.cc \

View File

@@ -2,6 +2,7 @@
#include "fluxmap.h"
#include "decoders/decoders.h"
#include "encoders/encoders.h"
#include "arch/agat/agat.h"
#include "arch/amiga/amiga.h"
#include "arch/apple2/apple2.h"
#include "arch/brother/brother.h"
@@ -25,6 +26,7 @@ std::unique_ptr<Encoder> Encoder::create(
std::function<std::unique_ptr<Encoder>(const EncoderProto&)>>
encoders = {
{EncoderProto::kAmiga, createAmigaEncoder },
{EncoderProto::kAgat, createAgatEncoder },
{EncoderProto::kApple2, createApple2Encoder },
{EncoderProto::kBrother, createBrotherEncoder },
{EncoderProto::kC64, createCommodore64Encoder},

View File

@@ -1,5 +1,6 @@
syntax = "proto2";
import "arch/agat/agat.proto";
import "arch/amiga/amiga.proto";
import "arch/apple2/apple2.proto";
import "arch/brother/brother.proto";
@@ -25,5 +26,6 @@ message EncoderProto
MicropolisEncoderProto micropolis = 10;
Victor9kEncoderProto victor9k = 11;
Apple2EncoderProto apple2 = 12;
AgatEncoderProto agat = 13;
}
}

View File

@@ -20,3 +20,8 @@ layout {
decoder {
agat {}
}
encoder {
agat {}
}