blob: a1c0d0d1512bc3bca44c3457e5339004a718d7ed [file] [log] [blame]
// Copyright 2022 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.mailbox;
using zx;
const MBOX_FIFO_SIZE uint32 = 128; // bytes
type MboxTx = struct {
cmd uint32;
tx_buffer vector<uint8>:MBOX_FIFO_SIZE;
};
type MboxRx = struct {
rx_buffer vector<uint8>:MBOX_FIFO_SIZE;
};
@discoverable
closed protocol Device {
// |channel| : vendor specific identifier used to communicate with different hardware blocks.
strict SendCommand(struct {
channel uint8;
mdata MboxTx;
}) -> () error zx.Status;
// |channel| : vendor specific identifier used to communicate with different hardware blocks.
// |rx_len | : rx_len is equal to the number of bytes of the transmitted data MboxTx.tx_buffer.
strict ReceiveData(struct {
channel uint8;
rx_len uint8;
}) -> (struct {
mdata MboxRx;
}) error zx.Status;
};
service Service {
device client_end:Device;
};