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;
}
}