The RMP Motion Controller APIs

RapidSequencer gRPC API that gives developers the ability to start, compile, and run sequencer scripts. The RapidSequencer runs inside of a RapidServer.

syntax = "proto3";
package RSI.RapidSequencer;
import "rapidgrpc.proto";
service RapidSequencerService {
// Engine
rpc EngineStart(EngineStartRequest) returns (EngineStartResponse) {}
rpc EngineStop(EngineStopRequest) returns (EngineStopResponse) {}
rpc EngineStatusGet(EngineStatusRequest) returns (EngineStatusResponse) {}
rpc EngineTaskListGet(EngineTaskListRequest) returns (EngineTaskListResponse) {}
// Name
rpc NameGet(NameGetRequest) returns (NameGetResponse) {}
rpc NameSet(NameSetRequest) returns (NameSetResponse) {}
// Function List
rpc FunctionListGet(FunctionListGetRequest) returns (stream FunctionListGetResponse) {}
// Global Variables
rpc GlobalVariableListGet(GlobalVariableListGetRequest) returns (GlobalVariableListGetResponse) {}
rpc GlobalVariableGet(GlobalVariableGetRequest) returns (GlobalVariableGetResponse) {}
rpc GlobalVariableSet(GlobalVariableSetRequest) returns (GlobalVariableSetResponse) {}
rpc GlobalVariablesClear(GlobalVariablesClearRequest) returns (GlobalVariablesClearResponse) {}
// Compilation
rpc Compile(CompileRequest) returns (CompileResponse) {}
rpc Run(RunRequest) returns (RunResponse) {}
// Run command line
rpc CommandLine(CommandLineRequest) returns (CommandLineResponse) {}
// Task Control
rpc TaskStop(TaskID) returns (TaskStopResponse) {}
rpc TaskPause(TaskID) returns (TaskPauseResponse) {}
rpc TaskResume(TaskID) returns (TaskResumeResponse) {}
// Task Information
rpc TaskStatusGet(TaskID) returns (TaskStatusGetResponse) {}
rpc TaskOutputGet(TaskID) returns (TaskOutputGetResponse) {}
// Task Cleanup
rpc TaskRemove(TaskID) returns (TaskRemoveResponse) {}
// Debugging
rpc DebugCommand(DebugRequest) returns (DebugResponse) {}
rpc BreakpointsGet(BreakpointsGetRequest) returns (BreakpointsGetResponse) {}
}
message ShutdownRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message ShutdownResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message EngineStartRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string rmp_node = 2;
string rmp_path = 3;
}
message EngineStartResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message EngineStopRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message EngineStopResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message EngineStatusRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
enum SequencerType {
WINDOWS_UNSPECIFIED = 0;
REAL_TIME = 1;
}
message EngineStatusResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
bool running = 2;
SequencerType type = 3;
uint64 task_count = 4;
}
message EngineTaskListRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message EngineTaskListResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated TaskInfo tasks = 2;
}
message NameGetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message NameGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
string name = 2;
}
message NameSetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string name = 2;
}
message NameSetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message FunctionParameter {
string name = 1;
string type = 2;
}
message PluginInfo {
string name = 1;
string path = 2;
}
message FunctionInfo {
string name = 1;
string description = 2;
string returns = 3;
PluginInfo plugin_info = 4;
repeated FunctionParameter parameters = 5;
}
message FunctionListGetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message FunctionListGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
FunctionInfo function = 2;
}
message GlobalVariableData {
// The host address of the global variable. This address is only valid for
// use with RapidSequencer / RapidServer applications.
uint64 host_address = 1;
uint64 size = 2;
string name = 3;
oneof value {
bool bool = 4;
uint32 char = 5;
int32 int16 = 6;
uint32 uint16 = 7;
int32 int32 = 8;
uint32 uint32 = 9;
int64 int64 = 10;
uint64 uint64 = 11;
double double = 12;
}
uint32 firmware_address = 13;
uint32 index = 14;
}
message GlobalVariableListGetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
bool skip_values = 2;
}
message GlobalVariableListGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
uint64 startaddr = 2;
uint64 size = 3;
repeated GlobalVariableData data = 4;
}
enum VariableAccessStatus {
SUCCESS_UNSPECIFIED = 0;
INVALID_NAME = 1;
INVALID_VARIABLE_TYPE = 2;
}
message GlobalVariableGetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string name = 2;
}
message GlobalVariableGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
VariableAccessStatus result = 2;
oneof value {
bool bool = 3;
uint32 char = 4;
int32 int16 = 5;
uint32 uint16 = 6;
int32 int32 = 7;
uint32 uint32 = 8;
int64 int64 = 9;
uint64 uint64 = 10;
double double = 11;
}
// The host address of the global variable. This address is only valid for
// use with RapidSequencer / RapidServer applications.
uint64 host_address = 12;
uint32 firmware_address = 13;
uint32 index = 14;
}
message GlobalVariableSetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string name = 2;
oneof value {
bool bool = 3;
uint32 char = 4;
int32 int16 = 5;
uint32 uint16 = 6;
int32 int32 = 7;
uint32 uint32 = 8;
int64 int64 = 9;
uint64 uint64 = 10;
double double = 11;
}
}
message GlobalVariableSetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
VariableAccessStatus result = 2;
}
message GlobalVariablesClearRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
}
message GlobalVariablesClearResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message CompileRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string path = 2;
string entry_point = 3;
string exception_handler = 4;
}
message CompilerWarning {
string compiler_text = 1;
uint64 compiler_line = 2;
uint64 compiler_start = 3;
uint64 compiler_end = 4;
string compiler_message = 5;
string source_function = 6;
uint64 source_line = 7;
}
message CompileError {
string compiler_text = 1;
uint64 compiler_line = 2;
uint64 compiler_start = 3;
uint64 compiler_end = 4;
string compiler_message = 5;
string source_function = 6;
uint64 source_line = 7;
}
message CompileSuccess {
string info = 1; // path of either the source file, or the error
string bin_path = 2; // path of the compiled and saved program
string entry = 3; // entry point
string exception_handler = 4; // exception handler
}
message CompileResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
oneof result {
CompileSuccess compile_success = 2;
CompileError compile_failure = 3;
string general_failure = 4;
}
repeated CompilerWarning warnings = 5;
}
message RunRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
CompileSuccess compiled = 2;
bool block = 3; // do NOT set this true if you are passing breakpoints and dont have another thread to manage debug flow
repeated uint64 breakpoints = 4;
}
message RunResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
bool success = 2;
TaskID task = 3;
CompileSuccess compiled = 4;
}
message TaskID {
string id = 1;
}
message TaskInfo {
TaskID id = 1;
CompileSuccess info = 2;
}
message CommandLineRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
string command = 2;
}
message CommandLineResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated string result = 2;
}
message TaskStopResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
TaskID task = 2;
}
message TaskPauseResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
message TaskResumeResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
}
enum TaskState {
UNINITIALIZED_UNSPECIFIED = 0;
RUNNING = 1;
IDLE = 2;
PAUSED = 3;
}
message TaskStatusGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
TaskState state = 2;
uint64 line_number = 3;
uint64 counter = 4;
}
message TaskOutputGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated string result = 2;
}
message TaskRemoveResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
bool result = 2;
}
enum DebugAction {
RESUME_UNSPECIFIED = 0;
PAUSE = 1;
STEP = 2;
STEP_IN = 3;
STEP_OUT = 4;
BREAKPOINT_SET = 5;
BREAKPOINT_UNSET = 6;
}
message DebugRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
TaskID task = 2;
DebugAction action = 3;
oneof optional_line_number {
int32 line_number = 4;
}
}
message DebugResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
bool success = 2;
}
message BreakpointsGetRequest {
// Common request header.
RSI.RapidServer.RequestHeader header = 1;
TaskID task = 2;
}
message BreakpointsGetResponse {
// Common response header. Always check the response header for errors.
RSI.RapidServer.ResponseHeader header = 1;
repeated uint64 breakpoints = 2;
}