| // 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=7) |
| library fuchsia.hwinfo; |
| using fuchsia.intl; |
| |
| const MAX_VALUE_SIZE uint8 = 255; |
| |
| type Architecture = flexible enum { |
| X64 = 1; |
| ARM64 = 2; |
| }; |
| |
| /// Collection of properties that is unique per device. |
| type DeviceInfo = table { |
| 1: serial_number string:MAX_VALUE_SIZE; |
| 2: is_retail_demo bool; |
| 3: retail_sku string:MAX_VALUE_SIZE; |
| }; |
| |
| /// Collection of properties that is shared with other devices within the same |
| /// product line. |
| type ProductInfo = table { |
| 1: sku string; |
| 2: language string; |
| 3: regulatory_domain fuchsia.intl.RegulatoryDomain; |
| 4: locale_list vector<fuchsia.intl.LocaleId>; |
| 5: name string; |
| 6: model string; |
| 7: manufacturer string; |
| 8: build_date string; |
| 9: build_name string:MAX_VALUE_SIZE; |
| 10: colorway string:MAX_VALUE_SIZE; |
| 11: display string:MAX_VALUE_SIZE; |
| 12: memory string:MAX_VALUE_SIZE; |
| 13: nand_storage string:MAX_VALUE_SIZE; |
| 14: emmc_storage string:MAX_VALUE_SIZE; |
| 15: microphone string:MAX_VALUE_SIZE; |
| 16: audio_amplifier string:MAX_VALUE_SIZE; |
| }; |
| |
| /// Collection of properties that are common among a set of devices based on |
| /// hardware type |
| type BoardInfo = table { |
| 1: name string; |
| 2: revision string; |
| 3: cpu_architecture Architecture; |
| }; |
| |
| /// Device provides an interface to retrieve device-specific properties. |
| @discoverable |
| protocol Device { |
| GetInfo() -> (struct { |
| info DeviceInfo; |
| }); |
| }; |
| |
| /// Product provides an interface to retrieve product-specific properties. |
| @discoverable |
| protocol Product { |
| GetInfo() -> (struct { |
| info ProductInfo; |
| }); |
| }; |
| |
| /// Board provides an interface to retrieve hardware-specific information. |
| @discoverable |
| protocol Board { |
| GetInfo() -> (struct { |
| info BoardInfo; |
| }); |
| }; |