The code requires cc_generic_services = true in the service proto files. nng_msg payload is: request format : size:u32 + serialized MethodCall response format: size:u32 + serialized MethodCallResponse Dispatch is done using descriptors, message prototypes and protobuf.Any. Error handling is missing apart from error logging.
78 lines
1.2 KiB
Protocol Buffer
78 lines
1.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "google/rpc/status.proto";
|
|
|
|
option cc_generic_services = true;
|
|
|
|
package mesytec.mnode.proto.vme;
|
|
|
|
enum DataWidth
|
|
{
|
|
D16 = 0;
|
|
D32 = 1;
|
|
}
|
|
|
|
message AddressModifier
|
|
{
|
|
uint32 value = 1;
|
|
}
|
|
|
|
enum EsstRate
|
|
{
|
|
UNKNOWN = 0;
|
|
RATE_160MB = 1;
|
|
RATE_276MB = 2;
|
|
RATE_320MB = 3;
|
|
}
|
|
|
|
message ReadRequestOptions
|
|
{
|
|
optional bool late_read = 1;
|
|
optional bool fifo_read = 2;
|
|
optional bool swapped_read = 3;
|
|
optional EsstRate esst_rate = 4;
|
|
optional uint32 max_transfers = 5;
|
|
}
|
|
|
|
message ReadRequest
|
|
{
|
|
uint32 address = 1;
|
|
AddressModifier amod = 2;
|
|
DataWidth data_width = 3;
|
|
ReadRequestOptions options = 4;
|
|
}
|
|
|
|
message WriteRequest
|
|
{
|
|
uint32 address = 1;
|
|
uint32 value = 2;
|
|
AddressModifier amod = 3;
|
|
DataWidth data_width = 4;
|
|
}
|
|
|
|
enum ResponseFlags
|
|
{
|
|
NONE = 0;
|
|
TIMEOUT = 1;
|
|
BUS_ERROR = 2;
|
|
SYNTAX_ERROR = 3;
|
|
}
|
|
|
|
message ReadResponse
|
|
{
|
|
repeated uint32 value = 1;
|
|
optional ResponseFlags flags = 2;
|
|
optional google.rpc.Status status = 3;
|
|
}
|
|
|
|
message WriteResponse
|
|
{
|
|
optional ResponseFlags flags = 2;
|
|
optional google.rpc.Status status = 3;
|
|
}
|
|
|
|
service VmeAccess
|
|
{
|
|
rpc Read(ReadRequest) returns (ReadResponse);
|
|
rpc Write(WriteRequest) returns (WriteResponse);
|
|
}
|