Driver for 4D Systems LCD screen with Picaso processor. Ported from 4D Systems Picaso Serial Linux Library

Dependencies:   MODSERIAL

Dependents:   uLCD_4D_24PTU Drawing Program RoommateTracker_ScreenAndPhone ece4180_roommate_tracker_final

Committer:
admcrae
Date:
Tue Mar 10 19:01:56 2015 +0000
Revision:
4:30010dda3b34
Parent:
2:ebe7029e2825
Child:
5:ec04cd4e98ce
Continuing to work on doxygen comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
admcrae 4:30010dda3b34 1 /** @file uLCD_4D_Picaso.h
admcrae 4:30010dda3b34 2 *
admcrae 0:e314f3b805ed 3 * This is a class to drive 4D systems screens with Picaso graphics processors
admcrae 0:e314f3b805ed 4 *
admcrae 0:e314f3b805ed 5 * This is a port of the 4D systems Picaso Serial Linux Library
admcrae 0:e314f3b805ed 6 * Copyright (c) 2014 4D Systems PTY Ltd, Sydney, Australia
admcrae 0:e314f3b805ed 7 * From https://github.com/4dsystems/Picaso-Serial-Linux-Library, retrieved March 5, 2015
admcrae 0:e314f3b805ed 8 *
admcrae 0:e314f3b805ed 9 * All software in this library is provided without warranty; use at your own risk.
admcrae 0:e314f3b805ed 10 */
admcrae 0:e314f3b805ed 11
admcrae 0:e314f3b805ed 12 #ifndef uLCD_4D_Picaso_H
admcrae 0:e314f3b805ed 13 #define uLCD_4D_Picaso_H
admcrae 0:e314f3b805ed 14
admcrae 4:30010dda3b34 15 /** @define LCD_USING_MODSERIAL
admcrae 4:30010dda3b34 16 *
admcrae 4:30010dda3b34 17 * This library can work with either the standard mbed Serial library or with the MODSERIAL
admcrae 4:30010dda3b34 18 * library by Andy Kirkham. MODSERIAL allows RX buffering, which could prevent dropped characters
admcrae 4:30010dda3b34 19 * at high baud rates. The version of MODSERIAL by Erik Olieman, which is supposed to support more
admcrae 4:30010dda3b34 20 * devices, does not appear to work with this library at present, for unknown reasons.
admcrae 4:30010dda3b34 21 */
admcrae 0:e314f3b805ed 22 #define LCD_USING_MODSERIAL 1
admcrae 0:e314f3b805ed 23
admcrae 0:e314f3b805ed 24 #include "mbed.h"
admcrae 2:ebe7029e2825 25 #include "Picaso_enums.h"
admcrae 0:e314f3b805ed 26
admcrae 0:e314f3b805ed 27 #if LCD_USING_MODSERIAL
admcrae 0:e314f3b805ed 28 #include "MODSERIAL.h"
admcrae 0:e314f3b805ed 29 #endif
admcrae 0:e314f3b805ed 30
admcrae 2:ebe7029e2825 31
admcrae 2:ebe7029e2825 32
admcrae 4:30010dda3b34 33 /**
admcrae 4:30010dda3b34 34 * @class uLCD_4D_Picaso
admcrae 4:30010dda3b34 35 *
admcrae 4:30010dda3b34 36 * This class contains all of the Picaso Serial C library functions, ported to mbed.
admcrae 4:30010dda3b34 37 */
admcrae 0:e314f3b805ed 38 class uLCD_4D_Picaso {
admcrae 0:e314f3b805ed 39 public:
admcrae 0:e314f3b805ed 40
admcrae 2:ebe7029e2825 41 /**
admcrae 2:ebe7029e2825 42 * Class constructor
admcrae 4:30010dda3b34 43 *
admcrae 2:ebe7029e2825 44 * @param tx Serial transmit pin.
admcrae 2:ebe7029e2825 45 * @param rx Serial receive pin.
admcrae 2:ebe7029e2825 46 * @param reset Reset GPIO pin.
admcrae 2:ebe7029e2825 47 */
admcrae 0:e314f3b805ed 48 uLCD_4D_Picaso(PinName tx, PinName rx, PinName reset);
admcrae 2:ebe7029e2825 49
admcrae 2:ebe7029e2825 50 /**
admcrae 2:ebe7029e2825 51 * Resets the LCD screen (takes 3 seconds).
admcrae 2:ebe7029e2825 52 */
admcrae 0:e314f3b805ed 53 void LCD_reset();
admcrae 0:e314f3b805ed 54
admcrae 2:ebe7029e2825 55
admcrae 2:ebe7029e2825 56 // LCD text commands:
admcrae 2:ebe7029e2825 57
admcrae 2:ebe7029e2825 58 /**
admcrae 2:ebe7029e2825 59 * Prints single character to screen.
admcrae 2:ebe7029e2825 60 * @param Character to be printed.
admcrae 2:ebe7029e2825 61 */
admcrae 2:ebe7029e2825 62 void putCH(uint16_t Character);
admcrae 2:ebe7029e2825 63
admcrae 2:ebe7029e2825 64 /**
admcrae 2:ebe7029e2825 65 * Prints null-terminated string to screen.
admcrae 2:ebe7029e2825 66 * @param InString String to be printed. Maximum length is 511 characters plus null.
admcrae 2:ebe7029e2825 67 * @return Number of characters printed.
admcrae 2:ebe7029e2825 68 */
admcrae 2:ebe7029e2825 69 uint16_t putStr(char *InString);
admcrae 2:ebe7029e2825 70
admcrae 2:ebe7029e2825 71 /**
admcrae 2:ebe7029e2825 72 * Moves text cursor to specified line and column (based on font size), with (0, 0) being the top-left corner.
admcrae 2:ebe7029e2825 73 */
admcrae 2:ebe7029e2825 74 void txt_MoveCursor(uint16_t Line, uint16_t Column);
admcrae 2:ebe7029e2825 75
admcrae 2:ebe7029e2825 76 /**
admcrae 2:ebe7029e2825 77 * Sets text bold, italic, inverse, and underlined attributes.
admcrae 2:ebe7029e2825 78 * @param Attribs Word containing attribute flags. OR attribute constants together to set multiple.
admcrae 2:ebe7029e2825 79 * @return Previous text attribute word.
admcrae 2:ebe7029e2825 80 */
admcrae 2:ebe7029e2825 81 Picaso::TextAttribute txt_Attributes(Picaso::TextAttribute Attribs);
admcrae 2:ebe7029e2825 82
admcrae 2:ebe7029e2825 83 /**
admcrae 2:ebe7029e2825 84 * Sets text inverse attribute.
admcrae 2:ebe7029e2825 85 * @return Previous setting.
admcrae 2:ebe7029e2825 86 */
admcrae 2:ebe7029e2825 87 uint16_t txt_Inverse(uint16_t Inverse);
admcrae 2:ebe7029e2825 88
admcrae 2:ebe7029e2825 89 /**
admcrae 2:ebe7029e2825 90 * Sets text italic attribute.
admcrae 2:ebe7029e2825 91 * @return Previous setting.
admcrae 2:ebe7029e2825 92 */
admcrae 2:ebe7029e2825 93 uint16_t txt_Italic(uint16_t Italic);
admcrae 2:ebe7029e2825 94
admcrae 2:ebe7029e2825 95 /**
admcrae 2:ebe7029e2825 96 * Sets text bold attribute.
admcrae 2:ebe7029e2825 97 * @return Previous setting.
admcrae 2:ebe7029e2825 98 */
admcrae 2:ebe7029e2825 99 uint16_t txt_Bold(uint16_t Bold);
admcrae 2:ebe7029e2825 100
admcrae 2:ebe7029e2825 101 /**
admcrae 2:ebe7029e2825 102 * Sets text underline attribute.
admcrae 2:ebe7029e2825 103 * @return Previous setting.
admcrae 2:ebe7029e2825 104 */
admcrae 2:ebe7029e2825 105 uint16_t txt_Underline(uint16_t Underline);
admcrae 2:ebe7029e2825 106
admcrae 2:ebe7029e2825 107 /**
admcrae 2:ebe7029e2825 108 * Sets text background color.
admcrae 2:ebe7029e2825 109 * @return Previous color setting.
admcrae 2:ebe7029e2825 110 */
admcrae 2:ebe7029e2825 111 Picaso::Color txt_BGcolour(Picaso::Color Color);
admcrae 2:ebe7029e2825 112
admcrae 2:ebe7029e2825 113 /*
admcrae 2:ebe7029e2825 114 * Sets text foreground color.
admcrae 2:ebe7029e2825 115 * @return Previous color setting.
admcrae 2:ebe7029e2825 116 */
admcrae 2:ebe7029e2825 117 Picaso::Color txt_FGcolour(Picaso::Color Color);
admcrae 2:ebe7029e2825 118
admcrae 2:ebe7029e2825 119 /**
admcrae 2:ebe7029e2825 120 * Sets text background opacity (i.e. whether background pixels are drawn).
admcrae 2:ebe7029e2825 121 * @return Previous setting.
admcrae 2:ebe7029e2825 122 */
admcrae 2:ebe7029e2825 123 Picaso::TextOpacity txt_Opacity(Picaso::TextOpacity TransparentOpaque);
admcrae 2:ebe7029e2825 124
admcrae 2:ebe7029e2825 125 /**
admcrae 2:ebe7029e2825 126 * Sets text font. Note that one can also pass a handle to a file with a font: see Picaso Serial Command Manual for more information.
admcrae 2:ebe7029e2825 127 * @return Previous setting.
admcrae 2:ebe7029e2825 128 */
admcrae 2:ebe7029e2825 129 Picaso::Font txt_FontID(Picaso::Font FontNumber);
admcrae 2:ebe7029e2825 130
admcrae 2:ebe7029e2825 131 /**
admcrae 2:ebe7029e2825 132 * Sets text font height.
admcrae 2:ebe7029e2825 133 * @param Multiplier Font height as multiple of default.
admcrae 2:ebe7029e2825 134 * @return Previous setting.
admcrae 2:ebe7029e2825 135 */
admcrae 2:ebe7029e2825 136 uint16_t txt_Height(uint16_t Multiplier);
admcrae 2:ebe7029e2825 137
admcrae 2:ebe7029e2825 138 /**
admcrae 2:ebe7029e2825 139 * Sets text font width.
admcrae 2:ebe7029e2825 140 * @param Multiplier Font width as multiple of default.
admcrae 2:ebe7029e2825 141 * @return Previous setting.
admcrae 2:ebe7029e2825 142 */
admcrae 2:ebe7029e2825 143 uint16_t txt_Width(uint16_t Multiplier);
admcrae 2:ebe7029e2825 144
admcrae 2:ebe7029e2825 145 /**
admcrae 2:ebe7029e2825 146 * Returns the height, in pixels, of a given character under the current font settings. If height is greater than 255, the returned value will be modulo 8.
admcrae 2:ebe7029e2825 147 */
admcrae 2:ebe7029e2825 148 uint16_t charheight(char TestChar);
admcrae 2:ebe7029e2825 149
admcrae 2:ebe7029e2825 150 /**
admcrae 2:ebe7029e2825 151 * Returns the width, in pixels, of a given character under the current font settings. If width is greater than 255, the returned value will be modulo 8.
admcrae 2:ebe7029e2825 152 */
admcrae 2:ebe7029e2825 153 uint16_t charwidth(char TestChar);
admcrae 2:ebe7029e2825 154
admcrae 2:ebe7029e2825 155 /**
admcrae 2:ebe7029e2825 156 * Sets the pixel position (from left side) at which text wraps around on right side.
admcrae 2:ebe7029e2825 157 * @return Previous setting.
admcrae 2:ebe7029e2825 158 */
admcrae 2:ebe7029e2825 159 uint16_t txt_Wrap(uint16_t Position);
admcrae 2:ebe7029e2825 160
admcrae 2:ebe7029e2825 161 /**
admcrae 2:ebe7029e2825 162 * Sets gap, in pixels, between characters in the x-direction.
admcrae 2:ebe7029e2825 163 * @return Previous setting.
admcrae 2:ebe7029e2825 164 */
admcrae 2:ebe7029e2825 165 uint16_t txt_Xgap(uint16_t Pixels);
admcrae 2:ebe7029e2825 166
admcrae 2:ebe7029e2825 167 /**
admcrae 2:ebe7029e2825 168 * Sets gap, in pixels, between characters in the y-direction.
admcrae 2:ebe7029e2825 169 * @return Previous setting.
admcrae 2:ebe7029e2825 170 */
admcrae 2:ebe7029e2825 171 uint16_t txt_Ygap(uint16_t Pixels);
admcrae 2:ebe7029e2825 172
admcrae 2:ebe7029e2825 173 /**
admcrae 2:ebe7029e2825 174 * Sets one of several text attributes. Most attributes can be set by other functions.
admcrae 2:ebe7029e2825 175 * @param Func Attribute to set.
admcrae 2:ebe7029e2825 176 * @param Value Value to set parameter. See TextSetFunc definition for more information.
admcrae 2:ebe7029e2825 177 */
admcrae 2:ebe7029e2825 178 void txt_Set(Picaso::TextSetFunc Func, uint16_t Value);
admcrae 2:ebe7029e2825 179
admcrae 2:ebe7029e2825 180
admcrae 2:ebe7029e2825 181 // LCD graphics commands:
admcrae 2:ebe7029e2825 182
admcrae 2:ebe7029e2825 183 /**
admcrae 2:ebe7029e2825 184 * Clears screen and sets several attributes (such as transparency, outline color, opacity, pen style, line patterning,
admcrae 2:ebe7029e2825 185 * text wrap position, text size, and origin) to their default values.
admcrae 2:ebe7029e2825 186 */
admcrae 0:e314f3b805ed 187 void gfx_Cls(void);
admcrae 2:ebe7029e2825 188
admcrae 2:ebe7029e2825 189 /**
admcrae 2:ebe7029e2825 190 * Changes all pixels on the screen of OldColor to NewColor.
admcrae 2:ebe7029e2825 191 */
admcrae 2:ebe7029e2825 192 void gfx_ChangeColour(uint16_t OldColor, uint16_t NewColor);
admcrae 2:ebe7029e2825 193
admcrae 2:ebe7029e2825 194 /**
admcrae 2:ebe7029e2825 195 * Draws pixel of color Color at (X, Y).
admcrae 2:ebe7029e2825 196 */
admcrae 2:ebe7029e2825 197 void gfx_PutPixel(uint16_t X, uint16_t Y, Picaso::Color Color);
admcrae 2:ebe7029e2825 198
admcrae 2:ebe7029e2825 199 /**
admcrae 2:ebe7029e2825 200 * Returns current color of pixel at (X, Y).
admcrae 2:ebe7029e2825 201 */
admcrae 2:ebe7029e2825 202 Picaso::Color gfx_GetPixel(uint16_t X, uint16_t Y);
admcrae 2:ebe7029e2825 203
admcrae 2:ebe7029e2825 204 /**
admcrae 2:ebe7029e2825 205 * Draws (unfilled) circle on screen.
admcrae 2:ebe7029e2825 206 * @param X,Y Coordinates (in pixels) of circle's center.
admcrae 2:ebe7029e2825 207 * @param Radius Radius of circle.
admcrae 2:ebe7029e2825 208 * @param Color Color of circle.
admcrae 2:ebe7029e2825 209 */
admcrae 2:ebe7029e2825 210 void gfx_Circle(uint16_t X, uint16_t Y, uint16_t Radius, Picaso::Color Color);
admcrae 2:ebe7029e2825 211
admcrae 2:ebe7029e2825 212 /**
admcrae 2:ebe7029e2825 213 * Draws filled circle on screen.
admcrae 2:ebe7029e2825 214 * @param X,Y Coordinates (in pixels) of circle's center.
admcrae 2:ebe7029e2825 215 * @param Radius Radius of circle.
admcrae 2:ebe7029e2825 216 * @param Color Color of circle.
admcrae 2:ebe7029e2825 217 */
admcrae 2:ebe7029e2825 218 void gfx_CircleFilled(uint16_t X, uint16_t Y, uint16_t Radius, Picaso::Color Color);
admcrae 2:ebe7029e2825 219
admcrae 2:ebe7029e2825 220 /**
admcrae 2:ebe7029e2825 221 * Draws line from (X1, Y1) to (X2, Y2) with color Color
admcrae 2:ebe7029e2825 222 */
admcrae 2:ebe7029e2825 223 void gfx_Line(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, Picaso::Color Color);
admcrae 2:ebe7029e2825 224
admcrae 2:ebe7029e2825 225 /**
admcrae 2:ebe7029e2825 226 * Draws unfilled rectangle on screen.
admcrae 2:ebe7029e2825 227 * @param X1,Y1 Coordinates of top-left corner of rectangle.
admcrae 2:ebe7029e2825 228 * @param X2,Y2 Coordinates of bottom-right corner of rectangle.
admcrae 2:ebe7029e2825 229 * @param Color of rectangle.
admcrae 2:ebe7029e2825 230 */
admcrae 2:ebe7029e2825 231 void gfx_Rectangle(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, Picaso::Color Color);
admcrae 2:ebe7029e2825 232
admcrae 2:ebe7029e2825 233 /**
admcrae 2:ebe7029e2825 234 * Draws filled rectangle on screen.
admcrae 2:ebe7029e2825 235 * @param X1,Y1 Coordinates of top-left corner of rectangle.
admcrae 2:ebe7029e2825 236 * @param X2,Y2 Coordinates of bottom-right corner of rectangle.
admcrae 2:ebe7029e2825 237 * @param Color of rectangle.
admcrae 2:ebe7029e2825 238 */
admcrae 2:ebe7029e2825 239 void gfx_RectangleFilled(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, Picaso::Color Color);
admcrae 2:ebe7029e2825 240
admcrae 2:ebe7029e2825 241 /**
admcrae 2:ebe7029e2825 242 * Plots line between a sequence of points.
admcrae 2:ebe7029e2825 243 * @param n Number of vertices.
admcrae 2:ebe7029e2825 244 * @param Xvalues,Yvalues Arrays of size n containing the coordinates of each vertex.
admcrae 2:ebe7029e2825 245 * @param Color Color of line.
admcrae 2:ebe7029e2825 246 */
admcrae 2:ebe7029e2825 247 void gfx_Polyline(uint16_t n, uint16_t* Xvalues, uint16_t* Yvalues, Picaso::Color Color);
admcrae 2:ebe7029e2825 248
admcrae 2:ebe7029e2825 249 /**
admcrae 2:ebe7029e2825 250 * Draws unfilled polygon on screen.
admcrae 2:ebe7029e2825 251 * @param n Number of vertices.
admcrae 2:ebe7029e2825 252 * @param Xvalues,Yvalues Arrays of size n contianing the coordinates of each vertex.
admcrae 2:ebe7029e2825 253 * @param Color Color of polygon.
admcrae 2:ebe7029e2825 254 */
admcrae 2:ebe7029e2825 255 void gfx_Polygon(uint16_t n, uint16_t* Xvalues, uint16_t* Yvalues, Picaso::Color Color);
admcrae 2:ebe7029e2825 256
admcrae 2:ebe7029e2825 257 /**
admcrae 2:ebe7029e2825 258 * Draws filled polygon on screen.
admcrae 2:ebe7029e2825 259 * @param n Number of vertices.
admcrae 2:ebe7029e2825 260 * @param Xvalues,Yvalues Arrays of size n contianing the coordinates of each vertex.
admcrae 2:ebe7029e2825 261 * @param Color Color of polygon.
admcrae 2:ebe7029e2825 262 */
admcrae 2:ebe7029e2825 263 void gfx_PolygonFilled(uint16_t n, uint16_t* Xvalues, uint16_t* Yvalues, Picaso::Color Color);
admcrae 2:ebe7029e2825 264
admcrae 2:ebe7029e2825 265 /**
admcrae 2:ebe7029e2825 266 * Draws unfilled triangle on screen.
admcrae 2:ebe7029e2825 267 * @param X1,Y1 Coordinates of first vertex.
admcrae 2:ebe7029e2825 268 * @param X2,Y2 Coordinates of second vertex.
admcrae 2:ebe7029e2825 269 * @param X3,Y3 Coordinates of third vertex.
admcrae 2:ebe7029e2825 270 * @param Color Color of triangle.
admcrae 2:ebe7029e2825 271 */
admcrae 2:ebe7029e2825 272 void gfx_Triangle(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, uint16_t X3, uint16_t Y3, Picaso::Color Color);
admcrae 2:ebe7029e2825 273
admcrae 2:ebe7029e2825 274 /**
admcrae 2:ebe7029e2825 275 * Draws filled triangle on screen.
admcrae 2:ebe7029e2825 276 * @param X1,Y1 Coordinates of first vertex.
admcrae 2:ebe7029e2825 277 * @param X2,Y2 Coordinates of second vertex.
admcrae 2:ebe7029e2825 278 * @param X3,Y3 Coordinates of third vertex.
admcrae 2:ebe7029e2825 279 * @param Color Color of triangle.
admcrae 2:ebe7029e2825 280 */
admcrae 2:ebe7029e2825 281 void gfx_TriangleFilled(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, uint16_t X3, uint16_t Y3, Picaso::Color Color);
admcrae 2:ebe7029e2825 282
admcrae 2:ebe7029e2825 283 /**
admcrae 2:ebe7029e2825 284 * Draws ellipse on screen.
admcrae 2:ebe7029e2825 285 * @param X,Y Coordinates of center of ellipse.
admcrae 2:ebe7029e2825 286 * @param Xrad Ellipse's x-radius.
admcrae 2:ebe7029e2825 287 * @param Yrad Ellipse's y-radius.
admcrae 2:ebe7029e2825 288 * @param Color Color of ellipse.
admcrae 2:ebe7029e2825 289 */
admcrae 2:ebe7029e2825 290 void gfx_Ellipse(uint16_t X, uint16_t Y, uint16_t Xrad, uint16_t Yrad, Picaso::Color Color);
admcrae 2:ebe7029e2825 291
admcrae 2:ebe7029e2825 292 /**
admcrae 2:ebe7029e2825 293 * Draws filled ellipse on screen.
admcrae 2:ebe7029e2825 294 * @param X,Y Coordinates of center of ellipse.
admcrae 2:ebe7029e2825 295 * @param Xrad Ellipse's x-radius.
admcrae 2:ebe7029e2825 296 * @param Yrad Ellipse's y-radius.
admcrae 2:ebe7029e2825 297 * @param Color Color of ellipse.
admcrae 2:ebe7029e2825 298 */
admcrae 2:ebe7029e2825 299 void gfx_EllipseFilled(uint16_t X, uint16_t Y, uint16_t Xrad, uint16_t Yrad, Picaso::Color Color);
admcrae 2:ebe7029e2825 300
admcrae 2:ebe7029e2825 301
admcrae 2:ebe7029e2825 302
admcrae 2:ebe7029e2825 303
admcrae 2:ebe7029e2825 304 /**
admcrae 2:ebe7029e2825 305 * Enables or disables clipping.
admcrae 2:ebe7029e2825 306 * @param OnOff 0 = Off, 1 = On.
admcrae 2:ebe7029e2825 307 */
admcrae 2:ebe7029e2825 308 void gfx_Clipping(uint16_t OnOff);
admcrae 2:ebe7029e2825 309
admcrae 2:ebe7029e2825 310 /**
admcrae 2:ebe7029e2825 311 * Sets clipping window for graphics. Any objects and text will only be displayed within the window.
admcrae 2:ebe7029e2825 312 * Clipping must first be enabled with the gfx_Clipping command.
admcrae 2:ebe7029e2825 313 * @param X1, Y1 Coordinates of top left corner of window.
admcrae 2:ebe7029e2825 314 * @param X2, Y2 Coordinates of bottom right corner of window.
admcrae 2:ebe7029e2825 315 */
admcrae 2:ebe7029e2825 316 void gfx_ClipWindow(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2);
admcrae 2:ebe7029e2825 317
admcrae 2:ebe7029e2825 318 /**
admcrae 2:ebe7029e2825 319 * Forces clip window to include the last printed text or image.
admcrae 2:ebe7029e2825 320 */
admcrae 0:e314f3b805ed 321 void gfx_SetClipRegion(void);
admcrae 2:ebe7029e2825 322
admcrae 2:ebe7029e2825 323
admcrae 2:ebe7029e2825 324
admcrae 2:ebe7029e2825 325
admcrae 2:ebe7029e2825 326
admcrae 2:ebe7029e2825 327 /**
admcrae 2:ebe7029e2825 328 * Draws line from the origin to (X, Y), using current object color and then moves the origin to the endpoint. This command is most useful when used with gfx_Orbit.
admcrae 2:ebe7029e2825 329 */
admcrae 2:ebe7029e2825 330 void gfx_LineTo(uint16_t X, uint16_t Y);
admcrae 2:ebe7029e2825 331
admcrae 2:ebe7029e2825 332 /**
admcrae 2:ebe7029e2825 333 * Moves the origin to (X, Y).
admcrae 2:ebe7029e2825 334 */
admcrae 2:ebe7029e2825 335 void gfx_MoveTo(uint16_t X, uint16_t Y);
admcrae 2:ebe7029e2825 336
admcrae 2:ebe7029e2825 337 /**
admcrae 2:ebe7029e2825 338 * Calculates the X and Y coordinates relative to the origin, given an angle and distance.
admcrae 2:ebe7029e2825 339 * @param Angle Angle in degrees.
admcrae 2:ebe7029e2825 340 * @param Distance Distance from origin in pixels.
admcrae 2:ebe7029e2825 341 * @param Xdest Pointer to variable where calculated X value will be stored.
admcrae 2:ebe7029e2825 342 * @param Ydest Pointer to variable where calculated Y value will be stored.
admcrae 2:ebe7029e2825 343 * @return Returns 0.
admcrae 2:ebe7029e2825 344 */
admcrae 2:ebe7029e2825 345 uint16_t gfx_Orbit(uint16_t Angle, uint16_t Distance, uint16_t* Xdest, uint16_t* Ydest);
admcrae 2:ebe7029e2825 346
admcrae 2:ebe7029e2825 347
admcrae 2:ebe7029e2825 348 /**
admcrae 2:ebe7029e2825 349 * Draws button on screen.
admcrae 2:ebe7029e2825 350 * @param Up Whether button appears raised (BUTTON_RAISED = 1) or depressed (BUTTON_DEPRESSED = 0).
admcrae 2:ebe7029e2825 351 * @param x,y Coordinates of top left corner of button.
admcrae 2:ebe7029e2825 352 * @param buttonColour Button color.
admcrae 2:ebe7029e2825 353 * @param txtColour Text color.
admcrae 2:ebe7029e2825 354 * @param font Text font ID.
admcrae 2:ebe7029e2825 355 * @param txtWidth Text width, as multiple of default.
admcrae 2:ebe7029e2825 356 * @param txtHeight Text height, as multiple of default.
admcrae 2:ebe7029e2825 357 * @param text Null-terminated string with button text. May include newline characters for multiple lines of text in button.
admcrae 2:ebe7029e2825 358 */
admcrae 2:ebe7029e2825 359 void gfx_Button(Picaso::ButtonState Up, uint16_t x, uint16_t y, Picaso::Color buttonColour,
admcrae 2:ebe7029e2825 360 Picaso::Color txtColour, Picaso::Font font, uint16_t txtWidth, uint16_t txtHeight, char* text);
admcrae 2:ebe7029e2825 361
admcrae 2:ebe7029e2825 362 /**
admcrae 2:ebe7029e2825 363 *
admcrae 2:ebe7029e2825 364 * @param Raised Panel appearance (raised or sunken).
admcrae 2:ebe7029e2825 365 * @param X,Y Position of top-left corner of panel.
admcrae 2:ebe7029e2825 366 * @param Width Panel width.
admcrae 2:ebe7029e2825 367 * @param Height Panel height.
admcrae 2:ebe7029e2825 368 * @param Color Panel color.
admcrae 2:ebe7029e2825 369 */
admcrae 2:ebe7029e2825 370 void gfx_Panel(Picaso::PanelState Raised, uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height, Picaso::Color Color);
admcrae 2:ebe7029e2825 371
admcrae 2:ebe7029e2825 372 /**
admcrae 2:ebe7029e2825 373 * Draws horizontal or vertical slider bar on screen. If X2 - X1 > Y2 - Y1, slider is assumed to be horizontal. Otherwise, slider is assumed to be vertical.
admcrae 2:ebe7029e2825 374 * @param Mode Slider appearance (sunken, raised, or hidden).
admcrae 2:ebe7029e2825 375 * @param X1,Y1 Coordinates of top-left corner of slider.
admcrae 2:ebe7029e2825 376 * @param X2,Y2 Coordinates of bottom-right corner of slider.
admcrae 2:ebe7029e2825 377 * @param Color Color of slider bar.
admcrae 2:ebe7029e2825 378 * @param Scale Sets scale of slider position: slider can have positions from 0 to Scale.
admcrae 2:ebe7029e2825 379 * @param Position of slider thumb. If negative, the absolute value is taken.
admcrae 2:ebe7029e2825 380 * @return ??--TODO
admcrae 2:ebe7029e2825 381 */
admcrae 2:ebe7029e2825 382 uint16_t gfx_Slider(Picaso::SliderState Mode, uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2, Picaso::Color Color, uint16_t Scale, uint16_t Value);
admcrae 2:ebe7029e2825 383
admcrae 2:ebe7029e2825 384 /**
admcrae 2:ebe7029e2825 385 * Sets depth of bevel shadow on buttons drawn.
admcrae 2:ebe7029e2825 386 * @param Value Shadow depth in pixels (0-4).
admcrae 2:ebe7029e2825 387 * @return Previous setting.
admcrae 2:ebe7029e2825 388 */
admcrae 2:ebe7029e2825 389 uint16_t gfx_BevelShadow(uint16_t Value);
admcrae 2:ebe7029e2825 390
admcrae 2:ebe7029e2825 391 /**
admcrae 2:ebe7029e2825 392 * Sets width of bevel on buttons drawn.
admcrae 2:ebe7029e2825 393 * @param Value Shadow depth in pixels (0-15).
admcrae 2:ebe7029e2825 394 * @return Previous setting.
admcrae 2:ebe7029e2825 395 */
admcrae 2:ebe7029e2825 396 uint16_t gfx_BevelWidth(uint16_t Value);
admcrae 2:ebe7029e2825 397
admcrae 2:ebe7029e2825 398 /**
admcrae 2:ebe7029e2825 399 * Copies a region of the screen and pastes it to another.
admcrae 2:ebe7029e2825 400 * @param Xs,Ys Coordinates of top-left corner of region to be copied.
admcrae 2:ebe7029e2825 401 * @param Xd,Yd Coordinates of top-left corner of destination region.
admcrae 2:ebe7029e2825 402 * @param Width Width of region to be copied.
admcrae 2:ebe7029e2825 403 * @param Height Height of region to be copied.
admcrae 2:ebe7029e2825 404 */
admcrae 2:ebe7029e2825 405 void gfx_ScreenCopyPaste(uint16_t Xs, uint16_t Ys, uint16_t Xd, uint16_t Yd, uint16_t Width, uint16_t Height);
admcrae 2:ebe7029e2825 406
admcrae 2:ebe7029e2825 407 /**
admcrae 2:ebe7029e2825 408 * Sets the screen background color.
admcrae 2:ebe7029e2825 409 * @return Previous background color.
admcrae 2:ebe7029e2825 410 */
admcrae 2:ebe7029e2825 411 Picaso::Color gfx_BGcolour(Picaso::Color Color);
admcrae 2:ebe7029e2825 412
admcrae 2:ebe7029e2825 413
admcrae 2:ebe7029e2825 414 /**
admcrae 2:ebe7029e2825 415 * Sets the outline color for rectangles and circles.
admcrae 2:ebe7029e2825 416 * @return Previous outline color.
admcrae 2:ebe7029e2825 417 */
admcrae 2:ebe7029e2825 418 Picaso::Color gfx_OutlineColour(Picaso::Color Color);
admcrae 2:ebe7029e2825 419
admcrae 2:ebe7029e2825 420 /**
admcrae 2:ebe7029e2825 421 * Sets display contrast or turns it on and off, depending on display model.
admcrae 2:ebe7029e2825 422 * @param Contrast Constrast setting. For most displays, 0 = display off, non-zero = display on. See Serial Command Manual for exceptions.
admcrae 2:ebe7029e2825 423 * @return Previous setting.
admcrae 2:ebe7029e2825 424 */
admcrae 2:ebe7029e2825 425 uint16_t gfx_Contrast(uint16_t Contrast);
admcrae 2:ebe7029e2825 426
admcrae 2:ebe7029e2825 427 /**
admcrae 2:ebe7029e2825 428 * Sets inter-frame delay, in milliseconds, for media_Video command.
admcrae 2:ebe7029e2825 429 * @return Previous setting.
admcrae 2:ebe7029e2825 430 */
admcrae 2:ebe7029e2825 431 uint16_t gfx_FrameDelay(uint16_t Msec);
admcrae 2:ebe7029e2825 432
admcrae 2:ebe7029e2825 433 /**
admcrae 2:ebe7029e2825 434 * Sets line drawing pattern.
admcrae 2:ebe7029e2825 435 * @param Pattern Word containing bit pattern; each set bit corresponds to a pixel turned off.
admcrae 2:ebe7029e2825 436 * @return Previous pattern.
admcrae 2:ebe7029e2825 437 */
admcrae 2:ebe7029e2825 438 uint16_t gfx_LinePattern(uint16_t Pattern);
admcrae 2:ebe7029e2825 439
admcrae 2:ebe7029e2825 440 /**
admcrae 2:ebe7029e2825 441 * Sets screen mode (portait, landscape, and reversed).
admcrae 2:ebe7029e2825 442 * @return Previous screen mode.
admcrae 2:ebe7029e2825 443 */
admcrae 2:ebe7029e2825 444 Picaso::ScreenMode gfx_ScreenMode(Picaso::ScreenMode ScreenMode);
admcrae 2:ebe7029e2825 445
admcrae 2:ebe7029e2825 446 /**
admcrae 2:ebe7029e2825 447 * Turns transparency ON or OFF. Setting is reset to OFF after image or video command.
admcrae 2:ebe7029e2825 448 * @return Previous setting.
admcrae 2:ebe7029e2825 449 */
admcrae 2:ebe7029e2825 450 uint16_t gfx_Transparency(uint16_t OnOff);
admcrae 2:ebe7029e2825 451
admcrae 2:ebe7029e2825 452 /**
admcrae 2:ebe7029e2825 453 * Sets color to be made transparent.
admcrae 2:ebe7029e2825 454 * @return Previous setting.
admcrae 2:ebe7029e2825 455 */
admcrae 2:ebe7029e2825 456 Picaso::Color gfx_TransparentColour(Picaso::Color Color);
admcrae 2:ebe7029e2825 457
admcrae 2:ebe7029e2825 458 /**
admcrae 2:ebe7029e2825 459 * Sets one of several graphics attributes. Most attributes can be set by other functions.
admcrae 2:ebe7029e2825 460 * @param Func Attribute to set.
admcrae 2:ebe7029e2825 461 * @param Value Value to set parameter. See GFXSetFunc definition for more information.
admcrae 2:ebe7029e2825 462 */
admcrae 2:ebe7029e2825 463 void gfx_Set(Picaso::GFXSetFunc Func, uint16_t Value);
admcrae 2:ebe7029e2825 464
admcrae 2:ebe7029e2825 465 /**
admcrae 2:ebe7029e2825 466 * Returns a graphics attribute.
admcrae 2:ebe7029e2825 467 * @return Value of attribute. See GFXGetMode definition for more information.
admcrae 2:ebe7029e2825 468 */
admcrae 2:ebe7029e2825 469 uint16_t gfx_Get(Picaso::GFXGetMode Mode);
admcrae 2:ebe7029e2825 470
admcrae 2:ebe7029e2825 471
admcrae 2:ebe7029e2825 472 // Media (SD card) commands:
admcrae 2:ebe7029e2825 473
admcrae 2:ebe7029e2825 474 /**
admcrae 2:ebe7029e2825 475 * Initializes SD card.
admcrae 2:ebe7029e2825 476 * @return 1 if successful, 0 otherwise.
admcrae 2:ebe7029e2825 477 */
admcrae 2:ebe7029e2825 478 uint16_t media_Init(void);
admcrae 2:ebe7029e2825 479
admcrae 2:ebe7029e2825 480 /**
admcrae 2:ebe7029e2825 481 * Sets media memory address to a non-sector-aligned byte address in the SD card.
admcrae 2:ebe7029e2825 482 * @param HiWord Upper 2 bytes of address.
admcrae 2:ebe7029e2825 483 * @param LoWord Lower 2 bytes of address.
admcrae 2:ebe7029e2825 484 */
admcrae 2:ebe7029e2825 485 void media_SetAdd(uint16_t HiWord, uint16_t LoWord);
admcrae 2:ebe7029e2825 486
admcrae 2:ebe7029e2825 487 /**
admcrae 2:ebe7029e2825 488 * Sets media memory address to a sector in the SD card.
admcrae 2:ebe7029e2825 489 * @param HiWord Upper 2 bytes of address.
admcrae 2:ebe7029e2825 490 * @param LoWord Lower 2 bytes of address.
admcrae 2:ebe7029e2825 491 */
admcrae 2:ebe7029e2825 492 void media_SetSector(uint16_t HiWord, uint16_t LoWord);
admcrae 2:ebe7029e2825 493
admcrae 2:ebe7029e2825 494 /**
admcrae 2:ebe7029e2825 495 * Reads sector of SD card at address previously set by media_SetSector. Afterwards, the sector address is incremented by one.
admcrae 2:ebe7029e2825 496 * @param SectorIn Array to hold sector data (512 bytes).
admcrae 2:ebe7029e2825 497 * @return 1 if successful, 0 if failed.
admcrae 2:ebe7029e2825 498 */
admcrae 2:ebe7029e2825 499 uint16_t media_RdSector(char* SectorIn);
admcrae 2:ebe7029e2825 500
admcrae 2:ebe7029e2825 501 /**
admcrae 2:ebe7029e2825 502 * Writes sector of SD card at address previously set by media_SetSector. Afterwards, the sector address is incremented by one.
admcrae 2:ebe7029e2825 503 * @param SectorOut Array with sector data to write (512 bytes).
admcrae 2:ebe7029e2825 504 * @return 1 if successful, 0 if failed.
admcrae 2:ebe7029e2825 505 */
admcrae 2:ebe7029e2825 506 uint16_t media_WrSector(char* SectorOut);
admcrae 2:ebe7029e2825 507
admcrae 2:ebe7029e2825 508 /**
admcrae 2:ebe7029e2825 509 * Reads byte from SD card at address previously set by media_SetAdd. Afterwards, the byte address is incremented by one.
admcrae 2:ebe7029e2825 510 * @return Byte read (lower 8 bits of word returned).
admcrae 2:ebe7029e2825 511 */
admcrae 2:ebe7029e2825 512 uint16_t media_ReadByte(void);
admcrae 2:ebe7029e2825 513
admcrae 2:ebe7029e2825 514 /**
admcrae 2:ebe7029e2825 515 * Writes byte to SD card at address previously set by media_SetAdd. Afterwards, the byte address is incremented by one.
admcrae 2:ebe7029e2825 516 * @param Byte to write (in lower 8 bits of argument).
admcrae 2:ebe7029e2825 517 * @return Nonzero if successful, 0 if failed.
admcrae 2:ebe7029e2825 518 */
admcrae 2:ebe7029e2825 519 uint16_t media_WriteByte(uint16_t Byte);
admcrae 2:ebe7029e2825 520
admcrae 2:ebe7029e2825 521 /**
admcrae 2:ebe7029e2825 522 * Reads word from SD card at address previously set by media_SetAdd. Afterwards, the byte address is incremented by one.
admcrae 2:ebe7029e2825 523 * @return Word read.
admcrae 2:ebe7029e2825 524 */
admcrae 2:ebe7029e2825 525 uint16_t media_ReadWord(void);
admcrae 2:ebe7029e2825 526
admcrae 2:ebe7029e2825 527 /**
admcrae 2:ebe7029e2825 528 * Writes byte to SD card at address previously set by media_SetAdd. Afterwards, the byte address is incremented by one.
admcrae 2:ebe7029e2825 529 * @param Word to write.
admcrae 2:ebe7029e2825 530 * @return Nonzero if successful, 0 if failed.
admcrae 2:ebe7029e2825 531 */
admcrae 2:ebe7029e2825 532 uint16_t media_WriteWord(uint16_t Word);
admcrae 2:ebe7029e2825 533
admcrae 2:ebe7029e2825 534 /**
admcrae 2:ebe7029e2825 535 * Finalizes writing to sector. This is automatically called if writing rolls over into the next sector.
admcrae 2:ebe7029e2825 536 * @return Nonzero if successful, 0 of failed.
admcrae 2:ebe7029e2825 537 */
admcrae 2:ebe7029e2825 538 uint16_t media_Flush(void);
admcrae 2:ebe7029e2825 539
admcrae 2:ebe7029e2825 540 /**
admcrae 2:ebe7029e2825 541 * Displays RAW image from SD card at at the address specified by one of the set address commands.
admcrae 2:ebe7029e2825 542 * @param X,Y Coordinates of top left position of image on screen.
admcrae 2:ebe7029e2825 543 */
admcrae 2:ebe7029e2825 544 void media_Image(uint16_t X, uint16_t Y);
admcrae 2:ebe7029e2825 545
admcrae 2:ebe7029e2825 546 /**
admcrae 2:ebe7029e2825 547 * Displays RAW video clip from SD card at at the address specified by one of the set address commands. All other processes on display are blocked until video is finished.
admcrae 2:ebe7029e2825 548 * @param X,Y Coordinates of top left position of video on screen.
admcrae 2:ebe7029e2825 549 */
admcrae 2:ebe7029e2825 550 void media_Video(uint16_t X, uint16_t Y);
admcrae 2:ebe7029e2825 551
admcrae 2:ebe7029e2825 552 /**
admcrae 2:ebe7029e2825 553 * Displays individual frame of RAW video clip from SD card at at the address specified by one of the set address commands.
admcrae 2:ebe7029e2825 554 * @param X,Y Coordinates of top left position of frame on screen.
admcrae 2:ebe7029e2825 555 * @param Framenumber Number of frame to be displayed.
admcrae 2:ebe7029e2825 556 */
admcrae 2:ebe7029e2825 557 void media_VideoFrame(uint16_t X, uint16_t Y, uint16_t Framenumber);
admcrae 2:ebe7029e2825 558
admcrae 2:ebe7029e2825 559
admcrae 2:ebe7029e2825 560 // File commands:
admcrae 2:ebe7029e2825 561
admcrae 2:ebe7029e2825 562 /**
admcrae 2:ebe7029e2825 563 * Returns most recent file operation error code.
admcrae 2:ebe7029e2825 564 */
admcrae 2:ebe7029e2825 565 Picaso::FileError file_Error(void);
admcrae 2:ebe7029e2825 566
admcrae 2:ebe7029e2825 567 /**
admcrae 2:ebe7029e2825 568 * Returns the number of files that match the given (null-terminated) Filename string. In the string, '*' can represent any combination of allowable characters,
admcrae 2:ebe7029e2825 569 * while '?' matches any single allowable character. Filenames must be 8.3 format.
admcrae 2:ebe7029e2825 570 */
admcrae 2:ebe7029e2825 571 uint16_t file_Count(char * Filename);
admcrae 2:ebe7029e2825 572
admcrae 2:ebe7029e2825 573 /**
admcrae 2:ebe7029e2825 574 * Prints on the screen the names of files that match the given (null-terminated) Filename string. In the string, '*' can represent any combination of allowable characters,
admcrae 2:ebe7029e2825 575 * while '?' matches any single allowable character. Filenames must be 8.3 format.
admcrae 2:ebe7029e2825 576 * @return Number of matching files found.
admcrae 2:ebe7029e2825 577 */
admcrae 2:ebe7029e2825 578 uint16_t file_Dir(char * Filename);
admcrae 2:ebe7029e2825 579
admcrae 2:ebe7029e2825 580 /**
admcrae 2:ebe7029e2825 581 * Prints on the screen the name of the first file that matches the given (null-terminated) Filename string. In the string, '*' can
admcrae 2:ebe7029e2825 582 * represent any combination of allowable characters, while '?' matches any single allowable character. Filenames must be 8.3 format.
admcrae 2:ebe7029e2825 583 * @return 1 if at least one matching file is found, 0 otherwise.
admcrae 2:ebe7029e2825 584 */
admcrae 2:ebe7029e2825 585 uint16_t file_FindFirst(char *Filename);
admcrae 2:ebe7029e2825 586
admcrae 2:ebe7029e2825 587 /**
admcrae 2:ebe7029e2825 588 * Finds the name of the first file that matches the given (null-terminated) Filename string. In the string, '*' can
admcrae 2:ebe7029e2825 589 * represent any combination of allowable characters, while '?' matches any single allowable character. Filenames must be 8.3 format.
admcrae 2:ebe7029e2825 590 * @param Filename String containing filename pattern to be matched.
admcrae 2:ebe7029e2825 591 * @param StringIn Character buffer to hold the returned filename. Returned string is not null-terminated.
admcrae 2:ebe7029e2825 592 * @return Length of returned filename string.
admcrae 2:ebe7029e2825 593 */
admcrae 2:ebe7029e2825 594 uint16_t file_FindFirstRet(char *Filename, char* StringIn);
admcrae 2:ebe7029e2825 595
admcrae 2:ebe7029e2825 596 /**
admcrae 2:ebe7029e2825 597 * Prints on the screen the name of the next file to match the pattern provided in a previous call to file_FindFirst or file_FindFirstRet.
admcrae 2:ebe7029e2825 598 * @return 1 if at least one matching file is found, 0 otherwise.
admcrae 2:ebe7029e2825 599 */
admcrae 2:ebe7029e2825 600 uint16_t file_FindNext(void);
admcrae 2:ebe7029e2825 601
admcrae 2:ebe7029e2825 602 /**
admcrae 2:ebe7029e2825 603 * Finds the name of the next file to match the pattern provided in a previous call to file_FindFirst or file_FindFirstRet.
admcrae 2:ebe7029e2825 604 * @param StringIn Character buffer to hold the returned filename. Returned string is not null-terminated.
admcrae 2:ebe7029e2825 605 * @return Length of returned filename string.
admcrae 2:ebe7029e2825 606 */
admcrae 2:ebe7029e2825 607 uint16_t file_FindNextRet(char * StringIn);
admcrae 2:ebe7029e2825 608
admcrae 2:ebe7029e2825 609 /**
admcrae 2:ebe7029e2825 610 * Returns whether a file with a given (null-terminated) filename exists.
admcrae 2:ebe7029e2825 611 * @return 1 if found, 0 if not.
admcrae 2:ebe7029e2825 612 */
admcrae 2:ebe7029e2825 613 uint16_t file_Exists(char *Filename);
admcrae 2:ebe7029e2825 614
admcrae 2:ebe7029e2825 615 /**
admcrae 2:ebe7029e2825 616 * Opens file.
admcrae 2:ebe7029e2825 617 * @param Filename Null-terminated string with name of file.
admcrae 2:ebe7029e2825 618 * @param Mode 'r' for read, 'w' for write, 'a' for append.
admcrae 2:ebe7029e2825 619 * @return File handle (if file exists).
admcrae 2:ebe7029e2825 620 */
admcrae 2:ebe7029e2825 621 uint16_t file_Open(char * Filename, char Mode);
admcrae 2:ebe7029e2825 622
admcrae 2:ebe7029e2825 623 /**
admcrae 2:ebe7029e2825 624 * Closes file.
admcrae 2:ebe7029e2825 625 * @param Handle File handle.
admcrae 2:ebe7029e2825 626 * @return 1 if successfully closed, 0 if not.
admcrae 2:ebe7029e2825 627 */
admcrae 2:ebe7029e2825 628 uint16_t file_Close(uint16_t Handle);
admcrae 2:ebe7029e2825 629
admcrae 2:ebe7029e2825 630 /**
admcrae 2:ebe7029e2825 631 * Reads bytes from file.
admcrae 2:ebe7029e2825 632 * @param Data Buffer to contain data read.
admcrae 2:ebe7029e2825 633 * @param Size Number of bytes to read.
admcrae 2:ebe7029e2825 634 * @param Handle File handle.
admcrae 2:ebe7029e2825 635 * @return Number of bytes read.
admcrae 2:ebe7029e2825 636 */
admcrae 2:ebe7029e2825 637 uint16_t file_Read(char* Data, uint16_t Size, uint16_t Handle);
admcrae 2:ebe7029e2825 638
admcrae 2:ebe7029e2825 639 /**
admcrae 2:ebe7029e2825 640 * Sets internal file pointer to a specified position in a file.
admcrae 2:ebe7029e2825 641 * @param Handle File handle.
admcrae 2:ebe7029e2825 642 * @param HiWord Upper 16 bits of pointer.
admcrae 2:ebe7029e2825 643 * @param LoWord Lower 16 bits of pointer.
admcrae 2:ebe7029e2825 644 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 645 */
admcrae 2:ebe7029e2825 646 uint16_t file_Seek(uint16_t Handle, uint16_t HiWord, uint16_t LoWord);
admcrae 2:ebe7029e2825 647
admcrae 2:ebe7029e2825 648 /**
admcrae 2:ebe7029e2825 649 * Sets file pointer to a particular record within a file (e.g. a record size of 1000 and an index of 9 will set the pointer to position 9000).
admcrae 2:ebe7029e2825 650 * @param Handle File handle.
admcrae 2:ebe7029e2825 651 * @param HiSize Upper 16 bits of record size.
admcrae 2:ebe7029e2825 652 * @param LoSize Lower 16 bits of record size.
admcrae 2:ebe7029e2825 653 * @param Recordnum Index of desired record.
admcrae 2:ebe7029e2825 654 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 655 */
admcrae 2:ebe7029e2825 656 uint16_t file_Index(uint16_t Handle, uint16_t HiSize, uint16_t LoSize, uint16_t Recordnum);
admcrae 2:ebe7029e2825 657
admcrae 2:ebe7029e2825 658 /**
admcrae 2:ebe7029e2825 659 * Returns the current position of a file pointer.
admcrae 2:ebe7029e2825 660 * @param Handle File handle.
admcrae 2:ebe7029e2825 661 * @param HiWord Pointer to word in which to store the upper 16 bits of the returned pointer value.
admcrae 2:ebe7029e2825 662 * @param LoWord Pointer to word in which to store the lower 16 bits of the returned pointer value.
admcrae 2:ebe7029e2825 663 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 664 */
admcrae 2:ebe7029e2825 665 uint16_t file_Tell(uint16_t Handle, uint16_t * HiWord, uint16_t * LoWord);
admcrae 2:ebe7029e2825 666
admcrae 2:ebe7029e2825 667 /**
admcrae 2:ebe7029e2825 668 * Writes bytes to file.
admcrae 2:ebe7029e2825 669 * @param Size Number of bytes to be written.
admcrae 2:ebe7029e2825 670 * @param Source Array containing data to be written.
admcrae 2:ebe7029e2825 671 * @param Handle File handle.
admcrae 2:ebe7029e2825 672 * @return Number of bytes written.
admcrae 2:ebe7029e2825 673 */
admcrae 2:ebe7029e2825 674 uint16_t file_Write(uint16_t Size, char* Source, uint16_t Handle);
admcrae 2:ebe7029e2825 675
admcrae 2:ebe7029e2825 676 /**
admcrae 2:ebe7029e2825 677 * Returns the size of a file.
admcrae 2:ebe7029e2825 678 * @param Handle File handle.
admcrae 2:ebe7029e2825 679 * @param HiWord Pointer to variable in which to store the upper 16 bits of the returned file size.
admcrae 2:ebe7029e2825 680 * @param LoWord Pointer to variable in which to store the lower 16 bits of the returned file size.
admcrae 2:ebe7029e2825 681 * @return 1 if succesful, 0 if not.
admcrae 2:ebe7029e2825 682 */
admcrae 2:ebe7029e2825 683 uint16_t file_Size(uint16_t Handle, uint16_t * HiWord, uint16_t * LoWord);
admcrae 2:ebe7029e2825 684
admcrae 2:ebe7029e2825 685 /**
admcrae 2:ebe7029e2825 686 * Displays image from file on screen. If the file contains more than one image, each can be accessed with the file_Seek command.
admcrae 2:ebe7029e2825 687 * @param X,Y coordinates of top-left corner of image on display.
admcrae 2:ebe7029e2825 688 * @param Handle File handle.
admcrae 2:ebe7029e2825 689 * @return File error code (see file_Error).
admcrae 2:ebe7029e2825 690 */
admcrae 2:ebe7029e2825 691 uint16_t file_Image(uint16_t X, uint16_t Y, uint16_t Handle);
admcrae 2:ebe7029e2825 692
admcrae 2:ebe7029e2825 693 /**
admcrae 2:ebe7029e2825 694 * Captures an area of the screen and writes it to a file.
admcrae 2:ebe7029e2825 695 * @param X,Y Coordinates of top-left corner of area to be captured.
admcrae 2:ebe7029e2825 696 * @param Width, Height Width and height of area to be captured.
admcrae 2:ebe7029e2825 697 * @param Handle Handle of file to be written. Image is written at the current pointer location in the file, so multiple images can be captured to the same file.
admcrae 2:ebe7029e2825 698 * @return 0 if successful.
admcrae 2:ebe7029e2825 699 */
admcrae 2:ebe7029e2825 700 uint16_t file_ScreenCapture(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height, uint16_t Handle);
admcrae 2:ebe7029e2825 701
admcrae 2:ebe7029e2825 702 /**
admcrae 2:ebe7029e2825 703 * Writes character to file.
admcrae 2:ebe7029e2825 704 * @param Character Character to be written.
admcrae 2:ebe7029e2825 705 * @param Handle File handle.
admcrae 2:ebe7029e2825 706 * @return Number of bytes successfully written.
admcrae 2:ebe7029e2825 707 */
admcrae 2:ebe7029e2825 708 uint16_t file_PutC(char Character, uint16_t Handle);
admcrae 2:ebe7029e2825 709
admcrae 2:ebe7029e2825 710 /**
admcrae 2:ebe7029e2825 711 * Reads character from file.
admcrae 2:ebe7029e2825 712 */
admcrae 2:ebe7029e2825 713 char file_GetC(uint16_t Handle);
admcrae 2:ebe7029e2825 714
admcrae 2:ebe7029e2825 715 /**
admcrae 2:ebe7029e2825 716 * Writes word (2 bytes) to file.
admcrae 2:ebe7029e2825 717 * @return Number of bytes successfully written.
admcrae 2:ebe7029e2825 718 */
admcrae 2:ebe7029e2825 719 uint16_t file_PutW(uint16_t Word, uint16_t Handle);
admcrae 2:ebe7029e2825 720
admcrae 2:ebe7029e2825 721 /**
admcrae 2:ebe7029e2825 722 * Reads word from file.
admcrae 2:ebe7029e2825 723 */
admcrae 2:ebe7029e2825 724 uint16_t file_GetW(uint16_t Handle);
admcrae 2:ebe7029e2825 725
admcrae 2:ebe7029e2825 726 /**
admcrae 2:ebe7029e2825 727 * Writes (null-terminated) string to file.
admcrae 2:ebe7029e2825 728 * @return Number of characters written (excluding null character).
admcrae 2:ebe7029e2825 729 */
admcrae 2:ebe7029e2825 730 uint16_t file_PutS(char * StringOut, uint16_t Handle);
admcrae 2:ebe7029e2825 731
admcrae 2:ebe7029e2825 732 /**
admcrae 2:ebe7029e2825 733 * Reads line of text from file. Characters are read until a newline or eof is reached, or the specified maximum size is reached. Returned string is not null-terminated.
admcrae 2:ebe7029e2825 734 * @param StringIn Character array in which to store read string.
admcrae 2:ebe7029e2825 735 * @param Size maximum number of characters to be read.
admcrae 2:ebe7029e2825 736 * @param Handle File handle.
admcrae 2:ebe7029e2825 737 * @return Number of characters read.
admcrae 2:ebe7029e2825 738 */
admcrae 2:ebe7029e2825 739 uint16_t file_GetS(char * StringIn, uint16_t Size, uint16_t Handle);
admcrae 2:ebe7029e2825 740
admcrae 2:ebe7029e2825 741 /**
admcrae 2:ebe7029e2825 742 * Deletes file from disk.
admcrae 2:ebe7029e2825 743 * @param Filename Name of file to be erased.
admcrae 2:ebe7029e2825 744 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 745 */
admcrae 2:ebe7029e2825 746 uint16_t file_Erase(char * Filename);
admcrae 2:ebe7029e2825 747
admcrae 2:ebe7029e2825 748 /**
admcrae 2:ebe7029e2825 749 * Resets file pointer to beginning of file.
admcrae 2:ebe7029e2825 750 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 751 */
admcrae 2:ebe7029e2825 752 uint16_t file_Rewind(uint16_t Handle);
admcrae 2:ebe7029e2825 753
admcrae 2:ebe7029e2825 754 /**
admcrae 2:ebe7029e2825 755 * Loads 4DGL function (.4FN) or program (.4XE) from file to memory.
admcrae 2:ebe7029e2825 756 * @return Pointer/handle to loaded function.
admcrae 2:ebe7029e2825 757 */
admcrae 2:ebe7029e2825 758 uint16_t file_LoadFunction(char *Filename);
admcrae 2:ebe7029e2825 759
admcrae 2:ebe7029e2825 760 /**
admcrae 2:ebe7029e2825 761 * Calls a previously-loaded function or program.
admcrae 2:ebe7029e2825 762 * @param Handle Function handle previously returned by file_LoadFunction.
admcrae 2:ebe7029e2825 763 * @param ArgCount Number of arguments passed to function (0-6).
admcrae 2:ebe7029e2825 764 * @param Args array containing arguments to be passed to function.
admcrae 2:ebe7029e2825 765 * @return Value returned by the "main" function.
admcrae 2:ebe7029e2825 766 */
admcrae 2:ebe7029e2825 767 uint16_t file_CallFunction(uint16_t Handle, uint16_t ArgCount, uint16_t* Args);
admcrae 2:ebe7029e2825 768
admcrae 2:ebe7029e2825 769 /**
admcrae 2:ebe7029e2825 770 * Runs a 4DGL program from a file. This is similar to file_Execute, but afterwards, all memory allocations are released (but not stack and global memory.
admcrae 2:ebe7029e2825 771 * Prior to execution, strings may be loaded with the writeString command.
admcrae 2:ebe7029e2825 772 * @param Filename Null-terminated string containing name of file containing program.
admcrae 2:ebe7029e2825 773 * @param ArgCount Number of arguments to be passed to program.
admcrae 2:ebe7029e2825 774 * @param Args Array of arguments to be passed to program.
admcrae 2:ebe7029e2825 775 * @return Value returned by program.
admcrae 2:ebe7029e2825 776 */
admcrae 2:ebe7029e2825 777 uint16_t file_Run(char *Filename, uint16_t ArgCount, uint16_t* Args);
admcrae 2:ebe7029e2825 778
admcrae 2:ebe7029e2825 779 /**
admcrae 2:ebe7029e2825 780 * Runs a 4DGL program from a file. This is similar to file_Run, except all memory allocations are retained.
admcrae 2:ebe7029e2825 781 * Prior to execution, strings may be loaded with the writeString command.
admcrae 2:ebe7029e2825 782 * @param Filename Null-terminated string containing name of file containing program.
admcrae 2:ebe7029e2825 783 * @param ArgCount Number of arguments to be passed to program.
admcrae 2:ebe7029e2825 784 * @param Args Array of arguments to be passed to program.
admcrae 2:ebe7029e2825 785 * @return Value returned by program.
admcrae 2:ebe7029e2825 786 */
admcrae 2:ebe7029e2825 787 uint16_t file_Exec(char *Filename, uint16_t ArgCount, uint16_t* Args);
admcrae 2:ebe7029e2825 788
admcrae 2:ebe7029e2825 789 /**
admcrae 2:ebe7029e2825 790 * Loads image control file and associated image file. See Serial Command Manual for more information.
admcrae 2:ebe7029e2825 791 * @param Datname String containing control list filename (.dat).
admcrae 2:ebe7029e2825 792 * @param GCIName String containing image filename (.gci).
admcrae 2:ebe7029e2825 793 * @param Mode Mode of operation (0-2).
admcrae 2:ebe7029e2825 794 */
admcrae 2:ebe7029e2825 795 uint16_t file_LoadImageControl(char *Datname, char *GCIName, uint16_t Mode);
admcrae 2:ebe7029e2825 796
admcrae 2:ebe7029e2825 797 /**
admcrae 2:ebe7029e2825 798 * Mounts the FAT file system. This must be called before any other file commands.
admcrae 2:ebe7029e2825 799 * @return Non-zero if successful, 0 otherwise.
admcrae 2:ebe7029e2825 800 */
admcrae 2:ebe7029e2825 801 uint16_t file_Mount(void);
admcrae 2:ebe7029e2825 802
admcrae 2:ebe7029e2825 803 /**
admcrae 2:ebe7029e2825 804 * Unmounts the FAT file system.
admcrae 2:ebe7029e2825 805 */
admcrae 2:ebe7029e2825 806 void file_Unmount(void);
admcrae 2:ebe7029e2825 807
admcrae 2:ebe7029e2825 808 /**
admcrae 2:ebe7029e2825 809 * Plays .wav audio file.
admcrae 2:ebe7029e2825 810 * @return If successful, number of blocks to play. If not, an error code (see command manual).
admcrae 2:ebe7029e2825 811 */
admcrae 2:ebe7029e2825 812 uint16_t file_PlayWAV(char * Filename);
admcrae 2:ebe7029e2825 813
admcrae 2:ebe7029e2825 814 /**
admcrae 2:ebe7029e2825 815 * Loads string to memory to be used by a 4DGL program/function.
admcrae 2:ebe7029e2825 816 * @param Handle Pointer to location where string is to be loaded. Initial call should used 0; each subsequent call should use the pointer returned by the previous call.
admcrae 2:ebe7029e2825 817 * @param StringOut Null-terminated string to be loaded.
admcrae 2:ebe7029e2825 818 * @return Pointer to location where string has been loaded.
admcrae 2:ebe7029e2825 819 */
admcrae 2:ebe7029e2825 820 uint16_t writeString(uint16_t Handle, char * StringOut);
admcrae 2:ebe7029e2825 821
admcrae 2:ebe7029e2825 822 /**
admcrae 2:ebe7029e2825 823 * Reads string which has been written by a 4DGL program/function. The location is initially written with the writeString command, the pointer is passed to the program
admcrae 2:ebe7029e2825 824 * (which can modify it), and the result is read with this function.
admcrae 2:ebe7029e2825 825 * @param Handle Pointer to string location. This is the same value passed to writeString when the space was initially written.
admcrae 2:ebe7029e2825 826 * @param StringIn Character array in which to store the returned string.
admcrae 2:ebe7029e2825 827 * @return ??--TODO
admcrae 2:ebe7029e2825 828 */
admcrae 2:ebe7029e2825 829 uint16_t readString(uint16_t Handle, char * StringIn);
admcrae 2:ebe7029e2825 830
admcrae 2:ebe7029e2825 831
admcrae 2:ebe7029e2825 832 // Sound playback commands:
admcrae 2:ebe7029e2825 833
admcrae 2:ebe7029e2825 834 /**
admcrae 2:ebe7029e2825 835 * Sets sound playback volume.
admcrae 2:ebe7029e2825 836 * @param Volume Volume setting (8-127). Any level outside the allowed range will be changed to the closest value within the range.
admcrae 2:ebe7029e2825 837 */
admcrae 2:ebe7029e2825 838 void snd_Volume(uint16_t Volume);
admcrae 2:ebe7029e2825 839
admcrae 2:ebe7029e2825 840 /**
admcrae 2:ebe7029e2825 841 * Sets playback sample rate.
admcrae 2:ebe7029e2825 842 * @param Pitch Sample rate (4000-65535). A value of 0 will restore the original sample rate.
admcrae 2:ebe7029e2825 843 */
admcrae 2:ebe7029e2825 844 uint16_t snd_Pitch(uint16_t Pitch);
admcrae 2:ebe7029e2825 845
admcrae 2:ebe7029e2825 846 /**
admcrae 2:ebe7029e2825 847 * Sets memory chunk size for wavefile buffer.
admcrae 2:ebe7029e2825 848 * @param Bufsize Buffer size: 0 -> 1024 bytes, 1 -> 2048 bytes, and 2 -> 4096 bytes.
admcrae 2:ebe7029e2825 849 */
admcrae 2:ebe7029e2825 850 void snd_BufSize(uint16_t Bufsize);
admcrae 2:ebe7029e2825 851
admcrae 2:ebe7029e2825 852 /**
admcrae 2:ebe7029e2825 853 * Stops sound that is playing, releasing buffers and closing open wav files.
admcrae 2:ebe7029e2825 854 */
admcrae 0:e314f3b805ed 855 void snd_Stop(void);
admcrae 2:ebe7029e2825 856
admcrae 2:ebe7029e2825 857 /**
admcrae 2:ebe7029e2825 858 * Pauses sound playback.
admcrae 2:ebe7029e2825 859 */
admcrae 2:ebe7029e2825 860 void snd_Pause(void);
admcrae 2:ebe7029e2825 861
admcrae 2:ebe7029e2825 862 /**
admcrae 2:ebe7029e2825 863 * Continues any paused sound.
admcrae 2:ebe7029e2825 864 */
admcrae 2:ebe7029e2825 865 void snd_Continue(void);
admcrae 2:ebe7029e2825 866
admcrae 2:ebe7029e2825 867 /**
admcrae 2:ebe7029e2825 868 * Returns 0 if file has finished playing; otherwise, returns number of 512 byte blocks remaining.
admcrae 2:ebe7029e2825 869 */
admcrae 2:ebe7029e2825 870 uint16_t snd_Playing(void);
admcrae 2:ebe7029e2825 871
admcrae 2:ebe7029e2825 872
admcrae 2:ebe7029e2825 873 /**
admcrae 2:ebe7029e2825 874 * Specifies region on screen where touches will be detected.
admcrae 2:ebe7029e2825 875 * @param X1,Y1 Coordinates of top-left corner of region.
admcrae 2:ebe7029e2825 876 * @param X2,Y2 Coordinates of bottom-right corner of region.
admcrae 2:ebe7029e2825 877 */
admcrae 2:ebe7029e2825 878 void touch_DetectRegion(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2);
admcrae 2:ebe7029e2825 879
admcrae 2:ebe7029e2825 880 /**
admcrae 2:ebe7029e2825 881 * Sets touchscreen mode.
admcrae 2:ebe7029e2825 882 * @param Mode 0 -> enable touch screen; 1 -> disable touch screen; 2 -> reset touch detect region to full screen. The Picaso::Touch enum also provides the constants.
admcrae 2:ebe7029e2825 883 */
admcrae 2:ebe7029e2825 884 void touch_Set(uint16_t Mode);
admcrae 2:ebe7029e2825 885
admcrae 2:ebe7029e2825 886 /**
admcrae 2:ebe7029e2825 887 * Get status of touch screen.
admcrae 2:ebe7029e2825 888 * @param Mode 0 -> get state of touch screen; 1 -> get x coordinate of touch; 2 -> get y coordinate of touch. The Picaso::Touch enum also provides the constants.
admcrae 2:ebe7029e2825 889 * @return In modes 1 and 2, the requested coordinate. In mode 0: 0 -> invalid or no touch; 1 -> press; 2 -> release; 3 -> moving. The Picaso::Touch enum also provides the constants.
admcrae 2:ebe7029e2825 890 */
admcrae 2:ebe7029e2825 891 uint16_t touch_Get(uint16_t Mode);
admcrae 2:ebe7029e2825 892
admcrae 2:ebe7029e2825 893 /**
admcrae 2:ebe7029e2825 894 * Sets position of image to be displayed. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 895 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 896 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 897 * @param Xpos,Ypos Coordinates of top-left corner of image.
admcrae 2:ebe7029e2825 898 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 899 */
admcrae 2:ebe7029e2825 900 uint16_t img_SetPosition(uint16_t Handle, uint16_t Index, uint16_t Xpos, uint16_t Ypos);
admcrae 2:ebe7029e2825 901
admcrae 2:ebe7029e2825 902 /**
admcrae 2:ebe7029e2825 903 * Enables image in list so that it can be displayed with the img_Show command. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 904 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 905 * @param Index Index of image in list. -1 or Picaso::ALL selects all images in list.
admcrae 2:ebe7029e2825 906 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 907 */
admcrae 2:ebe7029e2825 908 uint16_t img_Enable(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 909
admcrae 2:ebe7029e2825 910 /**
admcrae 2:ebe7029e2825 911 * Disables image from being displayed. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 912 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 913 * @param Index Index of image in list. -1 or Picaso::ALL selects all images in list.
admcrae 2:ebe7029e2825 914 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 915 */
admcrae 2:ebe7029e2825 916 uint16_t img_Disable(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 917
admcrae 2:ebe7029e2825 918 /**
admcrae 2:ebe7029e2825 919 * Darkens image (call before img_Show). This effect will be reset when img_Show is called a second time.
admcrae 2:ebe7029e2825 920 * An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 921 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 922 * @param Index Index of image in list. -1 or Picaso::ALL selects all images in list.
admcrae 2:ebe7029e2825 923 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 924 */
admcrae 2:ebe7029e2825 925 uint16_t img_Darken(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 926
admcrae 2:ebe7029e2825 927 /**
admcrae 2:ebe7029e2825 928 * Lightens image (call before img_Show). This effect will be reset when img_Show is called a second time.
admcrae 2:ebe7029e2825 929 * An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 930 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 931 * @param Index Index of image in list. -1 or Picaso::ALL selects all images in list.
admcrae 2:ebe7029e2825 932 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 933 */
admcrae 2:ebe7029e2825 934 uint16_t img_Lighten(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 935
admcrae 2:ebe7029e2825 936 /**
admcrae 2:ebe7029e2825 937 * Lightens image (call before img_Show). This effect will be reset when img_Show is called a second time.
admcrae 2:ebe7029e2825 938 * An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 939 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 940 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 941 * @param Offset Offset of word to write. Note that some parameters are read-only.
admcrae 2:ebe7029e2825 942 * @param Word Word to be written. See Picaso::ImageControlOffset definition or serial command manual for more information.
admcrae 2:ebe7029e2825 943 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 944 */
admcrae 2:ebe7029e2825 945 uint16_t img_SetWord(uint16_t Handle, uint16_t Index, Picaso::ImageControlOffset Offset, uint16_t Word);
admcrae 2:ebe7029e2825 946
admcrae 2:ebe7029e2825 947 /**
admcrae 2:ebe7029e2825 948 * Reads an image parameter. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 949 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 950 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 951 * @param Offset Offset of word to be read.
admcrae 2:ebe7029e2825 952 * @return The word that is read.
admcrae 2:ebe7029e2825 953 */
admcrae 2:ebe7029e2825 954 uint16_t img_GetWord(uint16_t Handle, uint16_t Index, Picaso::ImageControlOffset Offset);
admcrae 2:ebe7029e2825 955
admcrae 2:ebe7029e2825 956 /**
admcrae 2:ebe7029e2825 957 * Displays image from list. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 958 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 959 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 960 * @return Nonzero if successful, 0 if not.
admcrae 2:ebe7029e2825 961 */
admcrae 2:ebe7029e2825 962 uint16_t img_Show(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 963
admcrae 2:ebe7029e2825 964 /**
admcrae 2:ebe7029e2825 965 * Sets one or more image attribute flags. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 966 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 967 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 968 * @param Value Mask of bits to be set. OR together multiple attribute flags to set multiple.
admcrae 2:ebe7029e2825 969 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 970 */
admcrae 2:ebe7029e2825 971 uint16_t img_SetAttributes(uint16_t Handle, uint16_t Index, Picaso::ImageAttribute Value);
admcrae 2:ebe7029e2825 972
admcrae 2:ebe7029e2825 973 /**
admcrae 2:ebe7029e2825 974 * Clears one or more image attribute flags. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 975 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 976 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 977 * @param Value Mask of bits to be cleared. OR together multiple attribute flags to clear multiple.
admcrae 2:ebe7029e2825 978 * @return 1 if successful, 0 if not.
admcrae 2:ebe7029e2825 979 */
admcrae 2:ebe7029e2825 980 uint16_t img_ClearAttributes(uint16_t Handle, uint16_t Index, Picaso::ImageAttribute Value);
admcrae 2:ebe7029e2825 981
admcrae 2:ebe7029e2825 982 /**
admcrae 2:ebe7029e2825 983 * Returns whether an image has been touched. An image control must have already been created with the file_LoadImageControl command.
admcrae 2:ebe7029e2825 984 * @param Handle Pointer to image list.
admcrae 2:ebe7029e2825 985 * @param Index Index of image in list.
admcrae 2:ebe7029e2825 986 * @return Image index if touched, -1 if not. If -1 is passed as index, returns index of an image if it is touched.
admcrae 2:ebe7029e2825 987 */
admcrae 2:ebe7029e2825 988 uint16_t img_Touched(uint16_t Handle, uint16_t Index);
admcrae 2:ebe7029e2825 989
admcrae 2:ebe7029e2825 990 /**
admcrae 2:ebe7029e2825 991 * Performs block image transfer onto screen.
admcrae 2:ebe7029e2825 992 * @param X,Y Coordinates of top-left corner of location where image is to be displayed.
admcrae 2:ebe7029e2825 993 * @param Width,Height Width and height of image to be displayed.
admcrae 2:ebe7029e2825 994 * @param Pixels Array of bytes containing pixel data. Each pixel is 16-bits of color information (see Picaso::Color).
admcrae 2:ebe7029e2825 995 */
admcrae 2:ebe7029e2825 996 void blitComtoDisplay(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height, char* Pixels);
admcrae 2:ebe7029e2825 997
admcrae 2:ebe7029e2825 998
admcrae 2:ebe7029e2825 999 // System commands:
admcrae 2:ebe7029e2825 1000
admcrae 2:ebe7029e2825 1001 /**
admcrae 2:ebe7029e2825 1002 * Releases memory block.
admcrae 2:ebe7029e2825 1003 * @param Handle Pointer to memory block.
admcrae 2:ebe7029e2825 1004 * @return Nonzero if successful, 0 if not.
admcrae 2:ebe7029e2825 1005 */
admcrae 2:ebe7029e2825 1006 uint16_t mem_Free(uint16_t Handle);
admcrae 2:ebe7029e2825 1007
admcrae 2:ebe7029e2825 1008 /**
admcrae 2:ebe7029e2825 1009 * Returns byte size of lergest available memory chunk on the heap.
admcrae 2:ebe7029e2825 1010 */
admcrae 2:ebe7029e2825 1011 uint16_t mem_Heap(void);
admcrae 2:ebe7029e2825 1012
admcrae 2:ebe7029e2825 1013 /**
admcrae 2:ebe7029e2825 1014 * Returns contents of memory address. Addresses can be calculated with pointers and offsets, and Picaso::MemAddresses and Picaso::MemOffsets also have some useful values.
admcrae 2:ebe7029e2825 1015 */
admcrae 2:ebe7029e2825 1016 uint16_t peekM(uint16_t Address) ;
admcrae 2:ebe7029e2825 1017
admcrae 2:ebe7029e2825 1018 /**
admcrae 2:ebe7029e2825 1019 * Writes word to memory address. Addresses can be calculated with pointers and offsets, and Picaso::MemAddresses and Picaso::MemOffsets also have some useful values.
admcrae 2:ebe7029e2825 1020 */
admcrae 2:ebe7029e2825 1021 void pokeM(uint16_t Address, uint16_t WordValue) ;
admcrae 2:ebe7029e2825 1022
admcrae 2:ebe7029e2825 1023 /**
admcrae 2:ebe7029e2825 1024 * Returns display model name as unterminated string.
admcrae 2:ebe7029e2825 1025 * @param ModelStr Array of characters in which to store returned string.
admcrae 2:ebe7029e2825 1026 * @return Number of characters in returned string.
admcrae 2:ebe7029e2825 1027 */
admcrae 2:ebe7029e2825 1028 uint16_t sys_GetModel(char *ModelStr);
admcrae 2:ebe7029e2825 1029
admcrae 2:ebe7029e2825 1030 /**
admcrae 2:ebe7029e2825 1031 * Returns version of the SPE (Serial Programming Environment) installed on the display.
admcrae 2:ebe7029e2825 1032 */
admcrae 2:ebe7029e2825 1033 uint16_t sys_GetVersion(void);
admcrae 2:ebe7029e2825 1034
admcrae 2:ebe7029e2825 1035 /**
admcrae 2:ebe7029e2825 1036 * Returns version of the PmmC (firmware) installed on the display.
admcrae 2:ebe7029e2825 1037 */
admcrae 2:ebe7029e2825 1038 uint16_t sys_GetPmmC(void);
admcrae 2:ebe7029e2825 1039
admcrae 2:ebe7029e2825 1040 /**
admcrae 2:ebe7029e2825 1041 * Puts display and processor in low-power state for specified period of time.
admcrae 2:ebe7029e2825 1042 * @param Units If 1-65535, sleeps for that many units of time (each unit is approximately 1 second). If 0, sleeps forever (needs to be reset).
admcrae 2:ebe7029e2825 1043 */
admcrae 2:ebe7029e2825 1044 uint16_t sys_Sleep(uint16_t Units);
admcrae 2:ebe7029e2825 1045
admcrae 2:ebe7029e2825 1046
admcrae 2:ebe7029e2825 1047 // I/O commands:
admcrae 2:ebe7029e2825 1048
admcrae 2:ebe7029e2825 1049 /**
admcrae 2:ebe7029e2825 1050 * Returns value of bus pins (in lower 8 bits of returned value).
admcrae 2:ebe7029e2825 1051 */
admcrae 2:ebe7029e2825 1052 uint16_t bus_In(void);
admcrae 2:ebe7029e2825 1053
admcrae 2:ebe7029e2825 1054 /**
admcrae 2:ebe7029e2825 1055 * Sets value of bus pins. Bus pins must first be set to output.
admcrae 2:ebe7029e2825 1056 * @param Bits Value to write to pins in lower 8 bits. Upper 8 bits are ignored.
admcrae 2:ebe7029e2825 1057 */
admcrae 2:ebe7029e2825 1058 void bus_Out(uint16_t Bits);
admcrae 2:ebe7029e2825 1059
admcrae 2:ebe7029e2825 1060 /**
admcrae 2:ebe7029e2825 1061 * Reads bus pins. The BUS_RD pin is set low, pins are set after a 50ns delay, and finally the BUS_RD pin is set high again.
admcrae 2:ebe7029e2825 1062 */
admcrae 2:ebe7029e2825 1063 uint16_t bus_Read(void);
admcrae 2:ebe7029e2825 1064
admcrae 2:ebe7029e2825 1065 /**
admcrae 2:ebe7029e2825 1066 * Sets directions of bus pins.
admcrae 2:ebe7029e2825 1067 * Lower 8 bits contain pin directions. 1 -> input, 0 -> output. Upper 8 bits are ignored.
admcrae 2:ebe7029e2825 1068 */
admcrae 2:ebe7029e2825 1069 void bus_Set(uint16_t IOMap);
admcrae 2:ebe7029e2825 1070
admcrae 2:ebe7029e2825 1071 /**
admcrae 2:ebe7029e2825 1072 * Writes to bus. Bus pins must first be set to output. Lower 8 bits of argument are written to pins, and then the BUS_WR pin is brought low for approximately 50ns.
admcrae 2:ebe7029e2825 1073 */
admcrae 2:ebe7029e2825 1074 void bus_Write(uint16_t Bits);
admcrae 2:ebe7029e2825 1075
admcrae 2:ebe7029e2825 1076 /**
admcrae 2:ebe7029e2825 1077 * Sets a pin high. If the pin is not already an output, it is made an output.
admcrae 2:ebe7029e2825 1078 * @return 1 if the pin number was legal.
admcrae 2:ebe7029e2825 1079 */
admcrae 2:ebe7029e2825 1080 uint16_t pin_HI(Picaso::Pin Pin);
admcrae 2:ebe7029e2825 1081
admcrae 2:ebe7029e2825 1082 /**
admcrae 2:ebe7029e2825 1083 * Sets a pin low. If the pin is not already an output, it is made an output.
admcrae 2:ebe7029e2825 1084 * @return 1 if the pin number was legal.
admcrae 2:ebe7029e2825 1085 */
admcrae 2:ebe7029e2825 1086 uint16_t pin_LO(Picaso::Pin Pin);
admcrae 2:ebe7029e2825 1087
admcrae 2:ebe7029e2825 1088 /**
admcrae 2:ebe7029e2825 1089 * Reads a pin.
admcrae 2:ebe7029e2825 1090 */
admcrae 2:ebe7029e2825 1091 uint16_t pin_Read(Picaso::Pin Pin);
admcrae 2:ebe7029e2825 1092
admcrae 2:ebe7029e2825 1093 /**
admcrae 2:ebe7029e2825 1094 * Sets a pin as an input or an output.
admcrae 2:ebe7029e2825 1095 * @param Mode 1 or Picaso::INPUT for input, 0 or Picaso::OUTPUT for output.
admcrae 2:ebe7029e2825 1096 * @param Pin Pin to be set.
admcrae 2:ebe7029e2825 1097 * @return 1 if pin number is legal.
admcrae 2:ebe7029e2825 1098 */
admcrae 2:ebe7029e2825 1099 uint16_t pin_Set(uint16_t Mode, Picaso::Pin Pin);
admcrae 2:ebe7029e2825 1100
admcrae 2:ebe7029e2825 1101
admcrae 2:ebe7029e2825 1102
admcrae 2:ebe7029e2825 1103 // Serial communication command:
admcrae 2:ebe7029e2825 1104
admcrae 2:ebe7029e2825 1105 /**
admcrae 2:ebe7029e2825 1106 * Set baud rate of serial interface with display.
admcrae 2:ebe7029e2825 1107 */
admcrae 2:ebe7029e2825 1108 void setbaudWait(Picaso::BaudRate Newrate);
admcrae 2:ebe7029e2825 1109
admcrae 2:ebe7029e2825 1110
admcrae 0:e314f3b805ed 1111
admcrae 0:e314f3b805ed 1112 private:
admcrae 0:e314f3b805ed 1113
admcrae 0:e314f3b805ed 1114 #if LCD_USING_MODSERIAL
admcrae 0:e314f3b805ed 1115 MODSERIAL serial;
admcrae 0:e314f3b805ed 1116 #else
admcrae 0:e314f3b805ed 1117 Serial serial;
admcrae 0:e314f3b805ed 1118 #endif
admcrae 0:e314f3b805ed 1119
admcrae 0:e314f3b805ed 1120 DigitalOut rst;
admcrae 0:e314f3b805ed 1121 Timer timer;
admcrae 0:e314f3b805ed 1122
admcrae 0:e314f3b805ed 1123 void WriteBytes(char* psOutput, int count);
admcrae 0:e314f3b805ed 1124 void WriteChars(char* psOutput);
admcrae 2:ebe7029e2825 1125 void WriteWords(uint16_t* source, int count);
admcrae 0:e314f3b805ed 1126 int ReadSerPort(char *psData, int iMax);
admcrae 0:e314f3b805ed 1127 void getbytes(char *data, int size);
admcrae 0:e314f3b805ed 1128 void GetAck();
admcrae 2:ebe7029e2825 1129 uint16_t GetWord();
admcrae 0:e314f3b805ed 1130 void getString(char *outStr, int strLen);
admcrae 2:ebe7029e2825 1131 uint16_t GetAckResp();
admcrae 2:ebe7029e2825 1132 uint16_t WaitForAck();
admcrae 2:ebe7029e2825 1133 uint16_t GetAckRes2Words(uint16_t * word1, uint16_t * word2);
admcrae 2:ebe7029e2825 1134 void GetAck2Words(uint16_t * word1, uint16_t * word2);
admcrae 2:ebe7029e2825 1135 uint16_t GetAckResSector(char* Sector);
admcrae 2:ebe7029e2825 1136 uint16_t GetAckResStr(char * OutStr);
admcrae 2:ebe7029e2825 1137 uint16_t GetAckResData(char* OutData, uint16_t size);
admcrae 2:ebe7029e2825 1138 void SetThisBaudrate(Picaso::BaudRate NewRate);
admcrae 0:e314f3b805ed 1139
admcrae 0:e314f3b805ed 1140 void LCD_wait_ms(int ms);
admcrae 0:e314f3b805ed 1141 void rxFlush();
admcrae 0:e314f3b805ed 1142
admcrae 0:e314f3b805ed 1143 int Error4D ; // Error indicator, used and set by Intrinsic routines
admcrae 0:e314f3b805ed 1144 int TimeLimit4D; // time limit in ms for total serial command duration, 2000 (2 seconds) should be adequate for most commands
admcrae 0:e314f3b805ed 1145 // assuming a reasonable baud rate AND low latency AND 0 for the Serial Delay Parameter
admcrae 0:e314f3b805ed 1146 // temporary increase might be required for very long (bitmap write, large image file opens)
admcrae 2:ebe7029e2825 1147 // or indeterminate (eg file_exec, file_run, file_callFunction) commands
admcrae 0:e314f3b805ed 1148 };
admcrae 0:e314f3b805ed 1149 #endif