KSM edits to RA8875
Embed:
(wiki syntax)
Show/hide line numbers
RA8875_Touch_FT5206.cpp
00001 00002 00003 #include "RA8875.h" 00004 00005 //#define DEBUG "RAFT" // RA8875 FT5206 00006 // ... 00007 // INFO("Stuff to show %d", var); // new-line is automatically appended 00008 // 00009 #if (defined(DEBUG) && !defined(TARGET_LPC11U24)) 00010 #define INFO(x, ...) std::printf("[INF %s %4d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); 00011 #define WARN(x, ...) std::printf("[WRN %s %4d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); 00012 #define ERR(x, ...) std::printf("[ERR %s %4d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); 00013 static void HexDump(const char * title, const uint8_t * p, int count) 00014 { 00015 int i; 00016 char buf[100] = "0000: "; 00017 00018 if (*title) 00019 INFO("%s", title); 00020 for (i=0; i<count; ) { 00021 sprintf(buf + strlen(buf), "%02X ", *(p+i)); 00022 if ((++i & 0x0F) == 0x00) { 00023 INFO("%s", buf); 00024 if (i < count) 00025 sprintf(buf, "%04X: ", i); 00026 else 00027 buf[0] = '\0'; 00028 } 00029 } 00030 if (strlen(buf)) 00031 INFO("%s", buf); 00032 } 00033 #else 00034 #define INFO(x, ...) 00035 #define WARN(x, ...) 00036 #define ERR(x, ...) 00037 #define HexDump(a, b, c) 00038 #endif 00039 00040 00041 00042 // Translate from FT5206 Event Flag to Touch Code to API-match the 00043 // alternate resistive touch screen driver common in the RA8875 00044 // displays. 00045 static const TouchCode_t FT5206_EventFlagToTouchCode[4] = { 00046 touch, // 00b Put Down 00047 release, // 01b Put Up 00048 held, // 10b Contact 00049 no_touch // 11b Reserved 00050 }; 00051 00052 00053 RetCode_t RA8875::FT5206_Init() { 00054 char data[2] = {FT5206_DEVICE_MODE, 0}; 00055 00056 m_i2c->write(m_addr, data, 2); 00057 return noerror; 00058 } 00059 00060 uint8_t RA8875::FT5206_TouchPositions(void) { 00061 uint8_t valXH; 00062 uint8_t valYH; 00063 00064 //INFO("FT5206_TouchPositions()"); 00065 numberOfTouchPoints = FT5206_ReadRegU8(FT5206_TD_STATUS) & 0xF; 00066 //INFO(" numOfTouchPoints %d", numberOfTouchPoints); 00067 gesture = FT5206_ReadRegU8(FT5206_GEST_ID); 00068 //INFO(" gesture %d", gesture); 00069 00070 valXH = FT5206_ReadRegU8(FT5206_TOUCH5_XH); 00071 valYH = FT5206_ReadRegU8(FT5206_TOUCH5_YH); 00072 touchInfo[4].touchCode = FT5206_EventFlagToTouchCode[valXH >> 6]; 00073 touchInfo[4].touchID = (valYH >> 4); 00074 touchInfo[4].coordinates.x = (valXH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH5_XL); 00075 touchInfo[4].coordinates.y = (valYH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH5_YL); 00076 00077 valXH = FT5206_ReadRegU8(FT5206_TOUCH4_XH); 00078 valYH = FT5206_ReadRegU8(FT5206_TOUCH4_YH); 00079 touchInfo[3].touchCode = FT5206_EventFlagToTouchCode[valXH >> 6]; 00080 touchInfo[3].touchID = (valYH >> 4); 00081 touchInfo[3].coordinates.x = (valXH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH4_XL); 00082 touchInfo[3].coordinates.y = (valYH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH4_YL); 00083 00084 valXH = FT5206_ReadRegU8(FT5206_TOUCH3_XH); 00085 valYH = FT5206_ReadRegU8(FT5206_TOUCH3_YH); 00086 touchInfo[2].touchCode = FT5206_EventFlagToTouchCode[valXH >> 6]; 00087 touchInfo[2].touchID = (valYH >> 4); 00088 touchInfo[2].coordinates.x = (valXH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH3_XL); 00089 touchInfo[2].coordinates.y = (valYH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH3_YL); 00090 00091 valXH = FT5206_ReadRegU8(FT5206_TOUCH2_XH); 00092 valYH = FT5206_ReadRegU8(FT5206_TOUCH2_YH); 00093 touchInfo[1].touchCode = FT5206_EventFlagToTouchCode[valXH >> 6]; 00094 touchInfo[1].touchID = (valYH >> 4); 00095 touchInfo[1].coordinates.x = (valXH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH2_XL); 00096 touchInfo[1].coordinates.y = (valYH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH2_YL); 00097 00098 valXH = FT5206_ReadRegU8(FT5206_TOUCH1_XH); 00099 valYH = FT5206_ReadRegU8(FT5206_TOUCH1_YH); 00100 touchInfo[0].touchCode = FT5206_EventFlagToTouchCode[valXH >> 6]; 00101 touchInfo[0].touchID = (valYH >> 4); 00102 touchInfo[0].coordinates.x = (valXH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH1_XL); 00103 touchInfo[0].coordinates.y = (valYH & 0x0f)*256 + FT5206_ReadRegU8(FT5206_TOUCH1_YL); 00104 00105 return numberOfTouchPoints; 00106 }
Generated on Tue Jul 26 2022 07:46:24 by 1.7.2