Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of 4DGL-uLCD-SE by
Diff: uLCD_4DGL_Touch.cpp
- Revision:
- 6:b759b69cbaf9
- Parent:
- 1:8b656995301f
--- a/uLCD_4DGL_Touch.cpp Fri Nov 22 02:44:37 2013 +0000
+++ b/uLCD_4DGL_Touch.cpp Mon Nov 25 04:24:22 2013 +0000
@@ -1,5 +1,5 @@
//
-// uLCD_4DGL is a class to drive 4D Systems TFT touch screens
+// uLCD_4DGL is a class to drive 4D Systems LCD screens
//
// Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
//
@@ -20,7 +20,8 @@
#include "uLCD_4DGL.h"
//******************************************************************************************************
-void uLCD_4DGL :: touch_mode(char mode) { // Send touch mode (WAIT, PRESS, RELEASE or MOVE)
+void uLCD_4DGL :: touch_mode(char mode) // Send touch mode (WAIT, PRESS, RELEASE or MOVE)
+{
char command[2]= "";
@@ -31,30 +32,33 @@
}
//******************************************************************************************************
-void uLCD_4DGL :: get_touch(int *x, int *y) { // Get the touch coordinates
+void uLCD_4DGL :: get_touch(int *x, int *y) // Get the touch coordinates
+{
char command[2] = "";
-
+
command[0] = GETTOUCH;
command[1] = GETPOSITION;
-
+
getTOUCH(command, 2, x, y);
}
//******************************************************************************************************
-int uLCD_4DGL :: touch_status(void) { // Get the touch screen status
+int uLCD_4DGL :: touch_status(void) // Get the touch screen status
+{
char command[2] = "";
-
+
command[0] = GETTOUCH;
command[1] = STATUS;
-
+
return getSTATUS(command, 2);
}
//******************************************************************************************************
-void uLCD_4DGL :: wait_touch(int delay) { // wait until touch within a delay in milliseconds
+void uLCD_4DGL :: wait_touch(int delay) // wait until touch within a delay in milliseconds
+{
char command[3]= "";
@@ -67,7 +71,8 @@
}
//******************************************************************************************************
-void uLCD_4DGL :: set_touch(int x1, int y1 , int x2, int y2) { // define touch area
+void uLCD_4DGL :: set_touch(int x1, int y1 , int x2, int y2) // define touch area
+{
char command[9]= "";
@@ -86,4 +91,157 @@
command[8] = y2 & 0xFF;
writeCOMMAND(command, 9);
-}
\ No newline at end of file
+}
+//Media Commands
+
+//******************************************************************************************************
+int uLCD_4DGL :: media_init()
+{
+ int resp = 0;
+ char command[1] = "";
+ command[0] = MINIT;
+ writeCOMMAND(command, 1);
+ while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
+ if (_cmd.readable()) {
+ resp = _cmd.getc(); // read response
+ resp = resp << 8 + _cmd.getc();
+ }
+ return resp;
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: set_byte_address(int hi, int lo)
+{
+ char command[5]= "";
+ command[0] = SBADDRESS;
+
+ command[1] = (hi >> 8) & 0xFF;
+ command[2] = hi & 0xFF;
+
+ command[3] = (lo >> 8) & 0xFF;
+ command[4] = lo & 0xFF;
+ writeCOMMAND(command, 5);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: set_sector_address(int hi, int lo)
+{
+
+ char command[5]= "";
+ command[0] = SSADDRESS;
+
+ command[1] = (hi >> 8) & 0xFF;
+ command[2] = hi & 0xFF;
+
+ command[3] = (lo >> 8) & 0xFF;
+ command[4] = lo & 0xFF;
+ writeCOMMAND(command, 5);
+}
+
+//******************************************************************************************************
+char uLCD_4DGL :: read_byte()
+{
+ char resp = 0;
+ char command[1] = "";
+ command[0] = READBYTE;
+ writeCOMMAND(command, 1);
+ while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
+ if (_cmd.readable()) {
+ resp = _cmd.getc(); // read response
+ resp = _cmd.getc();
+ }
+ return resp;
+}
+
+//******************************************************************************************************
+int uLCD_4DGL :: read_word()
+{
+ int resp=0;
+ char command[1] = "";
+ command[0] = READWORD;
+ writeCOMMAND(command, 1);
+ while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
+ if (_cmd.readable()) {
+ resp = _cmd.getc(); // read response
+ resp = resp << 8 + _cmd.getc();
+ }
+ return resp;
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: write_byte(int value)
+{
+ char command[3]= "";
+
+ command[0] = WRITEBYTE;
+
+ command[1] = (value >> 8) & 0xFF;
+ command[2] = value & 0xFF;
+ writeCOMMAND(command,3);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: write_word(int value)
+{
+ char command[3]= "";
+
+ command[0] = WRITEWORD;
+
+ command[1] = (value >> 8) & 0xFF;
+ command[2] = value & 0xFF;
+ writeCOMMAND(command,3);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: flush_media()
+{
+ char command[1] = "";
+ command[0] = FLUSHMEDIA;
+ writeCOMMAND(command, 1);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: display_image(int x, int y)
+{
+ char command[6]= "";
+ command[0] = DISPLAYIMAGE;
+
+ command[1] = (x >> 8) & 0xFF;
+ command[2] = x & 0xFF;
+
+ command[3] = (y >> 8) & 0xFF;
+ command[4] = y & 0xFF;
+ writeCOMMAND(command, 5);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: display_video(int x, int y)
+{
+ char command[5]= "";
+ command[0] = DISPLAYVIDEO;
+
+ command[1] = (x >> 8) & 0xFF;
+ command[2] = x & 0xFF;
+
+ command[3] = (y >> 8) & 0xFF;
+ command[4] = y & 0xFF;
+ writeCOMMAND(command, 5);
+}
+
+//******************************************************************************************************
+void uLCD_4DGL :: display_frame(int x, int y, int w)
+{
+ char command[7]= "";
+
+ command[0] = DISPLAYFRAME;
+
+ command[1] = (x >> 8) & 0xFF;
+ command[2] = x & 0xFF;
+
+ command[3] = (y >> 8) & 0xFF;
+ command[4] = y & 0xFF;
+
+ command[5] = (w >> 8) & 0xFF;
+ command[6] = w & 0xFF;
+ writeCOMMAND(command,7);
+}
