2121 * @author Leonardo Cavagnis
2222 * @brief Header file for the Arduino Giga Display Touch library.
2323 *
24- * This library allows to capture up to 5 concurrent touch points on Arduino Giga Display Shield.
25- * Supported controller: Goodix GT911
24+ * This library allows to capture up to 5 concurrent touch points on Arduino
25+ * Giga Display Shield. Supported controller: Goodix GT911
2626 */
2727
2828#ifndef __ARDUINO_GIGADISPLAYTOUCH_H
2929#define __ARDUINO_GIGADISPLAYTOUCH_H
3030
3131/* Includes ------------------------------------------------------------------*/
32- #include < Arduino.h>
3332#include " Wire.h"
33+ #include < Arduino.h>
34+ #ifdef __MBED__
3435#include " mbed.h"
3536#include " pinDefinitions.h"
37+ #endif
3638
3739/* Exported defines ----------------------------------------------------------*/
38- #define GT911_I2C_ADDR_BA_BB (0x5D | 0x80 ) // 0xBA/0xBB - 0x5D (7bit address)
39- #define GT911_I2C_ADDR_28_29 (0x14 | 0x80 ) // 0x28/0x29 - 0x14 (7bit address)
40+ #define GT911_I2C_ADDR_BA_BB (0x5D | 0x80 ) // 0xBA/0xBB - 0x5D (7bit address)
41+ #define GT911_I2C_ADDR_28_29 (0x14 | 0x80 ) // 0x28/0x29 - 0x14 (7bit address)
4042
41- #define GT911_CONTACT_SIZE 8
42- #define GT911_MAX_CONTACTS 5
43+ #define GT911_CONTACT_SIZE 8
44+ #define GT911_MAX_CONTACTS 5
4345
4446/* Exported types ------------------------------------------------------------*/
4547typedef struct GDTpoint_s GDTpoint_t;
@@ -52,87 +54,95 @@ typedef struct GDTpoint_s GDTpoint_t;
5254 * @brief Struct representing a touch point.
5355 */
5456struct GDTpoint_s {
55- // 0x814F-0x8156, ... 0x8176 (5 points)
57+ // 0x814F-0x8156, ... 0x8176 (5 points)
5658 uint8_t trackId;
5759 uint16_t x;
5860 uint16_t y;
5961 uint16_t area;
6062 uint8_t reserved;
6163};
6264
63- /* Class ----------------------------------------------------------------------*/
65+ /* Class
66+ * ----------------------------------------------------------------------*/
6467
6568/* *
6669 * @class Arduino_GigaDisplayTouch
6770 * @brief Class for Giga Display Touch controller driver.
6871 */
6972class Arduino_GigaDisplayTouch {
70- public:
71- /* *
72- * @brief Construct a new touch controller for Giga Display Shield.
73- *
74- * @param wire A reference to the Wire interface to be used for communication with the touch controller.
75- * @param intPin The interrupt pin number for the touch controller.
76- * @param rstPin The reset pin number for the touch controller.
77- * @param addr The device address for the touch controller.
73+ public:
74+ /* *
75+ * @brief Construct a new touch controller for Giga Display Shield.
76+ *
77+ * @param wire A reference to the Wire interface to be used for communication
78+ * with the touch controller.
79+ * @param intPin The interrupt pin number for the touch controller.
80+ * @param rstPin The reset pin number for the touch controller.
81+ * @param addr The device address for the touch controller.
82+ */
83+ #if defined(__ZEPHYR__)
84+ Arduino_GigaDisplayTouch ();
85+ #elif defined(ARDUINO_GIGA)
86+ Arduino_GigaDisplayTouch (TwoWire &wire = Wire1,
87+ uint8_t intPin = PinNameToIndex(PI_1),
88+ uint8_t rstPin = PinNameToIndex(PI_2),
89+ uint8_t addr = GT911_I2C_ADDR_BA_BB);
90+ #elif defined(ARDUINO_PORTENTA_H7_M7)
91+ Arduino_GigaDisplayTouch (TwoWire &wire = Wire,
92+ uint8_t intPin = PinNameToIndex(PD_4),
93+ uint8_t rstPin = PinNameToIndex(PD_5),
94+ uint8_t addr = GT911_I2C_ADDR_BA_BB);
95+ #else
96+ Arduino_GigaDisplayTouch (TwoWire &wire, uint8_t intPin, uint8_t rstPin,
97+ uint8_t addr);
98+ #endif
99+
100+ ~Arduino_GigaDisplayTouch ();
101+
102+ /* *
103+ * @brief Initialize the touch controller.
104+ *
105+ * @return true If the touch controller is successfully initialized, false
106+ * Otherwise
107+ */
108+ bool begin ();
109+
110+ /* *
111+ * @brief De-initialize the touch controller.
112+ */
113+ void end ();
114+
115+ /* *
116+ * @brief Check if a touch event is detected and get the touch points.
117+ * @param points The array containing the coordinates of the touch points.
118+ * @return uint8_t The number of detected touch points.
78119 */
79- #if defined(ARDUINO_GIGA)
80- Arduino_GigaDisplayTouch (TwoWire& wire = Wire1,
81- uint8_t intPin = PinNameToIndex(PI_1),
82- uint8_t rstPin = PinNameToIndex(PI_2),
83- uint8_t addr = GT911_I2C_ADDR_BA_BB);
84- #elif defined(ARDUINO_PORTENTA_H7_M7)
85- Arduino_GigaDisplayTouch (TwoWire& wire = Wire,
86- uint8_t intPin = PinNameToIndex(PD_4),
87- uint8_t rstPin = PinNameToIndex(PD_5),
88- uint8_t addr = GT911_I2C_ADDR_BA_BB);
89- #else
90- Arduino_GigaDisplayTouch (TwoWire& wire,
91- uint8_t intPin,
92- uint8_t rstPin,
93- uint8_t addr);
94- #endif
95- ~Arduino_GigaDisplayTouch ();
96-
97-
98- /* *
99- * @brief Initialize the touch controller.
100- *
101- * @return true If the touch controller is successfully initialized, false Otherwise
102- */
103- bool begin ();
104-
105- /* *
106- * @brief De-initialize the touch controller.
107- */
108- void end ();
109-
110- /* *
111- * @brief Check if a touch event is detected and get the touch points.
112- * @param points The array containing the coordinates of the touch points.
113- * @return uint8_t The number of detected touch points.
114- */
115- uint8_t getTouchPoints (GDTpoint_t* points);
116-
117- /* *
118- * @brief Attach an interrupt handler function for touch detection callbacks.
119- * @param handler The pointer to the user-defined handler function.
120- */
121- void onDetect (void (*handler)(uint8_t , GDTpoint_t*));
122- private:
123- TwoWire& _wire;
124- uint8_t _intPin;
125- mbed::InterruptIn _irqInt;
126- uint8_t _rstPin;
127- uint8_t _addr;
128- GDTpoint_t _points[GT911_MAX_CONTACTS];
129- void (*_gt911TouchHandler)(uint8_t , GDTpoint_t*);
130-
131- uint8_t _gt911WriteOp (uint16_t reg, uint8_t data);
132- uint8_t _gt911WriteBytesOp (uint16_t reg, uint8_t * data, uint8_t len);
133- uint8_t _gt911ReadOp (uint16_t reg, uint8_t * data, uint8_t len);
134- void _gt911onIrq ();
135- uint8_t _gt911ReadInputCoord (uint8_t * pointsbuf, uint8_t & contacts);
120+ uint8_t getTouchPoints (GDTpoint_t *points);
121+
122+ #endif
123+ /* *
124+ * @brief Attach an interrupt handler function for touch detection callbacks.
125+ * @param handler The pointer to the user-defined handler function.
126+ */
127+ void onDetect (void (*handler)(uint8_t , GDTpoint_t *));
128+
129+ private:
130+ #if defined(__MBED__)
131+ TwoWire &_wire;
132+ uint8_t _intPin;
133+ uint8_t _rstPin;
134+ uint8_t _addr;
135+ mbed::InterruptIn _irqInt;
136+ GDTpoint_t _points[GT911_MAX_CONTACTS];
137+ void (*_gt911TouchHandler)(uint8_t , GDTpoint_t *);
138+
139+ uint8_t _gt911WriteOp (uint16_t reg, uint8_t data);
140+ uint8_t _gt911WriteBytesOp (uint16_t reg, uint8_t *data, uint8_t len);
141+ uint8_t _gt911ReadOp (uint16_t reg, uint8_t *data, uint8_t len);
142+ void _gt911onIrq ();
143+ uint8_t _gt911ReadInputCoord (uint8_t *pointsbuf, uint8_t &contacts);
144+
145+ #endif
136146};
137147
138- #endif /* __ARDUINO_GIGADISPLAYTOUCH_H */
148+ #endif /* __ARDUINO_GIGADISPLAYTOUCH_H */
0 commit comments