sinusoidal 0.8.0

The official SDK to write rust apps for the Sinusoidal Systems Digital Measurement Platform
Documentation
syntax = "proto3";

package sinusoidal.streaming_api;

message StreamPacket {
  oneof payload {
    Datagram datagram = 1;
    GoosePacket goose = 2;
    PTPEvent ptp = 3;
  }
}

message Datagram {
  int64 timestamp       = 1;    // Nanoseconds
  uint32 sample_count   = 2;
  repeated int64 values = 3;
  uint32 clock_synch    = 4;
  bytes flags           = 5;
  bytes gm_identity     = 6;
}

// PTP events
message PTPEvent {
  int64 systime_offset = 1;
}

// GOOSE packets

message GoosePacket {
  string go_id                = 1;
  GooseStatus status          = 2;
  string gocb_ref             = 3;
  int64 ttl                   = 4;
  string dat_set              = 5;
  uint64 t                    = 6;
  uint32 st_num               = 7;
  uint32 sq_num               = 8;
  bool test                   = 9;
  uint32 conf_rev             = 10;
  bool nds_com                = 11;
  uint32 num_data             = 12;
  repeated GooseData all_data = 13;
}

enum GooseStatus {
  valid = 0;
  in_question= 1;
}

message GooseDataArray {
  repeated GooseData array = 1;
}

message GooseDataStruct {
  repeated GooseData struct = 1;
}

message BoolArray {
  repeated bool bools = 1;
}

enum GooseSpecialReal {
  PosInf = 0;
  NegInf = 1;
  NaN = 2;
  NegZero = 3;
}

message GooseBinaryReal {
  int64 mantissa = 1;
  uint32 base = 2;
  int64 exponent = 3;
}

message GooseReal {
  oneof real {
    GooseSpecialReal special = 1;
    string ascii = 2;
    GooseBinaryReal binary = 3;
  };
}

message BitStr {
  uint32 padding = 1;
  bytes bit_str = 2;
}

message GooseData {
  oneof data {
    GooseDataArray array = 1;
    GooseDataStruct struct = 2;
    bool boolean = 3;
    BitStr bit_str = 4;
    int64 int = 5;
    uint64 uint = 6;
    double dbl = 7;
    GooseReal real = 8;
    bytes binary = 9;
    string str = 10;
    string time_of_day = 11;
    uint64 bcd = 12;
    BoolArray bool_array = 13;
    string obj_id = 14;
    string mss_string = 15;
    uint64 utc_time = 16;
  }
}