| // Copyright 2018 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. |
| |
| library fidl.test.spaceship; |
| |
| using zx; |
| |
| // Having a service should not break C bindings. |
| service Galaxy { |
| AstrometricsListener astrometrics_listener; |
| SpaceShip ship1; |
| UssEnterprise ship2; |
| }; |
| |
| // StarData is 16 bytes, all inline. |
| struct StarData { |
| array<uint8>:16 data; |
| }; |
| |
| // PlanetData is 4 bytes, all inline. |
| struct PlanetData { |
| array<uint8>:4 data; |
| }; |
| |
| [ForDeprecatedCBindings] |
| protocol AstrometricsListener { |
| OnNova(); |
| }; |
| |
| enum Alert { |
| GREEN = 1; |
| YELLOW = 2; |
| RED = 3; |
| }; |
| |
| bits Shields : uint8 { |
| PORT = 1; |
| STARBOARD = 2; |
| FORE = 4; |
| AFT = 8; |
| }; |
| |
| [ForDeprecatedCBindings] |
| struct FuelLevel { |
| uint32 reaction_mass; |
| }; |
| |
| struct ZxTypes { |
| zx.status a; |
| zx.time b; |
| zx.duration c; |
| zx.koid d; |
| zx.vaddr e; |
| zx.paddr f; |
| zx.paddr32 g; |
| zx.off h; |
| }; |
| |
| const uint32 MaxStarsAdjustHeading = 64; |
| const uint32 MaxStarsScanForLifeforms = 64; |
| |
| [ForDeprecatedCBindings] |
| protocol SpaceShip { |
| AdjustHeading(vector<uint32>:MaxStarsAdjustHeading stars) -> (int8 result); |
| ScanForLifeforms() -> (vector<uint32>:MaxStarsScanForLifeforms lifesigns); |
| SetAstrometricsListener(AstrometricsListener listener); |
| SetDefenseCondition(Alert alert); |
| GetFuelRemaining(zx.handle:EVENTPAIR? cancel) -> (zx.status status, FuelLevel? level); |
| AddFuelTank(FuelLevel? level) -> (uint32 consumed); |
| ScanForTensorLifeforms() -> (array<array<array<uint32>:3>:5>:8 lifesigns); |
| ActivateShields(Shields shields); |
| }; |
| |
| // Captain Kirk can do many things, possibly all at once. |
| table CaptainKirkWhereabouts { |
| 1: bool is_exploring_new_worlds; |
| 2: bool is_exploring_new_civilizations; |
| 3: bool is_boldly_going_where_no_man_has_gone_before; |
| }; |
| |
| /// The USS Enterprise is far from simple. |
| protocol UssEnterprise { |
| WhereIsCaptainKirk() -> (CaptainKirkWhereabouts whereabouts); |
| }; |