|  | // 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; | 
|  |  | 
|  | const uint32 MAX_BUFFER_SIZE = 4096; | 
|  |  | 
|  | /// 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 = 1; | 
|  | /// 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 = 2; | 
|  | }; | 
|  |  | 
|  | [ForDeprecatedCBindings] | 
|  | 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. | 
|  | [ForDeprecatedCBindings] | 
|  | 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>:MAX_BUFFER_SIZE screen_buffer) -> (zx.status s); | 
|  | }; |