blob: 083ea6d24279d0fe3be80e148f658033d0367d00 [file] [log] [blame]
// 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.usb.peripheral.block;
using zx;
// Represents a simulated USB block device whose cache can be controlled.
// This allows for integration testing of USB mass storage devices
// both with and without caches.
[Layout = "Simple"]
protocol Device {
// Enables writeback caching. This requires the device
// to be disconnected at the time of the call. Calling it when the device is connected
// will result in undefined behavior.
// All writes will be buffered until a BLOCK_OP_FLUSH is received.
EnableWritebackCache() -> (zx.status s);
// Disables writeback caching. This requires the device to be disconnected at the time
// of the call. Calling it when the device is connected will result in undefined behavior.
// Disabling this cache will cause any writes to be written immediately to non-volatile storage
// before returning to the caller.
DisableWritebackCache() -> (zx.status s);
// Sets writeback cache reporting behavior. This requires the device
// to be disconnected at the time of the call. Calling it when the device is connected
// will result in undefined behavior.
// If report is set to true, the device will report its cache capability correctly to the
// host. If set to false, the writeback caching capabilities will NOT be reported.
// This can be used to test host drivers to ensure that they respond properly
// when the device does not report its caching capabilities.
SetWritebackCacheReported(bool report) -> (zx.status s);
};