Add lots more protobuf machinery.

This commit is contained in:
David Given
2021-05-07 23:38:31 +02:00
parent 22f320f1c4
commit 1b0ec50711
9 changed files with 118 additions and 6 deletions

View File

@@ -10,7 +10,7 @@ jobs:
with:
fetch-depth: 1
- name: apt
run: sudo apt update && sudo apt install libusb-1.0-0-dev libsqlite3-dev ninja-build
run: sudo apt update && sudo apt install libusb-1.0-0-dev libsqlite3-dev ninja-build protobuf-compiler
- name: make
run: make
@@ -21,7 +21,7 @@ jobs:
with:
fetch-depth: 1
- name: brew
run: brew install sqlite pkg-config libusb ninja
run: brew install sqlite pkg-config libusb ninja protobuf
- name: make
run: make
@@ -37,7 +37,7 @@ jobs:
fetch-depth: 1
- name: pacman
run: |
pacman -S --noconfirm --needed make ninja mingw-w64-i686-libusb mingw-w64-i686-sqlite3 mingw-w64-i686-zlib mingw-w64-cross-gcc zip
pacman -S --noconfirm --needed make ninja mingw-w64-i686-libusb mingw-w64-i686-sqlite3 mingw-w64-i686-zlib mingw-w64-cross-gcc zip protobuf mingw-w64-i686-protobuf
- name: build
run: |
make CXX=/opt/bin/i686-w64-mingw32-g++.exe AR="/opt/bin/i686-w64-mingw32-ar.exe rcs"

View File

@@ -1,4 +1,4 @@
PACKAGES = zlib sqlite3 libusb-1.0
PACKAGES = zlib sqlite3 libusb-1.0 protobuf
export CFLAGS = --std=c++14 -ffunction-sections -fdata-sections
export LDFLAGS =

View File

@@ -0,0 +1,10 @@
syntax = "proto2";
message Brother {
optional double clock_rate_us = 1 [default = 3.83];
optional double post_index_gap_ms = 2 [default = 1.0];
optional double sector_spacing_ms = 3 [default = 16.2];
optional double post_header_spacing_ms = 4 [default = 0.69];
optional string sector_skew = 5 [default = "05a3816b4927"];
}

24
arch/ibm/ibm.proto Normal file
View File

@@ -0,0 +1,24 @@
syntax = "proto2";
message IBM {
enum FmMfm {
USE_MFM = 0;
USE_FM = 1;
}
optional double track_length_ms = 1;
optional int32 sector_size_bytes = 2;
optional bool emit_iam = 3;
optional int32 start_sector_id = 4;
optional double clock_rate_khz = 5;
optional FmMfm use_fm = 6 [default = USE_MFM];
optional int32 idam_byte = 7;
optional int32 dam_byte = 8;
optional int32 gap0 = 9;
optional int32 gap1 = 10;
optional int32 gap2 = 11;
optional int32 gap3 = 12;
optional string sector_skew = 13;
optional bool swap_sizes = 14;
}

View File

@@ -1,6 +1,31 @@
syntax = "proto2";
import "arch/brother/brother.proto";
import "arch/ibm/ibm.proto";
import "lib/decoders/decoder.proto";
import "lib/imagereader/img.proto";
message DiskEncoding {
optional int32 cylinder = 1;
optional int32 head = 2;
oneof format {
IBM ibm = 3;
Brother brother = 4;
}
}
message FileEncoding {
optional string filename = 1;
oneof format {
Img img = 2;
}
}
message Config {
optional string thing = 1;
repeated DiskEncoding disk = 2;
optional FileEncoding file = 3;
optional Decoder decoder = 4;
}

View File

@@ -0,0 +1,9 @@
syntax = "proto2";
message Decoder {
optional double pulse_debounce_threshold = 1 [default = 0.30];
optional double bit_error_threshold = 2 [default = 0.40];
optional double clock_interval_bias = 3 [default = -0.02];
optional double minimum_clock_us = 4 [default = 0.75];
}

17
lib/imagereader/img.proto Normal file
View File

@@ -0,0 +1,17 @@
syntax = "proto2";
message Img {
message Format {
optional int32 track = 1;
optional int32 side = 2;
optional int64 file_offset = 3;
optional int32 sector_size = 4;
}
optional int32 tracks = 1;
optional int32 heads = 2;
optional int32 sectors = 3;
repeated Format format = 4;
}

View File

@@ -177,6 +177,7 @@ runtest() {
buildprogram $OBJDIR/$prog \
lib$prog.a \
libbackend.a \
libproto.a \
libagg.a \
libfmt.a
@@ -192,10 +193,15 @@ buildlibrary libfmt.a \
dep/fmt/format.cc \
dep/fmt/posix.cc \
buildproto libconfig.a \
lib/config.proto
buildproto libproto.a \
arch/brother/brother.proto \
arch/ibm/ibm.proto \
lib/config.proto \
lib/decoders/decoder.proto \
lib/imagereader/img.proto \
buildlibrary libbackend.a \
-I$OBJDIR/proto \
lib/imagereader/diskcopyimagereader.cc \
lib/imagereader/imagereader.cc \
lib/imagereader/imgimagereader.cc \
@@ -260,6 +266,7 @@ buildlibrary libbackend.a \
lib/csvreader.cc \
buildlibrary libfrontend.a \
-I$OBJDIR/proto \
src/fe-analysedriveresponse.cc \
src/fe-analyselayout.cc \
src/fe-cwftoflux.cc \
@@ -305,6 +312,7 @@ buildlibrary libfrontend.a \
buildprogram fluxengine \
libfrontend.a \
libbackend.a \
libproto.a \
libfmt.a \
libagg.a \
@@ -338,6 +346,7 @@ runtest fmmfm-test tests/fmmfm.cc
runtest greaseweazle-test tests/greaseweazle.cc
runtest kryoflux-test tests/kryoflux.cc
runtest ldbs-test tests/ldbs.cc
runtest proto-test -I$OBJDIR/proto tests/proto.cc
# vim: sw=4 ts=4 et

18
tests/proto.cc Normal file
View File

@@ -0,0 +1,18 @@
#include "globals.h"
#include "bytes.h"
#include "lib/config.pb.h"
#include <assert.h>
static void test_proto(void)
{
Config config;
config.set_thing("fnord");
}
int main(int argc, const char* argv[])
{
test_proto();
return 0;
}