| // Copyright 2023 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @available(added=HEAD) |
| library fuchsia.bluetooth.pandora; |
| |
| type ServiceError = flexible enum { |
| /// The requested component was already running. |
| ALREADY_RUNNING = 1; |
| |
| /// The provided IP address could not be parsed. |
| INVALID_IP = 2; |
| |
| /// A connection could not be established to the provided address. |
| CONNECTION_FAILED = 3; |
| |
| /// The request failed internally. |
| FAILED = 4; |
| }; |
| |
| /// Controls the lifecycle of a gRPC server that implements the [Pandora Bluetooth testing |
| /// interfaces](https://github.com/google/bt-test-interfaces). |
| @discoverable |
| open protocol GrpcServerController { |
| /// Start Pandora interface gRPC server. |
| /// |
| /// + request `port` is the Fuchsia port on which the gRPC server will listen. |
| /// |
| /// * error Returns `ALREADY_RUNNING` if a gRPC server is already running. |
| /// * error Returns `FAILED` if there was an internal error starting the server. |
| flexible Start(table { |
| 1: port uint16; |
| }) -> () error ServiceError; |
| |
| /// Stop gRPC server if running. |
| flexible Stop() -> (); |
| }; |
| |
| /// Controls instances of bt-rootcanal, a tool that proxies HCI traffic between Fuchsia Bluetooth |
| /// and a [Rootcanal](https://github.com/google/rootcanal) server. |
| @discoverable |
| open protocol RootcanalClientController { |
| /// Start bt-rootcanal if it is not already running. |
| /// |
| /// + request `ip` is the IP address of the host running the Rootcanal server. |
| /// + request `port` is the port on the host on which the Rootcanal server is listening. |
| /// |
| /// * error Returns `ALREADY_RUNNING` if bt-rootcanal is already running. |
| /// * error Returns `INVALID_IP` if the IP address could not be parsed. |
| /// * error Returns `CONNECTION_FAILED` if a connection to the Rootcanal server could not be |
| /// established. |
| /// * error Returns `FAILED` if there was an internal error starting bt-rootcanal. |
| flexible Start(table { |
| 1: ip string:32; |
| 2: port uint16; |
| }) -> () error ServiceError; |
| |
| /// Stop bt-rootcanal if running. |
| flexible Stop() -> (); |
| }; |