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:
Wed Jan 15 12:24:54 2014 +0000
Revision:
23:a50ded45dbaf
Parent:
22:f6ea795eb541
Child:
24:8ca861acf12d
Some improvements to text APIs, and migration of the test code into the library (behind a #ifdef).

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