Create multiproject build, add python grpc build support

This commit is contained in:
Piv
2020-04-17 20:47:37 +09:30
parent f42778057f
commit 3446bcaa53
16 changed files with 100 additions and 34 deletions

2
protobuf/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
build

48
protobuf/build.gradle Normal file
View File

@@ -0,0 +1,48 @@
plugins {
id 'java'
id 'com.google.protobuf'
id 'idea'
}
configurations {
// For grpc python codegen.
python {
canBeResolved = false
canBeConsumed = true
}
}
protobuf {
protoc { artifact = 'com.google.protobuf:protoc:3.11.0' }
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.28.1' // CURRENT_GRPC_VERSION
}
grpc_python { path = "$projectDir/grpc_python_plugin" }
}
generateProtoTasks {
all().each { task ->
task.builtins {
java { option 'lite' }
python {}
}
task.plugins {
grpc { // Options added to --grpc_out
option 'lite'
}
grpc_python {
outputSubDir = 'python'
}
}
}
}
}
dependencies {
implementation 'io.grpc:grpc-okhttp:1.28.1' // CURRENT_GRPC_VERSION
implementation 'io.grpc:grpc-protobuf-lite:1.28.1' // CURRENT_GRPC_VERSION
implementation 'io.grpc:grpc-stub:1.28.1' // CURRENT_GRPC_VERSION
implementation 'javax.annotation:javax.annotation-api:1.2'
}

BIN
protobuf/grpc_python_plugin Executable file

Binary file not shown.

View File

@@ -0,0 +1,34 @@
syntax = "proto3";
option java_multiple_files = true;
option java_package = "org.vato.carcontroller";
option java_outer_classname = "SlamControllerProto";
import "empty.proto";
message SlamDetails {
int32 map_size_pixels = 1;
int32 map_size_meters = 2;
int32 port = 3;
}
message SlamRow{
repeated int32 points = 1;
}
message SlamLocation{
float x = 1;
float y = 2;
float theta = 3;
}
message SlamScan{
bytes map = 1;
SlamLocation location = 2;
}
service SlamControl {
rpc start_map_streaming(SlamDetails) returns (Empty) {}
rpc stop_streaming(Empty) returns (Empty) {}
}

View File

@@ -0,0 +1,9 @@
syntax = "proto3";
option java_multiple_files = true;
option java_package = "org.vato.carcontroller";
option java_outer_classname = "EmptyProto";
message Empty{
}

View File

@@ -0,0 +1,31 @@
syntax = "proto3";
package persontracking;
option java_multiple_files = true;
option java_package = "org.vato.carcontroller";
option java_outer_classname = "PersonTrackingProto";
import "empty.proto";
message Int32Value{
int32 value = 1;
}
message Point{
double angle = 1;
int32 distance = 2;
int32 group_number = 3;
}
message PointScan{
repeated Point points = 1;
}
service PersonTracking{
rpc set_tracking_group(Int32Value) returns (Empty) {}
rpc stop_tracking(Empty) returns (Empty) {}
rpc start_tracking(Int32Value) returns (Empty) {}
}

View File

@@ -0,0 +1,29 @@
syntax = "proto3";
package MotorControl;
option java_multiple_files = true;
option java_package = "org.vato.carcontroller";
option java_outer_classname = "MotorServiceProto";
message ThrottleRequest{
float throttle = 1;
}
message ThrottleResponse{
bool throttleSet = 1;
}
message SteeringRequest{
float steering = 1;
}
message SteeringResponse{
bool steeringSet = 1;
}
service CarControl{
rpc SetThrottle(ThrottleRequest) returns (ThrottleResponse){}
rpc SetSteering(SteeringRequest) returns (SteeringResponse){}
}