Headers for emWin lib

Dependents:   DISCO-F746NG_rtos_test

Revision:
0:1bf8f02b0770
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emWin_header/GUITDRV_ADS7846.h	Sat Mar 26 22:49:50 2016 +0000
@@ -0,0 +1,159 @@
+/*********************************************************************
+*                SEGGER Microcontroller GmbH & Co. KG                *
+*        Solutions for real time microcontroller applications        *
+**********************************************************************
+*                                                                    *
+*        (c) 1996 - 2014  SEGGER Microcontroller GmbH & Co. KG       *
+*                                                                    *
+*        Internet: www.segger.com    Support:  support@segger.com    *
+*                                                                    *
+**********************************************************************
+
+** emWin V5.24 - Graphical user interface for embedded applications **
+All  Intellectual Property rights  in the Software belongs to  SEGGER.
+emWin is protected by  international copyright laws.  Knowledge of the
+source code may not be used to write a similar product.  This file may
+only be used in accordance with the following terms:
+
+The software has been licensed to  NXP Semiconductors USA, Inc.  whose
+registered  office  is  situated  at 411 E. Plumeria Drive, San  Jose,
+CA 95134, USA  solely for  the  purposes  of  creating  libraries  for
+NXPs M0, M3/M4 and  ARM7/9 processor-based  devices,  sublicensed  and
+distributed under the terms and conditions of the NXP End User License
+Agreement.
+Full source code is available at: www.segger.com
+
+We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File        : GUITDRV_ADS7846.h
+Purpose     : Touch screen driver include
+----------------------------------------------------------------------
+
+Notes
+=====
+(1) The driver needs some function pointer to be filled correctly to be able
+    to communicate with the external peripheral correctly. The correct assignment
+    of these function pointers is checked during driver configuration and leads
+    to an abort to GUI_Error() .
+    
+(2) The driver needs some configuration variables filled in to be able to calculate
+    the logical screen coordinates from the physical AD values.
+    A description of the typical paramaters that have to be known by the driver is
+    listed below:
+    - Orientation: Orientation of the touch screen if not the same as the physical orientation.
+                   A or-combination of the defines GUI_SWAP_XY, GUI_MIRROR_X and GUI_MIRROR_Y
+                   can be used.
+    - xLog0      : Logical pixel value of horizontal reference point 0. Typically 0.
+    - xLog1      : Logical pixel value of horizontal reference point 1. Typically horizontal screen resolution -1.
+    - xPhys0     : Physical AD value of horizontal reference point 0.
+    - xPhys1     : Physical AD value of horizontal reference point 1.
+    - yLog0      : Logical pixel value of vertical reference point 0. Typically 0.
+    - yLog1      : Logical pixel value of vertical reference point 1. Typically vertical screen resolution -1.
+    - yPhys0     : Physical AD value of vertical reference point 0.
+    - yPhys1     : Physical AD value of vertical reference point 1.
+
+(3) If the PENIRQ line of the touch controller is connected to a port of the target hardware
+    a touch event can be detected by the driver. Upon polling the driver's exec routine the
+    driver can check if a touch event is ready to be sampled by checking the PENIRQ line.
+    Without PENIRQ line the driver will always try to sample a touch event even if no touch
+    happened which will consume time even if not necessary.
+    Without PENIRQ it is the responsibility of the user's pfGetResult() routine to return
+    0xFFFF if the measured AD value is out of bounds.
+    If both, the PENIRQ and the touch pressure recognition are enabled first the PENIRQ will
+    signal that there is a touch event. Afterwards the touch pressure measurement is used to
+    confirm that this was a valid touch and the touch had enough pressure to deliver good
+    measurements.
+
+(4) The touch pressure measurement is activated by setting a value for PressureMin and
+    PressureMax .
+    To calculate the correct touch pressure the resistance of the X-plate has to be known.
+    This can be set via PlateResistanceX [Ohm].
+    A touch event that we have measured with a pressure within these thresholds is confirmed
+    as valid touch event with good measurment samples.
+    If both, the PENIRQ and the touch pressure recognition are enabled first the PENIRQ will
+    signal that there is a touch event. Afterwards the touch pressure measurement is used to
+    confirm that this was a valid touch and the touch had enough pressure to deliver good
+    measurements.
+    If no PENIRQ line is connected this measurement takes place everytime the touch event is
+    polled regardless if there is a touch event or not as the driver will only know for sure
+    after calculating the touch pressure.
+    Setting the value for PlateResistanceX to 0 is invalid. The driver will internally use a
+    value of 1 instead.
+*/
+
+#ifndef GUITDRV_ADS7846_H            /* Make sure we only include it once */
+#define GUITDRV_ADS7846_H
+
+#include "GUI_Type.h"
+
+#if defined(__cplusplus)
+extern "C" {     /* Make sure we have C-declarations in C++ programs */
+#endif
+
+/*********************************************************************
+*
+*       Types
+*
+**********************************************************************
+*/
+
+typedef struct {
+  //
+  // Function pointer (1)
+  //
+  void     (* pfSendCmd)   (U8 Data);     // Sends a 8-bit command to the peripheral
+  U16      (* pfGetResult) (void);        // Retrieves the result of the AD conversion. 4 dummy bytes have to be shifted out to the left.
+  char     (* pfGetBusy)   (void);        // Retrieves the status of the busy line. 0: Not busy; 1: Busy
+  void     (* pfSetCS)     (char OnOff);  // Set chip select line. OnOff == 1 means peripheral selected
+  //
+  // Configuration (2)
+  //
+  unsigned Orientation;
+  int      xLog0;
+  int      xLog1;
+  int      xPhys0;
+  int      xPhys1;
+  int      yLog0;
+  int      yLog1;
+  int      yPhys0;
+  int      yPhys1;
+  //
+  // Optional, touch recognition via PENIRQ line (3)
+  //
+  char     (* pfGetPENIRQ) (void);        // Retrieves the status of the PENIRQ line to detect a touch event.
+  //
+  // Optional, touch recognition via touch pressure measurement (4)
+  //
+  int      PressureMin;                   // Minimum pressure threshold. A measured pressure below this value means we do not have a valid touch event.
+  int      PressureMax;                   // Maximum pressure threshold. A measured pressure above this value means we do not have a valid touch event.
+  int      PlateResistanceX;              // Resistance of the X-plate of the touch screen. This value is needed for calculation of the touch pressure.
+} GUITDRV_ADS7846_CONFIG;
+
+typedef struct {
+  int      xPhys;     // Last measured x value
+  int      yPhys;     // Last measured y value
+  int      z1Phys;    // Last measured z1 value
+  int      z2Phys;    // Last measured z2 value
+  int      PENIRQ;    // Last sampled PENIRQ state if PENIRQ callback has been set
+  int      Pressure;  // Last measured touch pressure if touch pressure measurement is enabled
+} GUITDRV_ADS7846_LAST_VAL;
+
+/*********************************************************************
+*
+*       Prototypes
+*
+**********************************************************************
+*/
+
+void GUITDRV_ADS7846_Config    (GUITDRV_ADS7846_CONFIG * pConfig);
+char GUITDRV_ADS7846_Exec      (void);
+void GUITDRV_ADS7846_GetLastVal(GUITDRV_ADS7846_LAST_VAL * p);
+
+#if defined(__cplusplus)
+}                /* Make sure we have C-declarations in C++ programs */
+#endif
+
+
+#endif   /* GUITDRV_ADS7846_H */
+
+/*************************** End of file ****************************/