| // 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. |
| library fuchsia.hardware.serial; |
| |
| using zx; |
| |
| /// Description of what type of serial device this is |
| type Class = strict enum : uint8 { |
| GENERIC = 1; |
| /// A Bluetooth host controller |
| BLUETOOTH_HCI = 2; |
| /// An interactive console |
| CONSOLE = 3; |
| /// Kernel debug serial |
| KERNEL_DEBUG = 4; |
| }; |
| |
| /// Number of bits per character |
| type CharacterWidth = strict enum : uint8 { |
| BITS_5 = 1; |
| BITS_6 = 2; |
| BITS_7 = 3; |
| BITS_8 = 4; |
| }; |
| |
| /// Number of stop bits |
| type StopWidth = strict enum : uint8 { |
| BITS_1 = 1; |
| BITS_2 = 2; |
| }; |
| |
| /// Which parity computation to use, if any. |
| type Parity = strict enum : uint8 { |
| NONE = 1; |
| EVEN = 2; |
| ODD = 3; |
| }; |
| |
| /// What flow control mechanism to use |
| type FlowControl = strict enum : uint8 { |
| NONE = 1; |
| /// Clear To Send/Request To Send |
| CTS_RTS = 2; |
| }; |
| |
| type Config = struct { |
| character_width CharacterWidth; |
| stop_width StopWidth; |
| parity Parity; |
| control_flow FlowControl; |
| baud_rate uint32; |
| }; |
| |
| type SerialPortInfo = struct { |
| serial_class Class; |
| /// Vendor and product ID of hardware attached to this serial port, |
| /// or zero if not applicable. |
| serial_vid uint32; |
| serial_pid uint32; |
| }; |
| |
| /// A serial device. |
| closed protocol Device { |
| /// Lookup what type of serial device this is. |
| strict GetClass() -> (struct { |
| device_class Class; |
| }); |
| |
| /// Set the configuration of this serial device. |
| strict SetConfig(struct { |
| config Config; |
| }) -> (struct { |
| s zx.Status; |
| }); |
| |
| /// Reads data from the serial port. |
| strict Read() -> (struct { |
| data vector<uint8>:MAX; |
| }) error zx.Status; |
| |
| /// Writes data to the serial port. |
| strict Write(struct { |
| data vector<uint8>:MAX; |
| }) -> () error zx.Status; |
| }; |
| |
| @discoverable |
| closed protocol DeviceProxy { |
| strict GetChannel(resource struct { |
| req server_end:Device; |
| }); |
| }; |