150 lines
4.7 KiB
C
150 lines
4.7 KiB
C
/*
|
|
* Copyright (c) 2020 Hubert Miś
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief FT8XX coprocessor functions
|
|
*/
|
|
|
|
#ifndef ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_
|
|
#define ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief FT8xx co-processor engine functions
|
|
* @defgroup ft8xx_copro FT8xx co-processor
|
|
* @ingroup ft8xx_interface
|
|
* @{
|
|
*/
|
|
|
|
/** Co-processor widget is drawn in 3D effect */
|
|
#define FT8XX_OPT_3D 0
|
|
/** Co-processor option to decode the JPEG image to RGB565 format */
|
|
#define FT8XX_OPT_RGB565 0
|
|
/** Co-processor option to decode the JPEG image to L8 format, i.e., monochrome */
|
|
#define FT8XX_OPT_MONO 1
|
|
/** No display list commands generated for bitmap decoded from JPEG image */
|
|
#define FT8XX_OPT_NODL 2
|
|
/** Co-processor widget is drawn without 3D effect */
|
|
#define FT8XX_OPT_FLAT 256
|
|
/** The number is treated as 32 bit signed integer */
|
|
#define FT8XX_OPT_SIGNED 256
|
|
/** Co-processor widget centers horizontally */
|
|
#define FT8XX_OPT_CENTERX 512
|
|
/** Co-processor widget centers vertically */
|
|
#define FT8XX_OPT_CENTERY 1024
|
|
/** Co-processor widget centers horizontally and vertically */
|
|
#define FT8XX_OPT_CENTER 1536
|
|
/** The label on the Coprocessor widget is right justified */
|
|
#define FT8XX_OPT_RIGHTX 2048
|
|
/** Co-processor widget has no background drawn */
|
|
#define FT8XX_OPT_NOBACK 4096
|
|
/** Co-processor clock widget is drawn without hour ticks.
|
|
* Gauge widget is drawn without major and minor ticks.
|
|
*/
|
|
#define FT8XX_OPT_NOTICKS 8192
|
|
/** Co-processor clock widget is drawn without hour and minutes hands,
|
|
* only seconds hand is drawn
|
|
*/
|
|
#define FT8XX_OPT_NOHM 16384
|
|
/** The Co-processor gauge has no pointer */
|
|
#define FT8XX_OPT_NOPOINTER 16384
|
|
/** Co-processor clock widget is drawn without seconds hand */
|
|
#define FT8XX_OPT_NOSECS 32768
|
|
/** Co-processor clock widget is drawn without hour, minutes and seconds hands */
|
|
#define FT8XX_OPT_NOHANDS 49152
|
|
|
|
/**
|
|
* @brief Execute a display list command by co-processor engine
|
|
*
|
|
* @param cmd Display list command to execute
|
|
*/
|
|
void ft8xx_copro_cmd(uint32_t cmd);
|
|
|
|
/**
|
|
* @brief Start a new display list
|
|
*/
|
|
void ft8xx_copro_cmd_dlstart(void);
|
|
|
|
/**
|
|
* @brief Swap the current display list
|
|
*/
|
|
void ft8xx_copro_cmd_swap(void);
|
|
|
|
/**
|
|
* @brief Draw text
|
|
*
|
|
* By default (@p x, @p y) is the top-left pixel of the text and the value of
|
|
* @p options is zero. @ref FT8XX_OPT_CENTERX centers the text horizontally,
|
|
* @ref FT8XX_OPT_CENTERY centers it vertically. @ref FT8XX_OPT_CENTER centers
|
|
* the text in both directions. @ref FT8XX_OPT_RIGHTX right-justifies the text,
|
|
* so that the @p x is the rightmost pixel.
|
|
*
|
|
* @param x x-coordinate of text base, in pixels
|
|
* @param y y-coordinate of text base, in pixels
|
|
* @param font Font to use for text, 0-31. 16-31 are ROM fonts
|
|
* @param options Options to apply
|
|
* @param s Character string to display, terminated with a null character
|
|
*/
|
|
void ft8xx_copro_cmd_text(int16_t x,
|
|
int16_t y,
|
|
int16_t font,
|
|
uint16_t options,
|
|
const char *s);
|
|
|
|
/**
|
|
* @brief Draw a decimal number
|
|
*
|
|
* By default (@p x, @p y) is the top-left pixel of the text.
|
|
* @ref FT8XX_OPT_CENTERX centers the text horizontally, @ref FT8XX_OPT_CENTERY
|
|
* centers it vertically. @ref FT8XX_OPT_CENTER centers the text in both
|
|
* directions. @ref FT8XX_OPT_RIGHTX right-justifies the text, so that the @p x
|
|
* is the rightmost pixel. By default the number is displayed with no leading
|
|
* zeroes, but if a width 1-9 is specified in the @p options, then the number
|
|
* is padded if necessary with leading zeroes so that it has the given width.
|
|
* If @ref FT8XX_OPT_SIGNED is given, the number is treated as signed, and
|
|
* prefixed by a minus sign if negative.
|
|
*
|
|
* @param x x-coordinate of text base, in pixels
|
|
* @param y y-coordinate of text base, in pixels
|
|
* @param font Font to use for text, 0-31. 16-31 are ROM fonts
|
|
* @param options Options to apply
|
|
* @param n The number to display.
|
|
*/
|
|
void ft8xx_copro_cmd_number(int16_t x,
|
|
int16_t y,
|
|
int16_t font,
|
|
uint16_t options,
|
|
int32_t n);
|
|
|
|
/**
|
|
* @brief Execute the touch screen calibration routine
|
|
*
|
|
* The calibration procedure collects three touches from the touch screen, then
|
|
* computes and loads an appropriate matrix into REG_TOUCH_TRANSFORM_A-F. To
|
|
* use it, create a display list and then use CMD_CALIBRATE. The co-processor
|
|
* engine overlays the touch targets on the current display list, gathers the
|
|
* calibration input and updates REG_TOUCH_TRANSFORM_A-F.
|
|
*
|
|
* @param result Calibration result, written with 0 on failure of calibration
|
|
*/
|
|
void ft8xx_copro_cmd_calibrate(uint32_t *result);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_DRIVERS_MISC_FT8XX_FT8XX_COPRO_H_ */
|