This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest

Dependencies:   GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
vipinranka
Date:
Wed Jan 11 11:41:30 2017 +0000
Revision:
12:9a20164dcc47
This is the final version MGAS Project for Renesas GR Peach Design Contest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vipinranka 12:9a20164dcc47 1 /******************************************************************
vipinranka 12:9a20164dcc47 2 ***** *****
vipinranka 12:9a20164dcc47 3 ***** Name: Touch.h *****
vipinranka 12:9a20164dcc47 4 ***** Ver.: 1.0 *****
vipinranka 12:9a20164dcc47 5 ***** Date: 04/01/2013 *****
vipinranka 12:9a20164dcc47 6 ***** Auth: Frank Vannieuwkerke *****
vipinranka 12:9a20164dcc47 7 ***** Erik Olieman *****
vipinranka 12:9a20164dcc47 8 ***** Func: Touch driver for use with ADS7843 *****
vipinranka 12:9a20164dcc47 9 ***** *****
vipinranka 12:9a20164dcc47 10 ******************************************************************/
vipinranka 12:9a20164dcc47 11
vipinranka 12:9a20164dcc47 12 #ifndef MBED_Touch_H
vipinranka 12:9a20164dcc47 13 #define MBED_Touch_H
vipinranka 12:9a20164dcc47 14
vipinranka 12:9a20164dcc47 15 #include "ILI9486.h"
vipinranka 12:9a20164dcc47 16 #include "mbed.h"
vipinranka 12:9a20164dcc47 17
vipinranka 12:9a20164dcc47 18 typedef struct
vipinranka 12:9a20164dcc47 19 {
vipinranka 12:9a20164dcc47 20 int x;
vipinranka 12:9a20164dcc47 21 int y;
vipinranka 12:9a20164dcc47 22 } Coordinate;
vipinranka 12:9a20164dcc47 23
vipinranka 12:9a20164dcc47 24 typedef struct
vipinranka 12:9a20164dcc47 25 {
vipinranka 12:9a20164dcc47 26 int An,
vipinranka 12:9a20164dcc47 27 Bn,
vipinranka 12:9a20164dcc47 28 Cn,
vipinranka 12:9a20164dcc47 29 Dn,
vipinranka 12:9a20164dcc47 30 En,
vipinranka 12:9a20164dcc47 31 Fn,
vipinranka 12:9a20164dcc47 32 Divider ;
vipinranka 12:9a20164dcc47 33 } Matrix;
vipinranka 12:9a20164dcc47 34
vipinranka 12:9a20164dcc47 35 class TouchScreenADS7843 {
vipinranka 12:9a20164dcc47 36 public:
vipinranka 12:9a20164dcc47 37 Coordinate display;
vipinranka 12:9a20164dcc47 38 Coordinate screen;
vipinranka 12:9a20164dcc47 39
vipinranka 12:9a20164dcc47 40 /*
vipinranka 12:9a20164dcc47 41 * Create a Touchscreen object connected to SPI and two pins.
vipinranka 12:9a20164dcc47 42 *
vipinranka 12:9a20164dcc47 43 * @param mosi,miso,sclk SPI
vipinranka 12:9a20164dcc47 44 * @param cs pin connected to CS of ADS7843
vipinranka 12:9a20164dcc47 45 * @param irq pin connected to IRQ of ADS7843
vipinranka 12:9a20164dcc47 46 * @param pointer to SPI_TFT constructor
vipinranka 12:9a20164dcc47 47 *
vipinranka 12:9a20164dcc47 48 */
vipinranka 12:9a20164dcc47 49 TouchScreenADS7843(PinName tp_mosi, PinName tp_miso, PinName tp_sclk, PinName tp_cs, PinName tp_irq, ILI9486*_LCD);
vipinranka 12:9a20164dcc47 50
vipinranka 12:9a20164dcc47 51 /*
vipinranka 12:9a20164dcc47 52 * Draw a 2 by 2 dot on the LCD screen.
vipinranka 12:9a20164dcc47 53 *
vipinranka 12:9a20164dcc47 54 * @param x (horizontal position)
vipinranka 12:9a20164dcc47 55 * @param y (vertical position)
vipinranka 12:9a20164dcc47 56 * @param color (16 bit pixel color)
vipinranka 12:9a20164dcc47 57 *
vipinranka 12:9a20164dcc47 58 */
vipinranka 12:9a20164dcc47 59 void TP_DrawPoint(unsigned int Xpos,unsigned int Ypos,unsigned int color);
vipinranka 12:9a20164dcc47 60
vipinranka 12:9a20164dcc47 61 /*
vipinranka 12:9a20164dcc47 62 * Obtain averaged data from ADS7846.
vipinranka 12:9a20164dcc47 63 * does 9 consecutive reads and only stores averaged data
vipinranka 12:9a20164dcc47 64 * when the 9 points are within the treshold limits.
vipinranka 12:9a20164dcc47 65 *
vipinranka 12:9a20164dcc47 66 * @param screenPTR (pointer to store data)
vipinranka 12:9a20164dcc47 67 * @returns 1 on success
vipinranka 12:9a20164dcc47 68 * @returns 0 on failure
vipinranka 12:9a20164dcc47 69 *
vipinranka 12:9a20164dcc47 70 * If called with screenPTR = NULL - 'screen' variable is used, otherwise (parameter) is used.
vipinranka 12:9a20164dcc47 71 *
vipinranka 12:9a20164dcc47 72 */
vipinranka 12:9a20164dcc47 73 unsigned char Read_Ads7843(Coordinate * screenPtr = NULL);
vipinranka 12:9a20164dcc47 74
vipinranka 12:9a20164dcc47 75 /*
vipinranka 12:9a20164dcc47 76 * Calibrate the touch panel.
vipinranka 12:9a20164dcc47 77 * Three crosshairs are drawn and need to be touched in sequence.
vipinranka 12:9a20164dcc47 78 * A calibration matrix is set accordingly.
vipinranka 12:9a20164dcc47 79 *
vipinranka 12:9a20164dcc47 80 */
vipinranka 12:9a20164dcc47 81 void TouchPanel_Calibrate(void);
vipinranka 12:9a20164dcc47 82
vipinranka 12:9a20164dcc47 83 /*
vipinranka 12:9a20164dcc47 84 * Obtain real x,y coordinates.
vipinranka 12:9a20164dcc47 85 * The x,y coordinates are calculated using the calibration matrix.
vipinranka 12:9a20164dcc47 86 *
vipinranka 12:9a20164dcc47 87 */
vipinranka 12:9a20164dcc47 88 unsigned char getDisplayPoint(void);
vipinranka 12:9a20164dcc47 89
vipinranka 12:9a20164dcc47 90 /*
vipinranka 12:9a20164dcc47 91 * Read touchpanel screensample and matrix values.
vipinranka 12:9a20164dcc47 92 *
vipinranka 12:9a20164dcc47 93 * In your code, create 2 structures using Matrix and screenPtr
vipinranka 12:9a20164dcc47 94 * and call this function with these structures.
vipinranka 12:9a20164dcc47 95 * the calibration values are returned into these structures.
vipinranka 12:9a20164dcc47 96 * Example:
vipinranka 12:9a20164dcc47 97 * Matrix matrix;
vipinranka 12:9a20164dcc47 98 * Coordinate ScreenSample[3];
vipinranka 12:9a20164dcc47 99 * GetCalibration(&matrix, &ScreenSample[0]);
vipinranka 12:9a20164dcc47 100 */
vipinranka 12:9a20164dcc47 101 void GetCalibration(Matrix * matrixPtr, Coordinate * screenPtr);
vipinranka 12:9a20164dcc47 102
vipinranka 12:9a20164dcc47 103 /*
vipinranka 12:9a20164dcc47 104 * Set touchpanel calibration using screensample and matrix values.
vipinranka 12:9a20164dcc47 105 *
vipinranka 12:9a20164dcc47 106 * In your code, create 2 structures based on Matrix and screenPtr,
vipinranka 12:9a20164dcc47 107 * copy saved calibration values into these structures
vipinranka 12:9a20164dcc47 108 * and call this function with these structures.
vipinranka 12:9a20164dcc47 109 * Example:
vipinranka 12:9a20164dcc47 110 * Matrix matrix;
vipinranka 12:9a20164dcc47 111 * Coordinate ScreenSample[3];
vipinranka 12:9a20164dcc47 112 * <pseudocode> load matrix with values from external storage (eg eeprom).
vipinranka 12:9a20164dcc47 113 * <pseudocode> load ScreenSample with values from external storage (eg eeprom).
vipinranka 12:9a20164dcc47 114 * SetCalibration(&matrix, &ScreenSample[0]);
vipinranka 12:9a20164dcc47 115 */
vipinranka 12:9a20164dcc47 116 void SetCalibration(Matrix * matrixPtr, Coordinate * screenPtr);
vipinranka 12:9a20164dcc47 117
vipinranka 12:9a20164dcc47 118 ILI9486 *LCD;
vipinranka 12:9a20164dcc47 119 SPI _tp_spi;
vipinranka 12:9a20164dcc47 120 DigitalOut _tp_cs;
vipinranka 12:9a20164dcc47 121 DigitalIn _tp_irq;
vipinranka 12:9a20164dcc47 122
vipinranka 12:9a20164dcc47 123 protected:
vipinranka 12:9a20164dcc47 124
vipinranka 12:9a20164dcc47 125 #define SPI_RD_DELAY 1
vipinranka 12:9a20164dcc47 126 #define CHX 0xd0 // 12 bit mode
vipinranka 12:9a20164dcc47 127 #define CHY 0x90
vipinranka 12:9a20164dcc47 128
vipinranka 12:9a20164dcc47 129 Coordinate DisplaySample[3];
vipinranka 12:9a20164dcc47 130 Coordinate ScreenSample[3];
vipinranka 12:9a20164dcc47 131 Matrix matrix;
vipinranka 12:9a20164dcc47 132
vipinranka 12:9a20164dcc47 133 /*
vipinranka 12:9a20164dcc47 134 * Obtain raw x,y data from ADS7846
vipinranka 12:9a20164dcc47 135 *
vipinranka 12:9a20164dcc47 136 * @param pointer to raw x and y coordinates (pointer to store data)
vipinranka 12:9a20164dcc47 137 * @returns x (horizontal position)
vipinranka 12:9a20164dcc47 138 * @returns y (vertical position)
vipinranka 12:9a20164dcc47 139 *
vipinranka 12:9a20164dcc47 140 */
vipinranka 12:9a20164dcc47 141 void TP_GetAdXY(int *x,int *y);
vipinranka 12:9a20164dcc47 142
vipinranka 12:9a20164dcc47 143 /*
vipinranka 12:9a20164dcc47 144 * Obtain raw single channel data from ADS7846 (Called by TP_GetADXY)
vipinranka 12:9a20164dcc47 145 *
vipinranka 12:9a20164dcc47 146 * @param channel to be read (CHX or CHY)
vipinranka 12:9a20164dcc47 147 * @returns raw scaled down value (return value range must be between 0 and 1024)
vipinranka 12:9a20164dcc47 148 *
vipinranka 12:9a20164dcc47 149 */
vipinranka 12:9a20164dcc47 150 int Read_XY(unsigned char XY);
vipinranka 12:9a20164dcc47 151
vipinranka 12:9a20164dcc47 152 /*
vipinranka 12:9a20164dcc47 153 * Draw a calibration crosshair on the LCD screen
vipinranka 12:9a20164dcc47 154 *
vipinranka 12:9a20164dcc47 155 * @param x (horizontal position)
vipinranka 12:9a20164dcc47 156 * @param y (vertical position)
vipinranka 12:9a20164dcc47 157 *
vipinranka 12:9a20164dcc47 158 */
vipinranka 12:9a20164dcc47 159 void DrawCross(unsigned int Xpos,unsigned int Ypos);
vipinranka 12:9a20164dcc47 160
vipinranka 12:9a20164dcc47 161 /*
vipinranka 12:9a20164dcc47 162 * Set the calibration matrix
vipinranka 12:9a20164dcc47 163 *
vipinranka 12:9a20164dcc47 164 * @param displayPTR (pointer to display data)
vipinranka 12:9a20164dcc47 165 * @param screenPTR (pointer to screen data)
vipinranka 12:9a20164dcc47 166 * @param matrixPTR (pointer to calibration matrix)
vipinranka 12:9a20164dcc47 167 *
vipinranka 12:9a20164dcc47 168 * @returns 0 when matrix.divider != 0
vipinranka 12:9a20164dcc47 169 * @returns 1 when matrix.divider = 0
vipinranka 12:9a20164dcc47 170 *
vipinranka 12:9a20164dcc47 171 */
vipinranka 12:9a20164dcc47 172 unsigned char setCalibrationMatrix( Coordinate * displayPtr,Coordinate * screenPtr,Matrix * matrixPtr);
vipinranka 12:9a20164dcc47 173
vipinranka 12:9a20164dcc47 174 };
vipinranka 12:9a20164dcc47 175 #endif