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

Dependencies:   MODSERIAL

Dependents:   Lab4_Demo_Game 4180_Final_Project

Fork of uLCD_4D_Picaso by Andrew McRae

Committer:
shorwich
Date:
Thu Oct 27 23:42:13 2016 +0000
Revision:
9:72f00cef468b
Parent:
8:25147173a168
Moved graphics command functions to separate file for clarity.

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