syntax = "proto3";

package autd3;

import "utils.proto";

message EmitIntensity {
  uint32 value = 1;
}

message Phase {
  uint32 value = 1;
}

message SamplingConfigFreq { uint32 value = 1; }
message SamplingConfigFreqNearest { float value = 1; }
message SamplingConfigDivision { uint32 value = 1; }
message SamplingConfigDivisionRaw { uint32 value = 1; }
message SamplingConfig {
  oneof config {
    SamplingConfigFreq freq = 1;
    SamplingConfigFreqNearest freq_nearest = 2;
    SamplingConfigDivision division = 3;
    SamplingConfigDivisionRaw division_raw = 4;
  }
}

message LoopBehavior {
  uint32 rep = 1;
}

enum Segment {
  S0 = 0;
  S1 = 1;
}

enum TransitionMode {
  SyncIdx = 0;
  SysTime = 1;
  GPIO = 2;
  Ext = 3;
}

message ControlPoint {
    Vector3 pos = 1;
    Phase offset = 2;
}

message ControlPoints {
    repeated ControlPoint points = 1;
    EmitIntensity intensity = 2;
}
