| // Copyright 2019 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=16) |
| library fuchsia.developer.remotecontrol; |
| |
| using fuchsia.component as component; |
| using fuchsia.diagnostics as diagnostics; |
| using fuchsia.io as io; |
| using fuchsia.sys2 as sys2; |
| using zx; |
| |
| const MAX_NUM_MATCHES uint16 = 250; |
| const MAX_CONNECT_MATCHES uint16 = 5; |
| |
| type TunnelError = flexible enum { |
| // Couldn't connect to the address to forward. |
| CONNECT_FAILED = 1; |
| // Something was wrong with the socket which was being tunneled to. |
| SOCKET_FAILED = 2; |
| // Something was wrong with the ForwardCallback which was passed. |
| CALLBACK_ERROR = 3; |
| }; |
| |
| // Strict methods in this protocol are due to them predating the introduction of |
| // API levels and being hard to migrate. |
| @discoverable |
| open protocol RemoteControl { |
| /// Returns the input. |
| strict EchoString(struct { |
| value string:255; |
| }) -> (struct { |
| response string:255; |
| }); |
| |
| /// Writes a string to the syslog on the device. |
| strict LogMessage(struct { |
| tag string:MAX; |
| message string:MAX; |
| severity diagnostics.Severity; |
| }) -> (); |
| |
| flexible IdentifyHost() -> (struct { |
| response IdentifyHostResponse; |
| }) error IdentifyHostError; |
| |
| // Connects a channel to a service, given a moniker and a channel iff the |
| // component identified by the given moniker exposes a capability of the |
| // requested name. |
| flexible OpenCapability(resource struct { |
| moniker string:component.MAX_MONIKER_LENGTH; |
| capability_set sys2.OpenDirType; |
| capability_name component.name; |
| server_channel zx.Handle:CHANNEL; |
| flags io.OpenFlags; |
| }) -> () error ConnectCapabilityError; |
| |
| // Gets the current monotonic time in nanoseconds. |
| strict GetTime() -> (struct { |
| time int64; |
| }); |
| }; |