NAME

    Device::Chip::NoritakeGU_D - chip driver for Noritake GU-D display
    modules

SYNOPSIS

       use Device::Chip::NoritakeGU_D;
       use Future::AsyncAwait;
    
       my $chip = Device::Chip::NoritakeGU_D->new( interface => "UART" );
       await $chip->mount( Device::Chip::Adapter::...->new );
    
       await $chip->text( "Hello, world!" );

DESCRIPTION

    This Device::Chip subclass provides communication to a display module
    in the GU-D family by Noritake.

    The reader is presumed to be familiar with the general operation of
    this chip; the documentation here will not attempt to explain or define
    chip-specific concepts or features, only the use of this module to
    access them.

CONSTRUCTOR

 new

       $chip = Device::Chip::NoritakeGU_D->new(
          interface => $iface,
          ...
       )

    Constructs a new driver instance for the given interface type. The type
    must be one of UART, I2C or SPI.

METHODS

    The following methods documented in an await expression return Future
    instances.

 text

       await $chip->text( $str );

    Draw text at the cursor position.

 cursor_left

 cursor_right

 cursor_home

       await $chip->cursor_left;
       await $chip->cursor_right;
    
       await $chip->cursor_linehome;
    
       await $chip->cursor_home;

    Move the cursor left or right one character position, to the beginning
    of the line, or to the home position (top left corner).

 cursor_goto

       await $chip->cursor_goto( $x, $y );

    Moves the cursor to the $x'th column of the $y'th line (zero-indexed).

 linefeed

       await $chip->linefeed;

    Move the cursor down to the next line.

 clear

       $chip->clear

    Clear the display.

 select_window

       await $chip->select_window( $win );

    Select the main window (when $win is 0), or one of the four numbered
    sub-windows.

 initialise

       $chip->initialise

    Reset all settings to their default values.

 set_cursor_visible

       await $chip->set_cursor_visible( $bool );

    Set whether the cursor is visible.

 set_brightness

       await $chip->set_brightness( $val );

    Set the display brightness, from 1 to 8.

 set_reverse

       await $chip->set_reverse( $bool );

    Sets whether subsequent text will be rendered in "reverse video" (clear
    pixels on a set background) effect.

 set_write_mixture_display_mode

       await $chip->set_write_mixture_display_mode( $mode );

    Set the combining mode for newly-added display content. $mode must be
    one of

       set or and xor

 set_font_size

       await $chip->set_font_size( $size );

    Set the font size. $size must be one of

       5x7 8x16

 set_font_width

       await $chip->set_font_width( $width );

    Set the font width. $width must be one of

       fixed fixed2 prop prop2

 set_font_magnification

       await $chip->set_font_magnification( $xscale, $yscale );

    Set the font scaling factor. $xscale must be between 1 to 4, and
    $yscale must be 1 or 2.

 realtime_image_display_columns

       await $chip->realtime_image_display_columns( @columns );

    Sends a bitmapped image to the display, at the cursor position. The
    cursor is not moved.

    @columns should be a list of strings of equal length, containing bytes
    of pixel data to represent each vertical column of the image content.

 set_gpio_direction

       await $chip->set_gpio_direction( $dir );

    Configure the GPIO pins for input or output. $dir is bitmask of four
    bits. Low bits correspond to input, high bits to output.

 set_gpio_output

       await $chip->set_gpio_output( $value );

    Write the value to the GPIO pins.

 read_gpio

       $value = await $chip->read_gpio;

    Returns the current state of the GPIO pins.

 read_touchswitches

       $switches = await $chip->read_touchswitches;

    Reads the status of the panel touch switches. Returns a hash reference
    whose keys are the names of the touch areas (SW1, SW2, ...) and values
    are booleans indicating whether that area currently detects a touch.

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>

