blob: e0be2651c572b1df8afbb22c72699b58bbfca84a [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.dotmatrixdisplay;
using zx;
/// This describes the format for each pixel in the screen.
enum PixelFormat : uint32 {
/// Pixels have on or off value (0 or 1). There is one bit per pixel.
MONOCHROME = 0;
};
/// Describes the layout of the pixels within the screen vector.
enum ScreenLayout : uint32 {
/// The vector is laid out with columns top-to-bottom. The columns
/// are organized into rows that go left-to-right.
COLUMN_TB_ROW_LR = 0;
/// The vector is laid out with rows left-to-right. The rows
/// are organized into columns that go top-to-bottom.
ROW_LR_COLUMN_TB = 1;
};
struct DotmatrixDisplayConfig {
/// The screen's width in pixels.
uint32 width;
/// The screen's height in pixels.
uint32 height;
PixelFormat format;
ScreenLayout layout;
};
/// Protocol for Dotmatrix display drivers. A Dotmatrix display is any
/// externally connected display that is written to pixel by pixel. These are
/// typically connected to over USB, I2C, or SPI, and they have a small number
/// of pixels. The display could be monochromatic or have RGB values. This
/// protocol is NOT for a display with lots of pixels or extra hardware like an
/// HDMI or DP display.
[Transport = "Banjo", BanjoLayout = "ddk-protocol"]
protocol DotmatrixDisplay {
/// Get the configuration to display the screen.
GetConfig() -> (DotmatrixDisplayConfig config);
/// Set the screen memory. Calling this function will update the display.
SetScreen(vector<uint8> screen_buffer) -> (zx.status s);
};