From 52539a5ff1b6f52c65b032ef1668d43d4df2dc24 Mon Sep 17 00:00:00 2001 From: JF Date: Wed, 12 Feb 2020 19:57:04 +0100 Subject: Log Touchpanel data (position + gesture!) --- src/drivers/Cst816s.cpp | 57 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 14 deletions(-) (limited to 'src/drivers/Cst816s.cpp') diff --git a/src/drivers/Cst816s.cpp b/src/drivers/Cst816s.cpp index 67700f53..b1af12d4 100644 --- a/src/drivers/Cst816s.cpp +++ b/src/drivers/Cst816s.cpp @@ -50,29 +50,58 @@ Cst816S::TouchInfos Cst816S::GetTouchInfo() { nrfx_twi_rx(&twi, address, touchData, 63); auto nbTouchPoints = touchData[2] & 0x0f; - uint8_t i = 0; +// uint8_t i = 0; +// NRF_LOG_INFO("#########################") + for(int i = 0; i < 1; i++) { uint8_t pointId = (touchData[touchIdIndex + (touchStep * i)]) >> 4; if(nbTouchPoints == 0 && pointId == lastTouchId) return info; // We fetch only the first touch point (the controller seems to handle only one anyway...) info.isTouch = true; - auto xHigh = touchData[touchXHighIndex + (touchStep * i)] & 0x0f; - auto xLow = touchData[touchXLowIndex + (touchStep * i)]; - uint16_t x = (xHigh << 8) | xLow; - auto yHigh = touchData[touchYHighIndex + (touchStep * i)] & 0x0f; - auto yLow = touchData[touchYLowIndex + (touchStep * i)]; - uint16_t y = (yHigh << 8) | yLow; + auto xHigh = touchData[touchXHighIndex + (touchStep * i)] & 0x0f; + auto xLow = touchData[touchXLowIndex + (touchStep * i)]; + uint16_t x = (xHigh << 8) | xLow; + + auto yHigh = touchData[touchYHighIndex + (touchStep * i)] & 0x0f; + auto yLow = touchData[touchYLowIndex + (touchStep * i)]; + uint16_t y = (yHigh << 8) | yLow; + + auto action = touchData[touchEventIndex + (touchStep * i)] >> 6; /* 0 = Down, 1 = Up, 2 = contact*/ + auto finger = touchData[touchIdIndex + (touchStep * i)] >> 4; + auto pressure = touchData[touchXYIndex + (touchStep * i)]; + auto area = touchData[touchMiscIndex + (touchStep * i)] >> 4; + + info.x = x; + info.y = y; + info.action = action; + info.gesture = static_cast(touchData[gestureIndex]); + + NRF_LOG_INFO("---------------") + NRF_LOG_INFO("ID : %d", pointId); + NRF_LOG_INFO("NB : %d", nbTouchPoints); + NRF_LOG_INFO("X/Y :%d / %d", info.x, info.y); + NRF_LOG_INFO("Action : %d", action); + NRF_LOG_INFO("Finger : %d", finger); + NRF_LOG_INFO("Pressure : %d", pressure); + NRF_LOG_INFO("area : %d", area); + NRF_LOG_INFO("Touch : %s", info.isTouch?"Yes" : "No"); + switch(info.gesture) {// gesture + case Gestures::None: NRF_LOG_INFO("Gesture : None"); break; + case Gestures::SlideDown: NRF_LOG_INFO("Gesture : Slide Down"); break; + case Gestures::SlideUp: NRF_LOG_INFO("Gesture : Slide Up"); break; + case Gestures::SlideLeft: NRF_LOG_INFO("Gesture : Slide Left"); break; + case Gestures::SlideRight: NRF_LOG_INFO("Gesture : Slide Right"); break; + case Gestures::SingleTap: NRF_LOG_INFO("Gesture : Single click"); break; + case Gestures::DoubleTap: NRF_LOG_INFO("Gesture : Double click"); break; + case Gestures::LongPress: NRF_LOG_INFO("Gesture : Long press"); break; + default : NRF_LOG_INFO("Unknown"); break; + } + + } - auto action = touchData[touchEventIndex + (touchStep * i)] >> 6; /* 0 = Down, 1 = Up, 2 = contact*/ - auto finger = touchData[touchIdIndex + (touchStep * i)] >> 4; - auto pressure = touchData[touchXYIndex + (touchStep * i)]; - auto area = touchData[touchMiscIndex + (touchStep * i)] >> 4; - info.x = x; - info.y = y; - info.action = action; return info; } -- cgit v1.2.3