Extended library to include a screensaver

Dependencies:   SDFileSystem

Fork of 4DGL-uLCD-SE by Jay Danner

Committer:
macenzofan
Date:
Wed Feb 08 21:53:30 2017 +0000
Revision:
3:f09725357991
Parent:
0:975087cba076
IOT EC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jdanner3 0:975087cba076 1 //
jdanner3 0:975087cba076 2 // uLCD_4DGL is a class to drive 4D Systems LCD screens
jdanner3 0:975087cba076 3 //
jdanner3 0:975087cba076 4 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
jdanner3 0:975087cba076 5 // Modifed for Goldelox processor <2013> Jim Hamblen
jdanner3 0:975087cba076 6 //
jdanner3 0:975087cba076 7 // uLCD_4DGL is free software: you can redistribute it and/or modify
jdanner3 0:975087cba076 8 // it under the terms of the GNU General Public License as published by
jdanner3 0:975087cba076 9 // the Free Software Foundation, either version 3 of the License, or
jdanner3 0:975087cba076 10 // (at your option) any later version.
jdanner3 0:975087cba076 11 //
jdanner3 0:975087cba076 12 // uLCD_4DGL is distributed in the hope that it will be useful,
jdanner3 0:975087cba076 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
jdanner3 0:975087cba076 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
jdanner3 0:975087cba076 15 // GNU General Public License for more details.
jdanner3 0:975087cba076 16 //
jdanner3 0:975087cba076 17 // You should have received a copy of the GNU General Public License
jdanner3 0:975087cba076 18 // along with uLCD_4DGL. If not, see <http://www.gnu.org/licenses/>.
jdanner3 0:975087cba076 19
jdanner3 0:975087cba076 20 #include "mbed.h"
jdanner3 0:975087cba076 21 #include "uLCD_4DGL.h"
jdanner3 0:975087cba076 22
jdanner3 0:975087cba076 23
jdanner3 0:975087cba076 24 //Media Commands
jdanner3 0:975087cba076 25
jdanner3 0:975087cba076 26 //******************************************************************************************************
jdanner3 0:975087cba076 27 int uLCD_4DGL :: media_init()
jdanner3 0:975087cba076 28 {
jdanner3 0:975087cba076 29 int resp = 0;
jdanner3 0:975087cba076 30 char command[1] = "";
jdanner3 0:975087cba076 31 command[0] = MINIT;
jdanner3 0:975087cba076 32 writeCOMMAND(command, 1);
jdanner3 0:975087cba076 33 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
jdanner3 0:975087cba076 34 if (_cmd.readable()) {
jdanner3 0:975087cba076 35 resp = _cmd.getc(); // read response
jdanner3 0:975087cba076 36 resp = resp << 8 + _cmd.getc();
jdanner3 0:975087cba076 37 }
jdanner3 0:975087cba076 38 return resp;
jdanner3 0:975087cba076 39 }
jdanner3 0:975087cba076 40
jdanner3 0:975087cba076 41 //******************************************************************************************************
jdanner3 0:975087cba076 42 void uLCD_4DGL :: set_byte_address(int hi, int lo)
jdanner3 0:975087cba076 43 {
jdanner3 0:975087cba076 44 char command[5]= "";
jdanner3 0:975087cba076 45 command[0] = SBADDRESS;
jdanner3 0:975087cba076 46
jdanner3 0:975087cba076 47 command[1] = (hi >> 8) & 0xFF;
jdanner3 0:975087cba076 48 command[2] = hi & 0xFF;
jdanner3 0:975087cba076 49
jdanner3 0:975087cba076 50 command[3] = (lo >> 8) & 0xFF;
jdanner3 0:975087cba076 51 command[4] = lo & 0xFF;
jdanner3 0:975087cba076 52 writeCOMMAND(command, 5);
jdanner3 0:975087cba076 53 }
jdanner3 0:975087cba076 54
jdanner3 0:975087cba076 55 //******************************************************************************************************
jdanner3 0:975087cba076 56 void uLCD_4DGL :: set_sector_address(int hi, int lo)
jdanner3 0:975087cba076 57 {
jdanner3 0:975087cba076 58
jdanner3 0:975087cba076 59 char command[5]= "";
jdanner3 0:975087cba076 60 command[0] = SSADDRESS;
jdanner3 0:975087cba076 61
jdanner3 0:975087cba076 62 command[1] = (hi >> 8) & 0xFF;
jdanner3 0:975087cba076 63 command[2] = hi & 0xFF;
jdanner3 0:975087cba076 64
jdanner3 0:975087cba076 65 command[3] = (lo >> 8) & 0xFF;
jdanner3 0:975087cba076 66 command[4] = lo & 0xFF;
jdanner3 0:975087cba076 67 writeCOMMAND(command, 5);
jdanner3 0:975087cba076 68 }
jdanner3 0:975087cba076 69
jdanner3 0:975087cba076 70 //******************************************************************************************************
jdanner3 0:975087cba076 71 char uLCD_4DGL :: read_byte()
jdanner3 0:975087cba076 72 {
jdanner3 0:975087cba076 73 char resp = 0;
jdanner3 0:975087cba076 74 char command[1] = "";
jdanner3 0:975087cba076 75 command[0] = READBYTE;
jdanner3 0:975087cba076 76 writeCOMMAND(command, 1);
jdanner3 0:975087cba076 77 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
jdanner3 0:975087cba076 78 if (_cmd.readable()) {
jdanner3 0:975087cba076 79 resp = _cmd.getc(); // read response
jdanner3 0:975087cba076 80 resp = _cmd.getc();
jdanner3 0:975087cba076 81 }
jdanner3 0:975087cba076 82 return resp;
jdanner3 0:975087cba076 83 }
jdanner3 0:975087cba076 84
jdanner3 0:975087cba076 85 //******************************************************************************************************
jdanner3 0:975087cba076 86 int uLCD_4DGL :: read_word()
jdanner3 0:975087cba076 87 {
jdanner3 0:975087cba076 88 int resp=0;
jdanner3 0:975087cba076 89 char command[1] = "";
jdanner3 0:975087cba076 90 command[0] = READWORD;
jdanner3 0:975087cba076 91 writeCOMMAND(command, 1);
jdanner3 0:975087cba076 92 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
jdanner3 0:975087cba076 93 if (_cmd.readable()) {
jdanner3 0:975087cba076 94 resp = _cmd.getc(); // read response
jdanner3 0:975087cba076 95 resp = resp << 8 + _cmd.getc();
jdanner3 0:975087cba076 96 }
jdanner3 0:975087cba076 97 return resp;
jdanner3 0:975087cba076 98 }
jdanner3 0:975087cba076 99
jdanner3 0:975087cba076 100 //******************************************************************************************************
jdanner3 0:975087cba076 101 void uLCD_4DGL :: write_byte(int value)
jdanner3 0:975087cba076 102 {
jdanner3 0:975087cba076 103 char command[3]= "";
jdanner3 0:975087cba076 104
jdanner3 0:975087cba076 105 command[0] = WRITEBYTE;
jdanner3 0:975087cba076 106
jdanner3 0:975087cba076 107 command[1] = (value >> 8) & 0xFF;
jdanner3 0:975087cba076 108 command[2] = value & 0xFF;
jdanner3 0:975087cba076 109 writeCOMMAND(command,3);
jdanner3 0:975087cba076 110 }
jdanner3 0:975087cba076 111
jdanner3 0:975087cba076 112 //******************************************************************************************************
jdanner3 0:975087cba076 113 void uLCD_4DGL :: write_word(int value)
jdanner3 0:975087cba076 114 {
jdanner3 0:975087cba076 115 char command[3]= "";
jdanner3 0:975087cba076 116
jdanner3 0:975087cba076 117 command[0] = WRITEWORD;
jdanner3 0:975087cba076 118
jdanner3 0:975087cba076 119 command[1] = (value >> 8) & 0xFF;
jdanner3 0:975087cba076 120 command[2] = value & 0xFF;
jdanner3 0:975087cba076 121 writeCOMMAND(command,3);
jdanner3 0:975087cba076 122 }
jdanner3 0:975087cba076 123
jdanner3 0:975087cba076 124 //******************************************************************************************************
jdanner3 0:975087cba076 125 void uLCD_4DGL :: flush_media()
jdanner3 0:975087cba076 126 {
jdanner3 0:975087cba076 127 char command[1] = "";
jdanner3 0:975087cba076 128 command[0] = FLUSHMEDIA;
jdanner3 0:975087cba076 129 writeCOMMAND(command, 1);
jdanner3 0:975087cba076 130 }
jdanner3 0:975087cba076 131
jdanner3 0:975087cba076 132 //******************************************************************************************************
jdanner3 0:975087cba076 133 void uLCD_4DGL :: display_image(int x, int y, bool isScreenSaverCommand)
jdanner3 0:975087cba076 134 {
jdanner3 0:975087cba076 135 char command[6]= "";
jdanner3 0:975087cba076 136 command[0] = DISPLAYIMAGE;
jdanner3 0:975087cba076 137
jdanner3 0:975087cba076 138 command[1] = (x >> 8) & 0xFF;
jdanner3 0:975087cba076 139 command[2] = x & 0xFF;
jdanner3 0:975087cba076 140
jdanner3 0:975087cba076 141 command[3] = (y >> 8) & 0xFF;
jdanner3 0:975087cba076 142 command[4] = y & 0xFF;
jdanner3 0:975087cba076 143 writeCOMMAND(command, 5);
jdanner3 0:975087cba076 144 if (!isScreenSaverCommand) reportScreenInteraction();
jdanner3 0:975087cba076 145 }
jdanner3 0:975087cba076 146
jdanner3 0:975087cba076 147 //******************************************************************************************************
jdanner3 0:975087cba076 148 void uLCD_4DGL :: display_video(int x, int y, bool isScreenSaverCommand)
jdanner3 0:975087cba076 149 {
jdanner3 0:975087cba076 150 char command[5]= "";
jdanner3 0:975087cba076 151 command[0] = DISPLAYVIDEO;
jdanner3 0:975087cba076 152
jdanner3 0:975087cba076 153 command[1] = (x >> 8) & 0xFF;
jdanner3 0:975087cba076 154 command[2] = x & 0xFF;
jdanner3 0:975087cba076 155
jdanner3 0:975087cba076 156 command[3] = (y >> 8) & 0xFF;
jdanner3 0:975087cba076 157 command[4] = y & 0xFF;
jdanner3 0:975087cba076 158 writeCOMMAND(command, 5);
jdanner3 0:975087cba076 159 if (!isScreenSaverCommand) reportScreenInteraction();
jdanner3 0:975087cba076 160 }
jdanner3 0:975087cba076 161
jdanner3 0:975087cba076 162 //******************************************************************************************************
jdanner3 0:975087cba076 163 void uLCD_4DGL :: display_frame(int x, int y, int w, bool isScreenSaverCommand)
jdanner3 0:975087cba076 164 {
jdanner3 0:975087cba076 165 char command[7]= "";
jdanner3 0:975087cba076 166
jdanner3 0:975087cba076 167 command[0] = DISPLAYFRAME;
jdanner3 0:975087cba076 168
jdanner3 0:975087cba076 169 command[1] = (x >> 8) & 0xFF;
jdanner3 0:975087cba076 170 command[2] = x & 0xFF;
jdanner3 0:975087cba076 171
jdanner3 0:975087cba076 172 command[3] = (y >> 8) & 0xFF;
jdanner3 0:975087cba076 173 command[4] = y & 0xFF;
jdanner3 0:975087cba076 174
jdanner3 0:975087cba076 175 command[5] = (w >> 8) & 0xFF;
jdanner3 0:975087cba076 176 command[6] = w & 0xFF;
jdanner3 0:975087cba076 177 writeCOMMAND(command,7);
jdanner3 0:975087cba076 178 if (!isScreenSaverCommand) reportScreenInteraction();
jdanner3 0:975087cba076 179 }
jdanner3 0:975087cba076 180