syntax = "proto2";

import "lib/common.proto";

message HardwareFluxSourceProto {}

message TestPatternFluxSourceProto {
	optional double interval_us = 1        [default = 4.0, (help) = "interval between pulses"];
	optional double sequence_length_ms = 2 [default = 166.0, (help) = "length of test sequence"];
}

message EraseFluxSourceProto {}

message KryofluxFluxSourceProto {
	optional string directory = 1 [(help) = "path to Kryoflux stream directory"];
}

message ScpFluxSourceProto {
	optional string filename = 1 [default = "flux.scp",
		(help) = ".scp file to read flux from"];
}

message A2rFluxSourceProto {
	optional string filename = 1 [default = "flux.a2r",
		(help) = ".a2r file to read flux from"];
}

message CwfFluxSourceProto {
	optional string filename = 1 [default = "flux.cwf",
		(help) = ".cwf file to read flux from"];
}

message DmkFluxSourceProto {
	optional string directory = 1 [
		(help) = "path to DMK directory"];
}

message Fl2FluxSourceProto {
	optional string filename = 1 [default = "flux.fl2",
		(help) = ".fl2 file to read flux from"];
}

message FlxFluxSourceProto {
	optional string directory = 1 [(help) = "path to FLX stream directory"];
}

// NEXT: 13
message FluxSourceProto {
	optional FluxSourceSinkType type = 9
		[default = FLUXTYPE_NOT_SET, (help) = "flux source type"];

	optional A2rFluxSourceProto a2r = 11;
	optional CwfFluxSourceProto cwf = 7;
	optional DmkFluxSourceProto dmk = 12;
	optional EraseFluxSourceProto erase = 4;
	optional Fl2FluxSourceProto fl2 = 8;
	optional FlxFluxSourceProto flx = 10;
	optional HardwareFluxSourceProto drive = 2;
	optional KryofluxFluxSourceProto kryoflux = 5;
	optional ScpFluxSourceProto scp = 6;
	optional TestPatternFluxSourceProto test_pattern = 3;
}

