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:
Wed Mar 11 19:50:55 2015 +0000
Revision:
6:70c65c7c4337
Parent:
5:ec04cd4e98ce
Rev 2.0

Who changed what in which revision?

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