| // 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 ddk.protocol.serialimpl; |
| |
| using zx; |
| using ddk.protocol.serial; |
| |
| enum SerialState : uint32 { |
| READABLE = 0x1; |
| WRITABLE = 0x2; |
| }; |
| |
| /// Callback for notification of readable/writeable state changes |
| /// This may be called from an interrupt thread it should just signal another thread |
| /// and return as soon as possible. In particular, it may not be safe to make protocol calls |
| /// from these callbacks. |
| [Layout = "ddk-callback"] |
| protocol SerialNotify { |
| Callback(SerialState state) -> (); |
| }; |
| |
| [Layout = "ddk-protocol"] |
| protocol SerialImpl { |
| GetInfo() -> (zx.status s, ddk.protocol.serial.SerialPortInfo info); |
| /// Configures the given serial port. |
| Config(uint32 baud_rate, uint32 flags) -> (zx.status s); |
| Enable(bool enable) -> (zx.status s); |
| Read() -> (zx.status s, vector<voidptr> buf); |
| Write(vector<voidptr> buf) -> (zx.status s, usize actual); |
| SetNotifyCallback(SerialNotify cb) -> (zx.status s); |
| }; |