🔹 RPCs
rpc UserLimit (UserLimitRequest) returns (UserLimitResponse) {};
rpc UserLimitBatch(UserLimitBatchRequest) returns (UserLimitBatchResponse) {};
🔹 Request
message UserLimitRequest {
RSI.RapidServer.RequestHeader header = 1;
int32 index = 2;
optional UserLimitConfig config = 3;
optional UserLimitAction action = 4;
}
🔹 Response
message UserLimitResponse {
RSI.RapidServer.ResponseHeader header = 1;
int32 index = 2;
optional UserLimitConfig config = 3;
optional UserLimitAction action = 4;
optional UserLimitInfo info = 5;
optional UserLimitStatus status = 6;
}
🔹 Batch Request and Response
message UserLimitBatchRequest {
RSI.RapidServer.RequestHeader header = 1;
repeated UserLimitRequest requests = 2;
}
message UserLimitBatchResponse {
RSI.RapidServer.ResponseHeader header = 1;
repeated UserLimitResponse responses = 2;
}
🔹 Config
message UserLimitConfig {
optional UserLimitCondition condition_0 = 2;
optional UserLimitCondition condition_1 = 3;
optional UserLimitOutput output = 4;
optional int32 action_axis = 6;
optional double duration = 7;
optional bool is_single_shot = 8;
repeated UserLimitInterruptUserData user_data = 9;
message UserLimitCondition {
uint64 address = 3;
optional uint32 mask = 4;
optional int32 integer_limit_value = 5;
optional double double_limit_value = 6;
}
message UInt32Masks {
uint32 and_mask = 1;
uint32 or_mask = 2;
}
message UInt64Masks {
uint64 and_mask = 1;
uint64 or_mask = 2;
}
message UserLimitOutput {
bool enabled = 2;
uint64 address = 4;
oneof output {
UInt32Masks uint32_masks = 6;
int32 int32_value = 7;
UInt64Masks uint64_masks = 8;
double double_value = 9;
uint64 input_address = 10;
}
}
message UserLimitInterruptUserData {
uint32 index = 1;
optional uint64 address = 2;
}
}
🔹 Action
message UserLimitAction {
optional Reset reset = 1;
optional Enable enable = 2;
optional Disable disable = 3;
message Reset {};
message Enable {};
message Disable {};
}
🔹 Info
🔹 Status
message UserLimitStatus {
int32 index = 1;
bool enabled = 2;
bool state = 3;
}