Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Committer:
WiredHome
Date:
Sat Jan 25 19:47:33 2014 +0000
Revision:
37:f19b7e7449dc
Parent:
33:b6b710758ab3
Child:
38:38d503b4fad6
major API tweak to use typedef's for pixel locations, dimensions, and text locations.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 19:3f82c1161fd2 1 #ifndef RA8875_H
WiredHome 19:3f82c1161fd2 2 #define RA8875_H
WiredHome 19:3f82c1161fd2 3 #include <mbed.h>
WiredHome 19:3f82c1161fd2 4
WiredHome 19:3f82c1161fd2 5 #include "GraphicsDisplay.h"
WiredHome 19:3f82c1161fd2 6
WiredHome 25:9556a3a9b7cc 7 #define RA8875_DEFAULT_SPI_FREQ 2000000
WiredHome 19:3f82c1161fd2 8
WiredHome 19:3f82c1161fd2 9 // Define this to enable code that monitors the performance of various
WiredHome 19:3f82c1161fd2 10 // graphics commands.
WiredHome 19:3f82c1161fd2 11 //#define PERF_METRICS
WiredHome 19:3f82c1161fd2 12
WiredHome 23:a50ded45dbaf 13 // What better place for some test code than in here and the companion
WiredHome 23:a50ded45dbaf 14 // .cpp file. See also the bottom of this file.
WiredHome 29:422616aa04bd 15 #define TESTENABLE
WiredHome 19:3f82c1161fd2 16
WiredHome 19:3f82c1161fd2 17 /// DOS colors - slightly color enhanced
WiredHome 20:6e2e4a8372eb 18 #define Black (color_t)(RGB(0,0,0))
WiredHome 20:6e2e4a8372eb 19 #define Blue (color_t)(RGB(0,0,187))
WiredHome 20:6e2e4a8372eb 20 #define Green (color_t)(RGB(0,187,0))
WiredHome 20:6e2e4a8372eb 21 #define Cyan (color_t)(RGB(0,187,187))
WiredHome 20:6e2e4a8372eb 22 #define Red (color_t)(RGB(187,0,0))
WiredHome 20:6e2e4a8372eb 23 #define Magenta (color_t)(RGB(187,0,187))
WiredHome 20:6e2e4a8372eb 24 #define Brown (color_t)(RGB(187,187,0))
WiredHome 20:6e2e4a8372eb 25 #define Gray (color_t)(RGB(187,187,187))
WiredHome 20:6e2e4a8372eb 26 #define Charcoal (color_t)(RGB(85,85,85))
WiredHome 20:6e2e4a8372eb 27 #define BrightBlue (color_t)(RGB(85,85,255))
WiredHome 20:6e2e4a8372eb 28 #define BrightGreen (color_t)(RGB(85,255,85))
WiredHome 20:6e2e4a8372eb 29 #define BrightCyan (color_t)(RGB(85,255,255))
WiredHome 20:6e2e4a8372eb 30 #define Orange (color_t)(RGB(255,85,85))
WiredHome 20:6e2e4a8372eb 31 #define Pink (color_t)(RGB(255,85,255))
WiredHome 20:6e2e4a8372eb 32 #define Yellow (color_t)(RGB(255,255,85))
WiredHome 20:6e2e4a8372eb 33 #define White (color_t)(RGB(255,255,255))
WiredHome 20:6e2e4a8372eb 34
WiredHome 20:6e2e4a8372eb 35 #define BrightRed (color_t)(RGB(255,0,0))
WiredHome 19:3f82c1161fd2 36
WiredHome 19:3f82c1161fd2 37 //namespace SW_graphics
WiredHome 19:3f82c1161fd2 38 //{
WiredHome 19:3f82c1161fd2 39
WiredHome 24:8ca861acf12d 40 /// cursor type to be shown as the text cursor.
WiredHome 24:8ca861acf12d 41 typedef enum
WiredHome 24:8ca861acf12d 42 {
WiredHome 24:8ca861acf12d 43 NOCURSOR, ///< cursor is hidden
WiredHome 24:8ca861acf12d 44 IBEAM, ///< | cursor
WiredHome 24:8ca861acf12d 45 UNDER, ///< _ cursor
WiredHome 24:8ca861acf12d 46 BLOCK ///< Block cursor
WiredHome 24:8ca861acf12d 47 } cursor_t;
WiredHome 24:8ca861acf12d 48
WiredHome 29:422616aa04bd 49 // return values from functions moved into TextDisplay.h
WiredHome 19:3f82c1161fd2 50 //typedef enum
WiredHome 19:3f82c1161fd2 51 //{
WiredHome 19:3f82c1161fd2 52 // noerror,
WiredHome 19:3f82c1161fd2 53 // bad_parameter
WiredHome 19:3f82c1161fd2 54 //} RetCode_t;
WiredHome 19:3f82c1161fd2 55
WiredHome 29:422616aa04bd 56
WiredHome 21:3c1efb192927 57 /// This is a graphics library for the Raio RA8875 Display Controller chip
WiredHome 21:3c1efb192927 58 /// attached to a 4-wire SPI interface.
WiredHome 21:3c1efb192927 59 ///
WiredHome 29:422616aa04bd 60 /// It offers both primitive and high level APIs.\\
WiredHome 21:3c1efb192927 61 /// Central to this API is a coordinate system, where the origin (0,0) is in
WiredHome 21:3c1efb192927 62 /// the top-left corner of the display, and the width extends positive to the
WiredHome 21:3c1efb192927 63 /// right and the height extends positive toward the bottom.
WiredHome 21:3c1efb192927 64 ///
WiredHome 21:3c1efb192927 65 /// As there are both graphics and text commands, one must take care to use
WiredHome 21:3c1efb192927 66 /// the proper coordinate system for each. Some of the text APIs are in units
WiredHome 29:422616aa04bd 67 /// of column and row, which is measured in character positions (and dependent
WiredHome 29:422616aa04bd 68 /// on the font size), and other text APIs permit pixel level positioning.
WiredHome 29:422616aa04bd 69 ///
WiredHome 31:c72e12cd5c67 70 /// @todo Add Scroll support for text.
WiredHome 29:422616aa04bd 71 /// @todo Add 2-Layer support.
WiredHome 37:f19b7e7449dc 72 /// @todo Improve sync between internal and external font support - cursor, window, scroll.
WiredHome 29:422616aa04bd 73 /// @todo Find out why it can't shift frequency after constructor runs.
WiredHome 29:422616aa04bd 74 /// @todo Add Hardware reset signal.
WiredHome 29:422616aa04bd 75 /// @todo Add Touch Screen support.
WiredHome 29:422616aa04bd 76 /// @todo Add Keypad Support.
WiredHome 29:422616aa04bd 77 /// @todo Add high level objects - x-y graph, meter, others...
WiredHome 21:3c1efb192927 78 ///
WiredHome 19:3f82c1161fd2 79 class RA8875 : public GraphicsDisplay
WiredHome 19:3f82c1161fd2 80 {
WiredHome 19:3f82c1161fd2 81 public:
WiredHome 19:3f82c1161fd2 82 /// font type selection.
WiredHome 19:3f82c1161fd2 83 typedef enum
WiredHome 19:3f82c1161fd2 84 {
WiredHome 31:c72e12cd5c67 85 ISO8859_1, ///< ISO8859-1 font
WiredHome 31:c72e12cd5c67 86 ISO8859_2, ///< ISO8859-2 font
WiredHome 31:c72e12cd5c67 87 ISO8859_3, ///< ISO8859-3 font
WiredHome 31:c72e12cd5c67 88 ISO8859_4 ///< ISO8859-4 font
WiredHome 19:3f82c1161fd2 89 } font_t;
WiredHome 19:3f82c1161fd2 90
WiredHome 19:3f82c1161fd2 91 /// font rotation selection
WiredHome 19:3f82c1161fd2 92 typedef enum
WiredHome 19:3f82c1161fd2 93 {
WiredHome 31:c72e12cd5c67 94 normal, ///< normal orientation
WiredHome 31:c72e12cd5c67 95 rotated ///< rotated orientation
WiredHome 19:3f82c1161fd2 96 } font_angle_t;
WiredHome 19:3f82c1161fd2 97
WiredHome 19:3f82c1161fd2 98 /// alignment
WiredHome 19:3f82c1161fd2 99 typedef enum
WiredHome 19:3f82c1161fd2 100 {
WiredHome 31:c72e12cd5c67 101 align_none, ///< align - none
WiredHome 31:c72e12cd5c67 102 align_full ///< align - full
WiredHome 19:3f82c1161fd2 103 } alignment_t;
WiredHome 19:3f82c1161fd2 104
WiredHome 19:3f82c1161fd2 105 /// Scale factor - 1, 2, 3 4
WiredHome 19:3f82c1161fd2 106 typedef unsigned int HorizontalScale;
WiredHome 19:3f82c1161fd2 107
WiredHome 19:3f82c1161fd2 108 /// Scale factor - 1, 2, 3, 4
WiredHome 19:3f82c1161fd2 109 typedef unsigned int VerticalScale;
WiredHome 19:3f82c1161fd2 110
WiredHome 19:3f82c1161fd2 111 /// Clear screen region
WiredHome 19:3f82c1161fd2 112 typedef enum
WiredHome 19:3f82c1161fd2 113 {
WiredHome 31:c72e12cd5c67 114 FULLWINDOW, ///< Full screen
WiredHome 31:c72e12cd5c67 115 ACTIVEWINDOW ///< active window/region
WiredHome 19:3f82c1161fd2 116 } Region_t;
WiredHome 19:3f82c1161fd2 117
WiredHome 19:3f82c1161fd2 118 /// Constructor for a display based on the RAiO RA8875
WiredHome 19:3f82c1161fd2 119 /// display controller.
WiredHome 19:3f82c1161fd2 120 ///
WiredHome 19:3f82c1161fd2 121 /// @param mosi is the SPI master out slave in pin on the mbed.
WiredHome 19:3f82c1161fd2 122 /// @param miso is the SPI master in slave out pin on the mbed.
WiredHome 19:3f82c1161fd2 123 /// @param sclk is the SPI shift clock pin on the mbed.
WiredHome 19:3f82c1161fd2 124 /// @param csel is the DigitalOut pin on the mbed to use as the
WiredHome 19:3f82c1161fd2 125 /// active low chip select for the display controller.
WiredHome 19:3f82c1161fd2 126 /// @param reset is the DigitalOut pin on the mbed to use as the
WiredHome 19:3f82c1161fd2 127 /// active low reset input on the display controller -
WiredHome 19:3f82c1161fd2 128 /// but this is not currently used.
WiredHome 19:3f82c1161fd2 129 /// @param name is a text name for this object, which will permit
WiredHome 19:3f82c1161fd2 130 /// capturing stdout and printf() directly to it.
WiredHome 19:3f82c1161fd2 131 ///
WiredHome 19:3f82c1161fd2 132 RA8875(PinName mosi, PinName miso, PinName sclk, PinName csel, PinName reset, const char * name = "lcd");
WiredHome 19:3f82c1161fd2 133
WiredHome 23:a50ded45dbaf 134 /// Destructor doesn't have much to do as this would typically be created
WiredHome 23:a50ded45dbaf 135 /// at startup, and not at runtime.
WiredHome 19:3f82c1161fd2 136 //~RA8875();
WiredHome 19:3f82c1161fd2 137
WiredHome 19:3f82c1161fd2 138 /// Write a command to the display
WiredHome 19:3f82c1161fd2 139 ///
WiredHome 19:3f82c1161fd2 140 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 141 ///
WiredHome 19:3f82c1161fd2 142 /// @param command is the command to write.
WiredHome 33:b6b710758ab3 143 /// @param data is optional data to be written to the command register
WiredHome 19:3f82c1161fd2 144 /// and only occurs if the data is in the range [0 - 0xFF].
WiredHome 19:3f82c1161fd2 145 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 146 ///
WiredHome 32:0e4f2ae512e2 147 virtual RetCode_t WriteCommand(unsigned char command, unsigned int data = 0xFFFF);
WiredHome 19:3f82c1161fd2 148
WiredHome 19:3f82c1161fd2 149 /// Write a data byte to the display
WiredHome 19:3f82c1161fd2 150 ///
WiredHome 19:3f82c1161fd2 151 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 152 ///
WiredHome 19:3f82c1161fd2 153 /// @param data is the data to write.
WiredHome 19:3f82c1161fd2 154 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 155 ///
WiredHome 32:0e4f2ae512e2 156 virtual RetCode_t WriteData(unsigned char data);
WiredHome 19:3f82c1161fd2 157
WiredHome 19:3f82c1161fd2 158 /// Read a command register
WiredHome 19:3f82c1161fd2 159 ///
WiredHome 19:3f82c1161fd2 160 /// @param command is the command register to read.
WiredHome 19:3f82c1161fd2 161 /// @returns the value read from the register.
WiredHome 19:3f82c1161fd2 162 ///
WiredHome 19:3f82c1161fd2 163 unsigned char ReadCommand(unsigned char command);
WiredHome 19:3f82c1161fd2 164
WiredHome 19:3f82c1161fd2 165 /// Read a data byte to the display
WiredHome 19:3f82c1161fd2 166 ///
WiredHome 19:3f82c1161fd2 167 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 168 ///
WiredHome 19:3f82c1161fd2 169 /// @returns data that was read.
WiredHome 19:3f82c1161fd2 170 ///
WiredHome 19:3f82c1161fd2 171 unsigned char ReadData(void);
WiredHome 19:3f82c1161fd2 172
WiredHome 19:3f82c1161fd2 173 /// Read the display status
WiredHome 19:3f82c1161fd2 174 ///
WiredHome 19:3f82c1161fd2 175 /// This is a high level command, and may invoke several primitives.
WiredHome 19:3f82c1161fd2 176 ///
WiredHome 19:3f82c1161fd2 177 /// @returns data that was read.
WiredHome 19:3f82c1161fd2 178 ///
WiredHome 19:3f82c1161fd2 179 unsigned char ReadStatus(void);
WiredHome 19:3f82c1161fd2 180
WiredHome 19:3f82c1161fd2 181 /// get the width in pixels of the currently active font
WiredHome 19:3f82c1161fd2 182 ///
WiredHome 19:3f82c1161fd2 183 /// @returns font width in pixels.
WiredHome 19:3f82c1161fd2 184 ///
WiredHome 37:f19b7e7449dc 185 dim_t fontwidth(void);
WiredHome 19:3f82c1161fd2 186
WiredHome 19:3f82c1161fd2 187 /// get the height in pixels of the currently active font
WiredHome 19:3f82c1161fd2 188 ///
WiredHome 19:3f82c1161fd2 189 /// @returns font height in pixels.
WiredHome 19:3f82c1161fd2 190 ///
WiredHome 37:f19b7e7449dc 191 dim_t fontheight(void);
WiredHome 19:3f82c1161fd2 192
WiredHome 19:3f82c1161fd2 193 /// get the number of colums based on the currently active font
WiredHome 19:3f82c1161fd2 194 ///
WiredHome 19:3f82c1161fd2 195 /// @returns number of columns.
WiredHome 19:3f82c1161fd2 196 ///
WiredHome 19:3f82c1161fd2 197 virtual int columns(void);
WiredHome 19:3f82c1161fd2 198
WiredHome 19:3f82c1161fd2 199 /// get the number of rows based on the currently active font
WiredHome 19:3f82c1161fd2 200 ///
WiredHome 19:3f82c1161fd2 201 /// @returns number of rows.
WiredHome 19:3f82c1161fd2 202 ///
WiredHome 19:3f82c1161fd2 203 virtual int rows(void);
WiredHome 19:3f82c1161fd2 204
WiredHome 19:3f82c1161fd2 205 /// get the screen width in pixels
WiredHome 19:3f82c1161fd2 206 ///
WiredHome 19:3f82c1161fd2 207 /// @returns screen width in pixels.
WiredHome 19:3f82c1161fd2 208 ///
WiredHome 32:0e4f2ae512e2 209 virtual uint16_t width(void);
WiredHome 19:3f82c1161fd2 210
WiredHome 19:3f82c1161fd2 211 /// get the screen height in pixels
WiredHome 19:3f82c1161fd2 212 ///
WiredHome 19:3f82c1161fd2 213 /// @returns screen height in pixels.
WiredHome 19:3f82c1161fd2 214 ///
WiredHome 32:0e4f2ae512e2 215 virtual uint16_t height(void);
WiredHome 19:3f82c1161fd2 216
WiredHome 19:3f82c1161fd2 217 /// Set cursor position based on the current font size.
WiredHome 19:3f82c1161fd2 218 ///
WiredHome 32:0e4f2ae512e2 219 /// @param column is the horizontal position in character positions
WiredHome 32:0e4f2ae512e2 220 /// @param row is the vertical position in character positions
WiredHome 19:3f82c1161fd2 221 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 222 ///
WiredHome 37:f19b7e7449dc 223 virtual RetCode_t locate(textloc_t column, textloc_t row);
WiredHome 19:3f82c1161fd2 224
WiredHome 19:3f82c1161fd2 225 /// Prepare the controller to write text to the screen by positioning
WiredHome 19:3f82c1161fd2 226 /// the cursor.
WiredHome 19:3f82c1161fd2 227 ///
WiredHome 19:3f82c1161fd2 228 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 229 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 230 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 231 ///
WiredHome 37:f19b7e7449dc 232 RetCode_t SetTextCursor(loc_t x, loc_t y);
WiredHome 29:422616aa04bd 233
WiredHome 37:f19b7e7449dc 234 /// Get the current cursor position in pixels.
WiredHome 37:f19b7e7449dc 235 ///
WiredHome 37:f19b7e7449dc 236 /// @returns cursor position.
WiredHome 37:f19b7e7449dc 237 ///
WiredHome 37:f19b7e7449dc 238 point_t GetTextCursor(void);
WiredHome 37:f19b7e7449dc 239
WiredHome 29:422616aa04bd 240 /// Get the current cursor horizontal position in pixels.
WiredHome 29:422616aa04bd 241 ///
WiredHome 29:422616aa04bd 242 /// @returns cursor position horizontal offset.
WiredHome 29:422616aa04bd 243 ///
WiredHome 37:f19b7e7449dc 244 loc_t GetTextCursor_X(void);
WiredHome 29:422616aa04bd 245
WiredHome 29:422616aa04bd 246 /// Get the current cursor vertical position in pixels.
WiredHome 29:422616aa04bd 247 ///
WiredHome 29:422616aa04bd 248 /// @returns cursor position vertical offset.
WiredHome 29:422616aa04bd 249 ///
WiredHome 37:f19b7e7449dc 250 loc_t GetTextCursor_Y(void);
WiredHome 29:422616aa04bd 251
WiredHome 23:a50ded45dbaf 252 /// Configure additional Cursor Control settings.
WiredHome 23:a50ded45dbaf 253 ///
WiredHome 23:a50ded45dbaf 254 /// This API lets you modify other cursor control settings;
WiredHome 23:a50ded45dbaf 255 /// Cursor visible/hidden, Cursor blink/normal,
WiredHome 23:a50ded45dbaf 256 /// Cursor I-Beam/underscore/box.
WiredHome 23:a50ded45dbaf 257 ///
WiredHome 24:8ca861acf12d 258 /// @param cursor can be set to NOCURSOR (default), IBEAM,
WiredHome 24:8ca861acf12d 259 /// UNDER, or BLOCK.
WiredHome 23:a50ded45dbaf 260 /// @param blink can be set to true or false (default false)
WiredHome 23:a50ded45dbaf 261 /// @returns success/failure code. @see RetCode_t
WiredHome 23:a50ded45dbaf 262 ///
WiredHome 24:8ca861acf12d 263 RetCode_t SetTextCursorControl(cursor_t cursor = NOCURSOR, bool blink = false);
WiredHome 23:a50ded45dbaf 264
WiredHome 19:3f82c1161fd2 265 /// Select the ISO 8859-X font to use next.
WiredHome 19:3f82c1161fd2 266 ///
WiredHome 19:3f82c1161fd2 267 /// Supported fonts: ISO 8859-1, -2, -3, -4
WiredHome 19:3f82c1161fd2 268 ///
WiredHome 19:3f82c1161fd2 269 /// @param font selects the font for the subsequent text rendering.
WiredHome 19:3f82c1161fd2 270 ///
WiredHome 19:3f82c1161fd2 271 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 272 /// the command is not executed.
WiredHome 19:3f82c1161fd2 273 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 274 ///
WiredHome 19:3f82c1161fd2 275 RetCode_t SetTextFont(font_t font = ISO8859_1);
WiredHome 19:3f82c1161fd2 276
WiredHome 19:3f82c1161fd2 277 /// Control the font behavior.
WiredHome 19:3f82c1161fd2 278 ///
WiredHome 19:3f82c1161fd2 279 /// This command lets you make several modifications to any text that
WiredHome 19:3f82c1161fd2 280 /// is written.
WiredHome 19:3f82c1161fd2 281 ///
WiredHome 19:3f82c1161fd2 282 /// Options can be combined:
WiredHome 19:3f82c1161fd2 283 /// Default:
WiredHome 19:3f82c1161fd2 284 /// @li Full alignment disabled,
WiredHome 19:3f82c1161fd2 285 /// @li Font with Background color,
WiredHome 19:3f82c1161fd2 286 /// @li Font in normal orientiation,
WiredHome 19:3f82c1161fd2 287 /// @li Horizontal scale x 1
WiredHome 19:3f82c1161fd2 288 /// @li Vertical scale x 1
WiredHome 19:3f82c1161fd2 289 /// @li alignment
WiredHome 19:3f82c1161fd2 290 ///
WiredHome 19:3f82c1161fd2 291 /// @param fillit defaults to FILL, but can be NOFILL
WiredHome 19:3f82c1161fd2 292 /// @param angle defaults to normal, but can be rotated
WiredHome 19:3f82c1161fd2 293 /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 294 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 295 /// @param vScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 296 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 297 /// @param alignment defaults to align_none, but can be
WiredHome 19:3f82c1161fd2 298 /// align_full.
WiredHome 19:3f82c1161fd2 299 ///
WiredHome 19:3f82c1161fd2 300 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 301 /// the command is not executed.
WiredHome 19:3f82c1161fd2 302 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 303 ///
WiredHome 19:3f82c1161fd2 304 RetCode_t SetTextFontControl(fill_t fillit = FILL,
WiredHome 19:3f82c1161fd2 305 font_angle_t angle = normal,
WiredHome 19:3f82c1161fd2 306 HorizontalScale hScale = 1,
WiredHome 19:3f82c1161fd2 307 VerticalScale vScale = 1,
WiredHome 19:3f82c1161fd2 308 alignment_t alignment = align_none);
WiredHome 19:3f82c1161fd2 309
WiredHome 19:3f82c1161fd2 310 /// Control the font size
WiredHome 19:3f82c1161fd2 311 ///
WiredHome 19:3f82c1161fd2 312 /// This command lets you set the font enlargement for both horizontal
WiredHome 19:3f82c1161fd2 313 /// and vertical, independent of the rotation, background, and
WiredHome 19:3f82c1161fd2 314 /// alignment. @see SetTextFontControl.
WiredHome 19:3f82c1161fd2 315 ///
WiredHome 19:3f82c1161fd2 316 /// @param hScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 317 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 318 /// @param vScale defaults to 1, but can be 1, 2, 3, or 4,
WiredHome 19:3f82c1161fd2 319 /// and scales the font size by this amount.
WiredHome 19:3f82c1161fd2 320 ///
WiredHome 19:3f82c1161fd2 321 /// @note if either hScale or vScale is outside of its permitted range,
WiredHome 19:3f82c1161fd2 322 /// the command is not executed.
WiredHome 19:3f82c1161fd2 323 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 324 ///
WiredHome 19:3f82c1161fd2 325 RetCode_t SetTextFontSize(HorizontalScale hScale = 1, VerticalScale vScale = 1);
WiredHome 19:3f82c1161fd2 326
WiredHome 19:3f82c1161fd2 327 /// put a character on the screen.
WiredHome 19:3f82c1161fd2 328 ///
WiredHome 19:3f82c1161fd2 329 /// @param c is the character.
WiredHome 19:3f82c1161fd2 330 /// @returns the character, or EOF if there is an error.
WiredHome 19:3f82c1161fd2 331 ///
WiredHome 19:3f82c1161fd2 332 virtual int _putc(int c);
WiredHome 19:3f82c1161fd2 333
WiredHome 19:3f82c1161fd2 334 /// Write string of text to the display
WiredHome 19:3f82c1161fd2 335 ///
WiredHome 19:3f82c1161fd2 336 /// @param string is the null terminated string to send to the display.
WiredHome 19:3f82c1161fd2 337 ///
WiredHome 19:3f82c1161fd2 338 void puts(const char * string);
WiredHome 19:3f82c1161fd2 339
WiredHome 19:3f82c1161fd2 340 /// Write string of text to the display at the specified location.
WiredHome 19:3f82c1161fd2 341 ///
WiredHome 19:3f82c1161fd2 342 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 343 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 344 /// @param string is the null terminated string to send to the display.
WiredHome 19:3f82c1161fd2 345 ///
WiredHome 37:f19b7e7449dc 346 void puts(loc_t x, loc_t y, const char * string);
WiredHome 19:3f82c1161fd2 347
WiredHome 19:3f82c1161fd2 348 /// Prepare the controller to write binary data to the screen by positioning
WiredHome 19:3f82c1161fd2 349 /// the memory cursor.
WiredHome 19:3f82c1161fd2 350 ///
WiredHome 19:3f82c1161fd2 351 /// @param x is the horizontal position in pixels (from the left edge)
WiredHome 19:3f82c1161fd2 352 /// @param y is the vertical position in pixels (from the top edge)
WiredHome 19:3f82c1161fd2 353 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 354 ///
WiredHome 37:f19b7e7449dc 355 virtual RetCode_t SetGraphicsCursor(loc_t x, loc_t y);
WiredHome 19:3f82c1161fd2 356
WiredHome 19:3f82c1161fd2 357 /// Set the window, which controls where items are written to the screen.
WiredHome 19:3f82c1161fd2 358 ///
WiredHome 19:3f82c1161fd2 359 /// When something hits the window width, it wraps back to the left side
WiredHome 19:3f82c1161fd2 360 /// and down a row. If the initial write is outside the window, it will
WiredHome 19:3f82c1161fd2 361 /// be captured into the window when it crosses a boundary.
WiredHome 19:3f82c1161fd2 362 ///
WiredHome 19:3f82c1161fd2 363 /// @param x is the left edge in pixels.
WiredHome 19:3f82c1161fd2 364 /// @param y is the top edge in pixels.
WiredHome 19:3f82c1161fd2 365 /// @param width is the window width in pixels.
WiredHome 19:3f82c1161fd2 366 /// @param height is the window height in pixels.
WiredHome 19:3f82c1161fd2 367 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 368 ///
WiredHome 37:f19b7e7449dc 369 virtual RetCode_t window(loc_t x, loc_t y, dim_t width, dim_t height);
WiredHome 19:3f82c1161fd2 370
WiredHome 19:3f82c1161fd2 371 /// Clear the screen.
WiredHome 19:3f82c1161fd2 372 ///
WiredHome 19:3f82c1161fd2 373 /// The behavior is to clear the whole screen. @see clsw().
WiredHome 19:3f82c1161fd2 374 ///
WiredHome 19:3f82c1161fd2 375 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 376 ///
WiredHome 19:3f82c1161fd2 377 virtual RetCode_t cls(void);
WiredHome 19:3f82c1161fd2 378
WiredHome 19:3f82c1161fd2 379 /// Clear the screen, or clear only the active window.
WiredHome 19:3f82c1161fd2 380 ///
WiredHome 19:3f82c1161fd2 381 /// The default behavior is to clear the whole screen. With the optional
WiredHome 19:3f82c1161fd2 382 /// parameter, the action can be restricted to the active window, which
WiredHome 32:0e4f2ae512e2 383 /// can be set with the @see window method.
WiredHome 19:3f82c1161fd2 384 ///
WiredHome 19:3f82c1161fd2 385 /// @param region is an optional parameter that defaults to FULLWINDOW
WiredHome 19:3f82c1161fd2 386 /// or may be set to ACTIVEWINDOW.
WiredHome 19:3f82c1161fd2 387 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 388 ///
WiredHome 19:3f82c1161fd2 389 RetCode_t clsw(RA8875::Region_t region = FULLWINDOW);
WiredHome 19:3f82c1161fd2 390
WiredHome 19:3f82c1161fd2 391 /// Set the background color.
WiredHome 19:3f82c1161fd2 392 ///
WiredHome 19:3f82c1161fd2 393 /// @param color is expressed in 16-bit format.
WiredHome 19:3f82c1161fd2 394 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 395 ///
WiredHome 19:3f82c1161fd2 396 virtual RetCode_t background(color_t color);
WiredHome 19:3f82c1161fd2 397
WiredHome 19:3f82c1161fd2 398 /// Set the background color.
WiredHome 19:3f82c1161fd2 399 ///
WiredHome 19:3f82c1161fd2 400 /// @param r is the red element of the color.
WiredHome 19:3f82c1161fd2 401 /// @param g is the green element of the color.
WiredHome 19:3f82c1161fd2 402 /// @param b is the blue element of the color.
WiredHome 19:3f82c1161fd2 403 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 404 ///
WiredHome 19:3f82c1161fd2 405 virtual RetCode_t background(unsigned char r, unsigned char g, unsigned char b);
WiredHome 19:3f82c1161fd2 406
WiredHome 19:3f82c1161fd2 407 /// Set the foreground color.
WiredHome 19:3f82c1161fd2 408 ///
WiredHome 19:3f82c1161fd2 409 /// @param color is expressed in 16-bit format.
WiredHome 19:3f82c1161fd2 410 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 411 ///
WiredHome 19:3f82c1161fd2 412 virtual RetCode_t foreground(color_t color);
WiredHome 19:3f82c1161fd2 413
WiredHome 19:3f82c1161fd2 414 /// Set the foreground color.
WiredHome 19:3f82c1161fd2 415 ///
WiredHome 37:f19b7e7449dc 416 /// @param r is the red element of the color.
WiredHome 37:f19b7e7449dc 417 /// @param g is the green element of the color.
WiredHome 37:f19b7e7449dc 418 /// @param b is the blue element of the color.
WiredHome 19:3f82c1161fd2 419 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 420 ///
WiredHome 37:f19b7e7449dc 421 virtual RetCode_t foreground(unsigned char r, unsigned char g, unsigned char b);
WiredHome 19:3f82c1161fd2 422
WiredHome 19:3f82c1161fd2 423 /// Get the current foreground color value.
WiredHome 19:3f82c1161fd2 424 ///
WiredHome 19:3f82c1161fd2 425 /// @returns the current foreground color.
WiredHome 19:3f82c1161fd2 426 ///
WiredHome 37:f19b7e7449dc 427 color_t GetForeColor(void);
WiredHome 19:3f82c1161fd2 428
WiredHome 19:3f82c1161fd2 429 /// Draw a pixel in the specified color.
WiredHome 19:3f82c1161fd2 430 ///
WiredHome 32:0e4f2ae512e2 431 /// @note As a side effect, this also sets the foreground
WiredHome 32:0e4f2ae512e2 432 /// color affecting all subsequent operations.
WiredHome 19:3f82c1161fd2 433 ///
WiredHome 19:3f82c1161fd2 434 /// @param x is the horizontal offset to this pixel.
WiredHome 19:3f82c1161fd2 435 /// @param y is the vertical offset to this pixel.
WiredHome 19:3f82c1161fd2 436 /// @param color defines the color for the pixel.
WiredHome 19:3f82c1161fd2 437 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 438 ///
WiredHome 37:f19b7e7449dc 439 virtual RetCode_t pixel(loc_t x, loc_t y, color_t color);
WiredHome 19:3f82c1161fd2 440
WiredHome 19:3f82c1161fd2 441 /// Draw a pixel in the current foreground color.
WiredHome 19:3f82c1161fd2 442 ///
WiredHome 19:3f82c1161fd2 443 /// @param x is the horizontal offset to this pixel.
WiredHome 19:3f82c1161fd2 444 /// @param y is the veritical offset to this pixel.
WiredHome 19:3f82c1161fd2 445 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 446 ///
WiredHome 37:f19b7e7449dc 447 virtual RetCode_t pixel(loc_t x, loc_t y);
WiredHome 19:3f82c1161fd2 448
WiredHome 19:3f82c1161fd2 449 /// Draw a line in the specified color
WiredHome 19:3f82c1161fd2 450 ///
WiredHome 19:3f82c1161fd2 451 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 452 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 453 ///
WiredHome 19:3f82c1161fd2 454 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 455 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 456 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 457 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 458 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 459 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 460 ///
WiredHome 37:f19b7e7449dc 461 RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 19:3f82c1161fd2 462 color_t color);
WiredHome 19:3f82c1161fd2 463
WiredHome 19:3f82c1161fd2 464 /// Draw a line
WiredHome 19:3f82c1161fd2 465 ///
WiredHome 19:3f82c1161fd2 466 /// Draws a line using the foreground color setting.
WiredHome 19:3f82c1161fd2 467 ///
WiredHome 19:3f82c1161fd2 468 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 469 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 470 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 471 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 472 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 473 ///
WiredHome 37:f19b7e7449dc 474 RetCode_t line(loc_t x1, loc_t y1, loc_t x2, loc_t y2);
WiredHome 19:3f82c1161fd2 475
WiredHome 19:3f82c1161fd2 476 /// Draw a rectangle in the specified color
WiredHome 19:3f82c1161fd2 477 ///
WiredHome 19:3f82c1161fd2 478 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 479 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 480 ///
WiredHome 19:3f82c1161fd2 481 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 482 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 483 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 484 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 485 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 486 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 487 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 488 ///
WiredHome 37:f19b7e7449dc 489 RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 19:3f82c1161fd2 490 color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 491
WiredHome 19:3f82c1161fd2 492 /// Draw a filled rectangle in the specified color
WiredHome 19:3f82c1161fd2 493 ///
WiredHome 19:3f82c1161fd2 494 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 495 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 496 ///
WiredHome 19:3f82c1161fd2 497 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 498 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 499 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 500 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 501 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 502 /// @param fillit is optional to NOFILL the rectangle. default is FILL.
WiredHome 19:3f82c1161fd2 503 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 504 ///
WiredHome 37:f19b7e7449dc 505 virtual RetCode_t fillrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 19:3f82c1161fd2 506 color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 507
WiredHome 19:3f82c1161fd2 508 /// Draw a rectangle
WiredHome 19:3f82c1161fd2 509 ///
WiredHome 19:3f82c1161fd2 510 /// Draws a rectangle using the foreground color setting.
WiredHome 19:3f82c1161fd2 511 ///
WiredHome 19:3f82c1161fd2 512 /// @param x1 is the horizontal start of the line.
WiredHome 19:3f82c1161fd2 513 /// @param y1 is the vertical start of the line.
WiredHome 19:3f82c1161fd2 514 /// @param x2 is the horizontal end of the line.
WiredHome 19:3f82c1161fd2 515 /// @param y2 is the vertical end of the line.
WiredHome 19:3f82c1161fd2 516 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 517 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 518 ///
WiredHome 37:f19b7e7449dc 519 RetCode_t rect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 19:3f82c1161fd2 520 fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 521
WiredHome 19:3f82c1161fd2 522 /// Draw a filled rectangle with rounded corners using the specified color.
WiredHome 19:3f82c1161fd2 523 ///
WiredHome 21:3c1efb192927 524 /// This draws a rounded rectangle. A numbers of checks are made on the values,
WiredHome 21:3c1efb192927 525 /// and it could reduce this to drawing a line (if either x1 == x2, or y1 == y2),
WiredHome 21:3c1efb192927 526 /// or a single point (x1 == x2 && y1 == y2). If the radius parameters are
WiredHome 21:3c1efb192927 527 /// > 1/2 the length of that side (width or height), an error value is returned.
WiredHome 21:3c1efb192927 528 ///
WiredHome 19:3f82c1161fd2 529 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 530 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 531 ///
WiredHome 21:3c1efb192927 532 /// @param x1 is the horizontal start of the line and must be <= x2.
WiredHome 21:3c1efb192927 533 /// @param y1 is the vertical start of the line and must be <= y2.
WiredHome 21:3c1efb192927 534 /// @param x2 is the horizontal end of the line and must be >= x1.
WiredHome 21:3c1efb192927 535 /// @param y2 is the vertical end of the line and must be >= y1.
WiredHome 22:f6ea795eb541 536 /// @param radius1 defines the horizontal radius of the curved corner. Take care
WiredHome 21:3c1efb192927 537 /// that this value < 1/2 the width of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 538 /// is returned.
WiredHome 22:f6ea795eb541 539 /// @param radius2 defines the vertical radius of the curved corner. Take care
WiredHome 21:3c1efb192927 540 /// that this value < 1/2 the height of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 541 /// is returned.
WiredHome 19:3f82c1161fd2 542 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 543 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 544 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 545 ///
WiredHome 37:f19b7e7449dc 546 RetCode_t fillroundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 547 dim_t radius1, dim_t radius2, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 548
WiredHome 19:3f82c1161fd2 549 /// Draw a rectangle with rounded corners using the specified color.
WiredHome 19:3f82c1161fd2 550 ///
WiredHome 21:3c1efb192927 551 /// This draws a rounded rectangle. A numbers of checks are made on the values,
WiredHome 21:3c1efb192927 552 /// and it could reduce this to drawing a line (if either x1 == x2, or y1 == y2),
WiredHome 21:3c1efb192927 553 /// or a single point (x1 == x2 && y1 == y2). If the radius parameters are
WiredHome 21:3c1efb192927 554 /// > 1/2 the length of that side (width or height), an error value is returned.
WiredHome 21:3c1efb192927 555 ///
WiredHome 19:3f82c1161fd2 556 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 557 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 558 ///
WiredHome 21:3c1efb192927 559 /// @param x1 is the horizontal start of the line and must be <= x2.
WiredHome 21:3c1efb192927 560 /// @param y1 is the vertical start of the line and must be <= y2.
WiredHome 21:3c1efb192927 561 /// @param x2 is the horizontal end of the line and must be >= x1.
WiredHome 21:3c1efb192927 562 /// @param y2 is the vertical end of the line and must be >= y1.
WiredHome 22:f6ea795eb541 563 /// @param radius1 defines the horizontal radius of the curved corner. Take care
WiredHome 21:3c1efb192927 564 /// that this value < 1/2 the width of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 565 /// is returned.
WiredHome 22:f6ea795eb541 566 /// @param radius2 defines the vertical radius of the curved corner. Take care
WiredHome 21:3c1efb192927 567 /// that this value < 1/2 the height of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 568 /// is returned.
WiredHome 19:3f82c1161fd2 569 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 570 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 571 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 572 ///
WiredHome 37:f19b7e7449dc 573 RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 574 dim_t radius1, dim_t radius2, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 575
WiredHome 19:3f82c1161fd2 576 /// Draw a rectangle with rounded corners.
WiredHome 19:3f82c1161fd2 577 ///
WiredHome 21:3c1efb192927 578 /// This draws a rounded rectangle. A numbers of checks are made on the values,
WiredHome 21:3c1efb192927 579 /// and it could reduce this to drawing a line (if either x1 == x2, or y1 == y2),
WiredHome 21:3c1efb192927 580 /// or a single point (x1 == x2 && y1 == y2). If the radius parameters are
WiredHome 21:3c1efb192927 581 /// > 1/2 the length of that side (width or height), an error value is returned.
WiredHome 19:3f82c1161fd2 582 ///
WiredHome 21:3c1efb192927 583 /// @param x1 is the horizontal start of the line and must be <= x2.
WiredHome 21:3c1efb192927 584 /// @param y1 is the vertical start of the line and must be <= y2.
WiredHome 21:3c1efb192927 585 /// @param x2 is the horizontal end of the line and must be >= x1.
WiredHome 21:3c1efb192927 586 /// @param y2 is the vertical end of the line and must be >= y1.
WiredHome 22:f6ea795eb541 587 /// @param radius1 defines the horizontal radius of the curved corner. Take care
WiredHome 21:3c1efb192927 588 /// that this value < 1/2 the width of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 589 /// is returned.
WiredHome 22:f6ea795eb541 590 /// @param radius2 defines the vertical radius of the curved corner. Take care
WiredHome 21:3c1efb192927 591 /// that this value < 1/2 the height of the rectangle, or bad_parameter
WiredHome 21:3c1efb192927 592 /// is returned.
WiredHome 19:3f82c1161fd2 593 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 594 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 595 ///
WiredHome 37:f19b7e7449dc 596 RetCode_t roundrect(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 597 dim_t radius1, dim_t radius2, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 598
WiredHome 19:3f82c1161fd2 599 /// Draw a triangle in the specified color.
WiredHome 19:3f82c1161fd2 600 ///
WiredHome 19:3f82c1161fd2 601 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 602 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 603 ///
WiredHome 19:3f82c1161fd2 604 /// @param x1 is the horizontal for point 1.
WiredHome 21:3c1efb192927 605 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 606 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 607 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 608 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 609 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 610 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 611 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 612 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 613 ///
WiredHome 37:f19b7e7449dc 614 RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 615 loc_t x3, loc_t y3, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 616
WiredHome 19:3f82c1161fd2 617 /// Draw a filled triangle in the specified color.
WiredHome 19:3f82c1161fd2 618 ///
WiredHome 19:3f82c1161fd2 619 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 620 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 621 ///
WiredHome 19:3f82c1161fd2 622 /// @param x1 is the horizontal for point 1.
WiredHome 19:3f82c1161fd2 623 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 624 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 625 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 626 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 627 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 628 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 629 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 630 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 631 ///
WiredHome 37:f19b7e7449dc 632 RetCode_t filltriangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 633 loc_t x3, loc_t y3, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 634
WiredHome 19:3f82c1161fd2 635 /// Draw a triangle
WiredHome 19:3f82c1161fd2 636 ///
WiredHome 19:3f82c1161fd2 637 /// Draws a triangle using the foreground color setting.
WiredHome 19:3f82c1161fd2 638 ///
WiredHome 19:3f82c1161fd2 639 /// @param x1 is the horizontal for point 1.
WiredHome 19:3f82c1161fd2 640 /// @param y1 is the vertical for point 1.
WiredHome 19:3f82c1161fd2 641 /// @param x2 is the horizontal for point 2.
WiredHome 19:3f82c1161fd2 642 /// @param y2 is the vertical for point 2.
WiredHome 19:3f82c1161fd2 643 /// @param x3 is the horizontal for point 3.
WiredHome 19:3f82c1161fd2 644 /// @param y3 is the vertical for point 3.
WiredHome 19:3f82c1161fd2 645 /// @param fillit is optional to FILL the rectangle. default is NOFILL.
WiredHome 19:3f82c1161fd2 646 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 647 ///
WiredHome 37:f19b7e7449dc 648 RetCode_t triangle(loc_t x1, loc_t y1, loc_t x2, loc_t y2,
WiredHome 37:f19b7e7449dc 649 loc_t x3, loc_t y3, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 650
WiredHome 19:3f82c1161fd2 651 /// Draw a circle using the specified color.
WiredHome 19:3f82c1161fd2 652 ///
WiredHome 19:3f82c1161fd2 653 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 654 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 655 ///
WiredHome 19:3f82c1161fd2 656 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 657 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 658 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 659 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 660 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 661 ///
WiredHome 37:f19b7e7449dc 662 RetCode_t circle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 663
WiredHome 19:3f82c1161fd2 664 /// Draw a filled circle using the specified color.
WiredHome 19:3f82c1161fd2 665 ///
WiredHome 19:3f82c1161fd2 666 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 667 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 668 ///
WiredHome 19:3f82c1161fd2 669 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 670 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 671 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 672 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 673 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 674 ///
WiredHome 37:f19b7e7449dc 675 RetCode_t fillcircle(loc_t x, loc_t y, dim_t radius, color_t color, fill_t fillit = FILL);
WiredHome 19:3f82c1161fd2 676
WiredHome 19:3f82c1161fd2 677 /// Draw a circle.
WiredHome 19:3f82c1161fd2 678 ///
WiredHome 19:3f82c1161fd2 679 /// Draws a circle using the foreground color setting.
WiredHome 19:3f82c1161fd2 680 ///
WiredHome 19:3f82c1161fd2 681 /// @param x is the horizontal center of the circle.
WiredHome 19:3f82c1161fd2 682 /// @param y is the vertical center of the circle.
WiredHome 19:3f82c1161fd2 683 /// @param radius defines the size of the circle.
WiredHome 19:3f82c1161fd2 684 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 685 ///
WiredHome 37:f19b7e7449dc 686 RetCode_t circle(loc_t x, loc_t y, dim_t radius, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 687
WiredHome 19:3f82c1161fd2 688 /// Draw an Ellipse using the specified color
WiredHome 19:3f82c1161fd2 689 ///
WiredHome 19:3f82c1161fd2 690 /// @note As a side effect, this changes the current
WiredHome 19:3f82c1161fd2 691 /// foreground color for subsequent operations.
WiredHome 19:3f82c1161fd2 692 ///
WiredHome 19:3f82c1161fd2 693 /// @param x is the horizontal center of the ellipse.
WiredHome 19:3f82c1161fd2 694 /// @param y is the vertical center of the ellipse.
WiredHome 22:f6ea795eb541 695 /// @param radius1 defines the horizontal radius of the ellipse.
WiredHome 22:f6ea795eb541 696 /// @param radius2 defines the vertical radius of the ellipse.
WiredHome 19:3f82c1161fd2 697 /// @param color defines the foreground color.
WiredHome 19:3f82c1161fd2 698 /// @param fillit defines whether the circle is filled or not.
WiredHome 19:3f82c1161fd2 699 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 700 ///
WiredHome 37:f19b7e7449dc 701 RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2,
WiredHome 19:3f82c1161fd2 702 color_t color, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 703
WiredHome 25:9556a3a9b7cc 704 /// Draw a filled Ellipse using the specified color
WiredHome 25:9556a3a9b7cc 705 ///
WiredHome 25:9556a3a9b7cc 706 /// @note As a side effect, this changes the current
WiredHome 25:9556a3a9b7cc 707 /// foreground color for subsequent operations.
WiredHome 25:9556a3a9b7cc 708 ///
WiredHome 25:9556a3a9b7cc 709 /// @param x is the horizontal center of the ellipse.
WiredHome 25:9556a3a9b7cc 710 /// @param y is the vertical center of the ellipse.
WiredHome 25:9556a3a9b7cc 711 /// @param radius1 defines the horizontal radius of the ellipse.
WiredHome 25:9556a3a9b7cc 712 /// @param radius2 defines the vertical radius of the ellipse.
WiredHome 25:9556a3a9b7cc 713 /// @param color defines the foreground color.
WiredHome 25:9556a3a9b7cc 714 /// @param fillit defines whether the circle is filled or not.
WiredHome 25:9556a3a9b7cc 715 /// @returns success/failure code. @see RetCode_t.
WiredHome 25:9556a3a9b7cc 716 ///
WiredHome 37:f19b7e7449dc 717 RetCode_t fillellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2,
WiredHome 25:9556a3a9b7cc 718 color_t color, fill_t fillit = FILL);
WiredHome 25:9556a3a9b7cc 719
WiredHome 19:3f82c1161fd2 720 /// Draw an Ellipse
WiredHome 19:3f82c1161fd2 721 ///
WiredHome 19:3f82c1161fd2 722 /// Draws it using the foreground color setting.
WiredHome 19:3f82c1161fd2 723 ///
WiredHome 19:3f82c1161fd2 724 /// @param x is the horizontal center of the ellipse.
WiredHome 19:3f82c1161fd2 725 /// @param y is the vertical center of the ellipse.
WiredHome 22:f6ea795eb541 726 /// @param radius1 defines the horizontal radius of the ellipse.
WiredHome 22:f6ea795eb541 727 /// @param radius2 defines the vertical radius of the ellipse.
WiredHome 19:3f82c1161fd2 728 /// @param fillit defines whether the circle is filled or not.
WiredHome 19:3f82c1161fd2 729 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 730 ///
WiredHome 37:f19b7e7449dc 731 RetCode_t ellipse(loc_t x, loc_t y, dim_t radius1, dim_t radius2, fill_t fillit = NOFILL);
WiredHome 19:3f82c1161fd2 732
WiredHome 19:3f82c1161fd2 733 /// Control display power
WiredHome 19:3f82c1161fd2 734 ///
WiredHome 19:3f82c1161fd2 735 /// @param on when set to true will turn on the display, when false it is turned off.
WiredHome 19:3f82c1161fd2 736 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 737 ///
WiredHome 19:3f82c1161fd2 738 RetCode_t Power(bool on);
WiredHome 19:3f82c1161fd2 739
WiredHome 19:3f82c1161fd2 740 /// Reset the display controller via the Software Reset interface.
WiredHome 19:3f82c1161fd2 741 ///
WiredHome 19:3f82c1161fd2 742 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 743 ///
WiredHome 19:3f82c1161fd2 744 RetCode_t Reset(void);
WiredHome 19:3f82c1161fd2 745
WiredHome 19:3f82c1161fd2 746 /// Set backlight brightness.
WiredHome 19:3f82c1161fd2 747 ///
WiredHome 19:3f82c1161fd2 748 /// When the built-in PWM is used to control the backlight, this
WiredHome 19:3f82c1161fd2 749 /// API can be used to set the brightness.
WiredHome 19:3f82c1161fd2 750 ///
WiredHome 19:3f82c1161fd2 751 /// @param brightness ranges from 0 (off) to 255 (full on)
WiredHome 19:3f82c1161fd2 752 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 753 ///
WiredHome 19:3f82c1161fd2 754 RetCode_t Backlight_u8(unsigned char brightness);
WiredHome 19:3f82c1161fd2 755
WiredHome 19:3f82c1161fd2 756 /// Set backlight brightness.
WiredHome 19:3f82c1161fd2 757 ///
WiredHome 19:3f82c1161fd2 758 /// When the built-in PWM is used to control the backlight, this
WiredHome 19:3f82c1161fd2 759 /// API can be used to set the brightness.
WiredHome 19:3f82c1161fd2 760 ///
WiredHome 19:3f82c1161fd2 761 /// @param brightness ranges from 0.0 (off) to 1.0 (full on)
WiredHome 19:3f82c1161fd2 762 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 763 ///
WiredHome 19:3f82c1161fd2 764 RetCode_t Backlight(float brightness);
WiredHome 19:3f82c1161fd2 765
WiredHome 32:0e4f2ae512e2 766 /// Select a bitmap font (provided by the user) for all subsequent text.
WiredHome 19:3f82c1161fd2 767 ///
WiredHome 19:3f82c1161fd2 768 /// @note Tool to create the fonts is accessible from its creator
WiredHome 19:3f82c1161fd2 769 /// available at http://www.mikroe.com.
WiredHome 19:3f82c1161fd2 770 /// Change the data to an array of type char[].
WiredHome 19:3f82c1161fd2 771 ///
WiredHome 19:3f82c1161fd2 772 /// @param font is a pointer to a specially formed font array.
WiredHome 19:3f82c1161fd2 773 /// This special font array has a 4-byte header, followed by
WiredHome 19:3f82c1161fd2 774 /// the data:
WiredHome 19:3f82c1161fd2 775 /// - the number of bytes per char
WiredHome 19:3f82c1161fd2 776 /// - the vertical size in pixels for each character
WiredHome 19:3f82c1161fd2 777 /// - the horizontal size in pixels for each character
WiredHome 19:3f82c1161fd2 778 /// - the number of bytes per vertical line (width of the array)
WiredHome 19:3f82c1161fd2 779 /// @returns error code.
WiredHome 19:3f82c1161fd2 780 ///
WiredHome 30:e0f2da88bdf6 781 virtual RetCode_t set_font(const unsigned char * font = NULL);
WiredHome 19:3f82c1161fd2 782
WiredHome 19:3f82c1161fd2 783 /// Get the RGB value for a DOS color.
WiredHome 19:3f82c1161fd2 784 ///
WiredHome 19:3f82c1161fd2 785 /// @param i is the color, in the range 0 to 15;
WiredHome 19:3f82c1161fd2 786 /// @returns the RGB color of the selected index, or 0
WiredHome 19:3f82c1161fd2 787 /// if the index is out of bounds.
WiredHome 19:3f82c1161fd2 788 ///
WiredHome 19:3f82c1161fd2 789 color_t DOSColor(int i);
WiredHome 19:3f82c1161fd2 790
WiredHome 19:3f82c1161fd2 791 /// Get the color name (string) for a DOS color.
WiredHome 19:3f82c1161fd2 792 ///
WiredHome 19:3f82c1161fd2 793 /// @param i is the color, in the range 0 to 15;
WiredHome 19:3f82c1161fd2 794 /// @returns a pointer to a string with the color name,
WiredHome 19:3f82c1161fd2 795 /// or NULL if the index is out of bounds.
WiredHome 19:3f82c1161fd2 796 ///
WiredHome 19:3f82c1161fd2 797 const char * DOSColorNames(int i);
WiredHome 19:3f82c1161fd2 798
WiredHome 19:3f82c1161fd2 799
WiredHome 19:3f82c1161fd2 800 #ifdef PERF_METRICS
WiredHome 19:3f82c1161fd2 801 /// Clear the performance metrics to zero.
WiredHome 19:3f82c1161fd2 802 void ClearPerformance();
WiredHome 19:3f82c1161fd2 803
WiredHome 19:3f82c1161fd2 804 /// Report the performance metrics for drawing functions using
WiredHome 19:3f82c1161fd2 805 /// printf()
WiredHome 19:3f82c1161fd2 806 void ReportPerformance();
WiredHome 19:3f82c1161fd2 807 #endif
WiredHome 19:3f82c1161fd2 808
WiredHome 19:3f82c1161fd2 809 private:
WiredHome 19:3f82c1161fd2 810 /// Set the SPI port frequency (in Hz).
WiredHome 19:3f82c1161fd2 811 ///
WiredHome 19:3f82c1161fd2 812 /// @note attempts to call this API at runtime, with the display
WiredHome 19:3f82c1161fd2 813 /// already online, cause the system to lockup.
WiredHome 19:3f82c1161fd2 814 /// Not sure why, so moving this to private to run once.
WiredHome 19:3f82c1161fd2 815 ///
WiredHome 19:3f82c1161fd2 816 /// This uses the mbed SPI driver, and is therefore dependent on
WiredHome 19:3f82c1161fd2 817 /// its capabilities. Limited tests were performed for the display
WiredHome 19:3f82c1161fd2 818 /// in the range of 1,000,000 to 50,000,000 Hz. The display was
WiredHome 19:3f82c1161fd2 819 /// a bit erratic above 20,000,000 Hz, so this became the default,
WiredHome 19:3f82c1161fd2 820 /// even though it might have been the bench-level wiring that posed
WiredHome 19:3f82c1161fd2 821 /// the limit.
WiredHome 19:3f82c1161fd2 822 ///
WiredHome 19:3f82c1161fd2 823 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 824 ///
WiredHome 19:3f82c1161fd2 825 RetCode_t frequency(unsigned long Hz = RA8875_DEFAULT_SPI_FREQ);
WiredHome 19:3f82c1161fd2 826
WiredHome 19:3f82c1161fd2 827
WiredHome 19:3f82c1161fd2 828 /// Initialize the chip, which is normally done as part of the
WiredHome 19:3f82c1161fd2 829 /// constructor, so not called by the user.
WiredHome 19:3f82c1161fd2 830 ///
WiredHome 19:3f82c1161fd2 831 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 832 ///
WiredHome 19:3f82c1161fd2 833 RetCode_t init(void);
WiredHome 19:3f82c1161fd2 834
WiredHome 32:0e4f2ae512e2 835 /// method indicating the start of a graphics stream.
WiredHome 32:0e4f2ae512e2 836 ///
WiredHome 32:0e4f2ae512e2 837 /// This is called prior to a stream of pixel data being sent.
WiredHome 32:0e4f2ae512e2 838 /// This may cause register configuration changes in the derived
WiredHome 32:0e4f2ae512e2 839 /// class in order to prepare the hardware to accept the streaming
WiredHome 32:0e4f2ae512e2 840 /// data.
WiredHome 32:0e4f2ae512e2 841 ///
WiredHome 32:0e4f2ae512e2 842 /// Following this command, a series of @see putp() commands can
WiredHome 32:0e4f2ae512e2 843 /// be used to send individual pixels to the screen.
WiredHome 32:0e4f2ae512e2 844 ///
WiredHome 32:0e4f2ae512e2 845 /// To conclude the graphics stream, @see _EndGraphicsStream should
WiredHome 32:0e4f2ae512e2 846 /// be callled.
WiredHome 32:0e4f2ae512e2 847 ///
WiredHome 32:0e4f2ae512e2 848 /// @returns error code.
WiredHome 32:0e4f2ae512e2 849 ///
WiredHome 32:0e4f2ae512e2 850 virtual RetCode_t _StartGraphicsStream(void);
WiredHome 32:0e4f2ae512e2 851
WiredHome 32:0e4f2ae512e2 852 /// method to put a single color pixel to the screen.
WiredHome 32:0e4f2ae512e2 853 ///
WiredHome 32:0e4f2ae512e2 854 /// This method may be called as many times as necessary after
WiredHome 32:0e4f2ae512e2 855 /// @see _StartGraphicsStream() is called, and it should be followed
WiredHome 32:0e4f2ae512e2 856 /// by _EndGraphicsStream.
WiredHome 32:0e4f2ae512e2 857 ///
WiredHome 32:0e4f2ae512e2 858 /// @param pixel is a color value to be put on the screen.
WiredHome 32:0e4f2ae512e2 859 /// @returns error code.
WiredHome 32:0e4f2ae512e2 860 ///
WiredHome 32:0e4f2ae512e2 861 virtual RetCode_t putp(color_t pixel);
WiredHome 32:0e4f2ae512e2 862
WiredHome 32:0e4f2ae512e2 863 /// method indicating the end of a graphics stream.
WiredHome 32:0e4f2ae512e2 864 ///
WiredHome 32:0e4f2ae512e2 865 /// This is called to conclude a stream of pixel data that was sent.
WiredHome 32:0e4f2ae512e2 866 /// This may cause register configuration changes in the derived
WiredHome 32:0e4f2ae512e2 867 /// class in order to stop the hardware from accept the streaming
WiredHome 32:0e4f2ae512e2 868 /// data.
WiredHome 32:0e4f2ae512e2 869 ///
WiredHome 32:0e4f2ae512e2 870 /// @returns error code.
WiredHome 32:0e4f2ae512e2 871 ///
WiredHome 32:0e4f2ae512e2 872 virtual RetCode_t _EndGraphicsStream(void);
WiredHome 32:0e4f2ae512e2 873
WiredHome 29:422616aa04bd 874 /// Internal function to put a character using the built-in (internal) font engine
WiredHome 29:422616aa04bd 875 ///
WiredHome 29:422616aa04bd 876 /// @param is the character to put to the screen.
WiredHome 29:422616aa04bd 877 /// @returns the character put.
WiredHome 29:422616aa04bd 878 ///
WiredHome 29:422616aa04bd 879 int _internal_putc(int c);
WiredHome 29:422616aa04bd 880
WiredHome 29:422616aa04bd 881 /// Internal function to put a character using the external font engine
WiredHome 29:422616aa04bd 882 ///
WiredHome 29:422616aa04bd 883 /// @param is the character to put to the screen.
WiredHome 29:422616aa04bd 884 /// @returns the character put.
WiredHome 29:422616aa04bd 885 ///
WiredHome 29:422616aa04bd 886 int _external_putc(int c);
WiredHome 29:422616aa04bd 887
WiredHome 19:3f82c1161fd2 888 /// Select the peripheral to use it.
WiredHome 19:3f82c1161fd2 889 ///
WiredHome 19:3f82c1161fd2 890 /// @param chipsel when true will select the peripheral, and when false
WiredHome 19:3f82c1161fd2 891 /// will deselect the chip. This is the logical selection, and
WiredHome 19:3f82c1161fd2 892 /// the pin selection is the invert of this.
WiredHome 19:3f82c1161fd2 893 /// @returns success/failure code. @see RetCode_t.
WiredHome 19:3f82c1161fd2 894 ///
WiredHome 19:3f82c1161fd2 895 RetCode_t select(bool chipsel);
WiredHome 19:3f82c1161fd2 896
WiredHome 19:3f82c1161fd2 897 /// The most primitive - to write a data value to the SPI interface.
WiredHome 19:3f82c1161fd2 898 ///
WiredHome 19:3f82c1161fd2 899 /// @param data is the value to write.
WiredHome 19:3f82c1161fd2 900 /// @returns a value read from the port, since SPI is often shift
WiredHome 19:3f82c1161fd2 901 /// in while shifting out.
WiredHome 19:3f82c1161fd2 902 ///
WiredHome 19:3f82c1161fd2 903 unsigned char spiwrite(unsigned char data);
WiredHome 19:3f82c1161fd2 904
WiredHome 19:3f82c1161fd2 905 /// The most primitive - to read a data value to the SPI interface.
WiredHome 19:3f82c1161fd2 906 ///
WiredHome 19:3f82c1161fd2 907 /// This is really just a specialcase of the write command, where
WiredHome 19:3f82c1161fd2 908 /// the value zero is written in order to read.
WiredHome 19:3f82c1161fd2 909 ///
WiredHome 19:3f82c1161fd2 910 /// @returns a value read from the port, since SPI is often shift
WiredHome 19:3f82c1161fd2 911 /// in while shifting out.
WiredHome 19:3f82c1161fd2 912 ///
WiredHome 19:3f82c1161fd2 913 unsigned char spiread();
WiredHome 19:3f82c1161fd2 914
WiredHome 19:3f82c1161fd2 915 SPI spi; ///< spi port
WiredHome 19:3f82c1161fd2 916 DigitalOut cs; ///< chip select pin, assumed active low
WiredHome 19:3f82c1161fd2 917 DigitalOut res; ///< reset pin, assumed active low
WiredHome 19:3f82c1161fd2 918 const unsigned char * font; ///< reference to an external font somewhere in memory
WiredHome 37:f19b7e7449dc 919 loc_t cursor_x, cursor_y; ///< used for external fonts only
WiredHome 19:3f82c1161fd2 920
WiredHome 19:3f82c1161fd2 921 #ifdef PERF_METRICS
WiredHome 19:3f82c1161fd2 922 typedef enum
WiredHome 19:3f82c1161fd2 923 {
WiredHome 19:3f82c1161fd2 924 PRF_CLS,
WiredHome 19:3f82c1161fd2 925 PRF_DRAWPOINT,
WiredHome 19:3f82c1161fd2 926 PRF_DRAWLINE,
WiredHome 19:3f82c1161fd2 927 PRF_DRAWRECTANGLE,
WiredHome 19:3f82c1161fd2 928 PRF_DRAWROUNDEDRECTANGLE,
WiredHome 19:3f82c1161fd2 929 PRF_DRAWTRIANGLE,
WiredHome 19:3f82c1161fd2 930 PRF_DRAWCIRCLE,
WiredHome 19:3f82c1161fd2 931 PRF_DRAWELLIPSE,
WiredHome 19:3f82c1161fd2 932 METRICCOUNT
WiredHome 19:3f82c1161fd2 933 } method_e;
WiredHome 19:3f82c1161fd2 934 unsigned long metrics[METRICCOUNT];
WiredHome 19:3f82c1161fd2 935 void RegisterPerformance(method_e method);
WiredHome 19:3f82c1161fd2 936 Timer performance;
WiredHome 19:3f82c1161fd2 937 #endif
WiredHome 19:3f82c1161fd2 938 };
WiredHome 19:3f82c1161fd2 939
WiredHome 19:3f82c1161fd2 940 //} // namespace
WiredHome 19:3f82c1161fd2 941
WiredHome 19:3f82c1161fd2 942 //using namespace SW_graphics;
WiredHome 19:3f82c1161fd2 943
WiredHome 23:a50ded45dbaf 944
WiredHome 23:a50ded45dbaf 945 #ifdef TESTENABLE
WiredHome 23:a50ded45dbaf 946 // ______________ ______________ ______________ _______________
WiredHome 23:a50ded45dbaf 947 // /_____ _____/ / ___________/ / ___________/ /_____ ______/
WiredHome 23:a50ded45dbaf 948 // / / / / / / / /
WiredHome 23:a50ded45dbaf 949 // / / / /___ / /__________ / /
WiredHome 23:a50ded45dbaf 950 // / / / ____/ /__________ / / /
WiredHome 23:a50ded45dbaf 951 // / / / / / / / /
WiredHome 23:a50ded45dbaf 952 // / / / /__________ ___________/ / / /
WiredHome 23:a50ded45dbaf 953 // /__/ /_____________/ /_____________/ /__/
WiredHome 23:a50ded45dbaf 954
WiredHome 23:a50ded45dbaf 955 #include "WebColors.h"
WiredHome 23:a50ded45dbaf 956 #include "Arial12x12.h"
WiredHome 23:a50ded45dbaf 957 #include <algorithm>
WiredHome 23:a50ded45dbaf 958
WiredHome 23:a50ded45dbaf 959 extern "C" void mbed_reset();
WiredHome 23:a50ded45dbaf 960
WiredHome 23:a50ded45dbaf 961 /// This activates a small set of tests for the graphics library.
WiredHome 23:a50ded45dbaf 962 ///
WiredHome 23:a50ded45dbaf 963 /// Call this API and pass it the reference to the display class.
WiredHome 23:a50ded45dbaf 964 /// It will then run a series of tests. It accepts interaction via
WiredHome 23:a50ded45dbaf 965 /// stdin to switch from automatic test mode to manual, run a specific
WiredHome 23:a50ded45dbaf 966 /// test, or to exit the test mode.
WiredHome 23:a50ded45dbaf 967 ///
WiredHome 23:a50ded45dbaf 968 /// @param lcd is a reference to the display class.
WiredHome 23:a50ded45dbaf 969 /// @param pc is a reference to a serial interface, typically the USB to PC.
WiredHome 23:a50ded45dbaf 970 ///
WiredHome 23:a50ded45dbaf 971 void RunTestSet(RA8875 & lcd, Serial & pc);
WiredHome 23:a50ded45dbaf 972
WiredHome 23:a50ded45dbaf 973
WiredHome 23:a50ded45dbaf 974 // To enable the test code, uncomment this section, or copy the
WiredHome 23:a50ded45dbaf 975 // necessary pieces to your "main()".
WiredHome 23:a50ded45dbaf 976 //
WiredHome 23:a50ded45dbaf 977 // #include "mbed.h"
WiredHome 23:a50ded45dbaf 978 // #include "RA8875.h"
WiredHome 23:a50ded45dbaf 979 // RA8875 lcd(p5, p6, p7, p12, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
WiredHome 23:a50ded45dbaf 980 // Serial pc(USBTX, USBRX);
WiredHome 23:a50ded45dbaf 981 // extern "C" void mbed_reset();
WiredHome 23:a50ded45dbaf 982 // int main()
WiredHome 23:a50ded45dbaf 983 // {
WiredHome 23:a50ded45dbaf 984 // pc.baud(460800); // I like a snappy terminal, so crank it up!
WiredHome 23:a50ded45dbaf 985 // pc.printf("\r\nRA8875 Test - Build " __DATE__ " " __TIME__ "\r\n");
WiredHome 23:a50ded45dbaf 986 //
WiredHome 23:a50ded45dbaf 987 // pc.printf("Turning on display\r\n");
WiredHome 23:a50ded45dbaf 988 // lcd.Reset();
WiredHome 23:a50ded45dbaf 989 // lcd.Power(true); // display power is on, but the backlight is independent
WiredHome 23:a50ded45dbaf 990 // lcd.Backlight(0.5);
WiredHome 23:a50ded45dbaf 991 // RunTestSet(lcd, pc);
WiredHome 23:a50ded45dbaf 992 // }
WiredHome 23:a50ded45dbaf 993
WiredHome 23:a50ded45dbaf 994 #endif // TESTENABLE
WiredHome 23:a50ded45dbaf 995
WiredHome 19:3f82c1161fd2 996 #endif