syntax = "proto3";

package blueberry.facade;

import "google/protobuf/empty.proto";
import "blueberry/facade/common.proto";

service RootFacade {
  rpc StartStack(StartStackRequest) returns (StartStackResponse) {}
  rpc StopStack(StopStackRequest) returns (StopStackResponse) {}
}

enum BluetoothModule {
  HAL = 0;
  HCI = 1;
  HCI_INTERFACES = 2;
  L2CAP = 3;
  SECURITY = 4;
  SHIM = 5;
}

message StartStackRequest {
  BluetoothModule module_under_test = 1;
}

message StartStackResponse {}

message StopStackRequest {}

message StopStackResponse {}

service ReadOnlyProperty {
  rpc ReadLocalAddress(google.protobuf.Empty) returns (blueberry.facade.BluetoothAddress) {}
}
