sinusoidal 0.8.0

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

package sinusoidal.control_api;

// App requests
message Request {
  oneof request {
    RequestRegister register = 1;
  }
}

// Framework responses
message Response {
  oneof response {
    ResponseError error       = 1;
    ResponseRegister register = 2;
  }
}

// Framework events
message Event {
  oneof event {
    EventShutdown shutdown = 1;
    EventNewSettings new_settings = 2;
  }
}

// -- Server Errors -------------------------------------------------------

message ResponseError {
  ErrorType error = 1;
  string reason   = 2;
}

enum ErrorType {
  GenericError  = 0;
  StreamIdError = 1;
  RegisterError = 2;
}


// -- Register ------------------------------------------------------------

// Register with the name of the app. Should be unique!
message RequestRegister {
}

message ResponseRegister {
  string name = 1;
  string input_streams = 2;
  string settings = 3;
}


// -- EventShutdown -------------------------------------------------------

message EventShutdown {
}

// -- EventNewSettings ----------------------------------------------------

message EventNewSettings {
  string new_settings = 1;
}

// -- Common Types --------------------------------------------------------

message SvStreamId {
  uint32 appid   = 1;
  string svid    = 2;
  bool simulated = 3;
};

message AppStreamId {
  string app_name   = 1;
  string stream_name = 2;
};

message SysStreamId {
  SysStream stream = 1;
};

enum SysStream {
  Time = 0;
};

message GooseStreamId {
  string go_id = 1;
}

message StreamId {
  oneof stream_id {
    SvStreamId sv_stream   = 1;
    AppStreamId app_stream = 2;
    SysStreamId sys_stream = 3;
    GooseStreamId goose_stream = 4;
  };
};

// Qualified trigger id
// Currently only to generate the Erlang type `trigger_id`. Not used in messages.
message TriggerId {
  string trigger_id = 1;
};