diff options
Diffstat (limited to 'fw/fe310/eos/eve/eve_touch.c')
-rw-r--r-- | fw/fe310/eos/eve/eve_touch.c | 144 |
1 files changed, 72 insertions, 72 deletions
diff --git a/fw/fe310/eos/eve/eve_touch.c b/fw/fe310/eos/eve/eve_touch.c index f777093..e75cf4e 100644 --- a/fw/fe310/eos/eve/eve_touch.c +++ b/fw/fe310/eos/eve/eve_touch.c @@ -4,16 +4,16 @@ #include "eve.h" -static int _intr_mask = EVE_INT_TAG | EVE_INT_TOUCH; -static int _multitouch; -static uint8_t _tag0; +static int touch_intr_mask = EVE_INT_TAG | EVE_INT_TOUCH; +static int touch_multi; +static uint8_t touch_tag0; -static EVETouch _touch[EVE_MAX_TOUCH]; -static EVETouchTimer _touch_timer; +static EVETouch touch_obj[EVE_MAX_TOUCH]; +static EVETouchTimer touch_timer; -static eve_touch_handler_t _touch_handler; -static void *_touch_handler_param; -static uint8_t _tag_opt[256]; +static eve_touch_handler_t touch_handler; +static void *touch_handler_param; +static uint8_t touch_tag_opt[256]; static const uint32_t _reg_touch[] = { REG_CTOUCH_TOUCH0_XY, @@ -46,14 +46,14 @@ void eve_handle_touch(void) { eve_spi_start(); - flags = eve_read8(REG_INT_FLAGS) & _intr_mask; - if (!_multitouch && (flags & EVE_INT_TOUCH)) _multitouch = 1; + flags = eve_read8(REG_INT_FLAGS) & touch_intr_mask; + if (!touch_multi && (flags & EVE_INT_TOUCH)) touch_multi = 1; for (i=0; i<EVE_MAX_TOUCH; i++) { uint8_t touch_tag; uint32_t touch_xy; uint64_t now = 0; uint16_t touch_evt = 0; - EVETouch *touch = &_touch[i]; + EVETouch *touch = &touch_obj[i]; touch_xy = i < 4 ? eve_read32(_reg_touch[i]) : (((uint32_t)eve_read16(REG_CTOUCH_TOUCH4_X) << 16) | eve_read16(REG_CTOUCH_TOUCH4_Y)); @@ -95,8 +95,8 @@ void eve_handle_touch(void) { } eve_touch_timer_clear(touch); - if (_touch_handler && touch_evt) { - _touch_handler(_touch_timer.touch, touch_evt, _touch_timer.tag0, _touch_handler_param); + if (touch_handler && touch_evt) { + touch_handler(touch_timer.touch, touch_evt, touch_timer.tag0, touch_handler_param); } } touch_evt = EVE_TOUCH_ETYPE_POINT | _evt; @@ -122,7 +122,7 @@ void eve_handle_touch(void) { } touch->x = touch_x; touch->y = touch_y; - if (_multitouch || (flags & EVE_INT_TAG)) { + if (touch_multi || (flags & EVE_INT_TAG)) { touch_tag = eve_read8(_reg_tag[i]); } else { touch_tag = touch->tag; @@ -139,13 +139,13 @@ void eve_handle_touch(void) { eve_touch_timer_set_evt(touch, _ttevt & ~EVE_TOUCH_ETYPE_LPRESS); } if (touch->tracker.tag && touch->tracker.track) { - uint8_t opt = _tag_opt[touch->tracker.tag]; + uint8_t opt = touch_tag_opt[touch->tracker.tag]; char track_ext = ((opt & EVE_TOUCH_OPT_TRACK_EXT_X) && (touch->eevt & EVE_TOUCH_EETYPE_TRACK_X)) || ((opt & EVE_TOUCH_OPT_TRACK_EXT_Y) && (touch->eevt & EVE_TOUCH_EETYPE_TRACK_Y)); if (!eve_touch_timer_get_evt(NULL) && track_ext) { EVEVTrack *vtrack = eve_vtrack_get(); - eve_touch_timer_set(touch, EVE_TOUCH_ETYPE_TRACK, _tag0, EVE_TOUCH_TIMEOUT_TRACK); + eve_touch_timer_set(touch, EVE_TOUCH_ETYPE_TRACK, touch_tag0, EVE_TOUCH_TIMEOUT_TRACK); if (vtrack->start) vtrack->start(touch, vtrack->param); } else { touch_evt |= EVE_TOUCH_ETYPE_TRACK_STOP; @@ -155,23 +155,23 @@ void eve_handle_touch(void) { } if (touch_tag != touch->tag) { if (touch_tag) { - if (!_tag0) _tag0 = touch_tag; + if (!touch_tag0) touch_tag0 = touch_tag; if (!touch->tag0) { touch->tag0 = touch_tag; - if (_tag_opt[touch_tag] & (EVE_TOUCH_OPT_TRACK | EVE_TOUCH_OPT_TRACK_REG)) { + if (touch_tag_opt[touch_tag] & (EVE_TOUCH_OPT_TRACK | EVE_TOUCH_OPT_TRACK_REG)) { touch->tracker.tag = touch_tag; } - if (touch->tracker.tag && !(_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_XY)) { + if (touch->tracker.tag && !(touch_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_XY)) { touch_evt |= EVE_TOUCH_ETYPE_TRACK_START; touch->tracker.track = 1; touch->t = now; } - if (!eve_touch_timer_get_evt(NULL) && (_tag_opt[touch_tag] & (EVE_TOUCH_OPT_LPRESS | EVE_TOUCH_OPT_TAP2))) { + if (!eve_touch_timer_get_evt(NULL) && (touch_tag_opt[touch_tag] & (EVE_TOUCH_OPT_LPRESS | EVE_TOUCH_OPT_TAP2))) { uint16_t _evt = 0; - if (_tag_opt[touch_tag] & EVE_TOUCH_OPT_LPRESS) _evt |= EVE_TOUCH_ETYPE_LPRESS; - if (_tag_opt[touch_tag] & EVE_TOUCH_OPT_TAP2) _evt |= EVE_TOUCH_ETYPE_TAP2; - eve_touch_timer_set(touch, _evt, _tag0, EVE_TOUCH_TIMEOUT_TAP); + if (touch_tag_opt[touch_tag] & EVE_TOUCH_OPT_LPRESS) _evt |= EVE_TOUCH_ETYPE_LPRESS; + if (touch_tag_opt[touch_tag] & EVE_TOUCH_OPT_TAP2) _evt |= EVE_TOUCH_ETYPE_TAP2; + eve_touch_timer_set(touch, _evt, touch_tag0, EVE_TOUCH_TIMEOUT_TAP); } } } @@ -190,10 +190,10 @@ void eve_handle_touch(void) { dx = dx < 0 ? -dx : dx; dy = dy < 0 ? -dy : dy; if (_track) { - if ((dx > EVE_TOUCH_THRESHOLD_X) && !(_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_X)) { + if ((dx > EVE_TOUCH_THRESHOLD_X) && !(touch_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_X)) { touch->tracker.tag = 0; } - if ((dy > EVE_TOUCH_THRESHOLD_Y) && !(_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_Y)) { + if ((dy > EVE_TOUCH_THRESHOLD_Y) && !(touch_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_Y)) { touch->tracker.tag = 0; } if (touch->tracker.tag && ((dx > EVE_TOUCH_THRESHOLD_X) || (dy > EVE_TOUCH_THRESHOLD_Y))) { @@ -214,8 +214,8 @@ void eve_handle_touch(void) { } } if (touch->tracker.tag && touch->tracker.track) { - if (_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK) touch_evt |= EVE_TOUCH_ETYPE_TRACK; - if (_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_REG) touch_evt |= EVE_TOUCH_ETYPE_TRACK_REG; + if (touch_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK) touch_evt |= EVE_TOUCH_ETYPE_TRACK; + if (touch_tag_opt[touch->tracker.tag] & EVE_TOUCH_OPT_TRACK_REG) touch_evt |= EVE_TOUCH_ETYPE_TRACK_REG; } if (touch_evt & EVE_TOUCH_ETYPE_TRACK_REG) { uint32_t touch_track = eve_read32(_reg_track[i]); @@ -227,48 +227,48 @@ void eve_handle_touch(void) { } if (touch->tracker.tag || _timer) int_ccomplete = 1; } - if (_touch_handler && touch_evt) { - _touch_handler(touch, touch_evt, _tag0, _touch_handler_param); + if (touch_handler && touch_evt) { + touch_handler(touch, touch_evt, touch_tag0, touch_handler_param); } - if (!_multitouch) break; + if (!touch_multi) break; } if (!touch_ex) { - _tag0 = 0; - _multitouch = 0; + touch_tag0 = 0; + touch_multi = 0; } - if (_multitouch) int_ccomplete = 1; + if (touch_multi) int_ccomplete = 1; - if (int_ccomplete && !(_intr_mask & EVE_INT_CONVCOMPLETE)) { - _intr_mask |= EVE_INT_CONVCOMPLETE; - eve_write8(REG_INT_MASK, _intr_mask); + if (int_ccomplete && !(touch_intr_mask & EVE_INT_CONVCOMPLETE)) { + touch_intr_mask |= EVE_INT_CONVCOMPLETE; + eve_write8(REG_INT_MASK, touch_intr_mask); } - if (!int_ccomplete && (_intr_mask & EVE_INT_CONVCOMPLETE)) { - _intr_mask &= ~EVE_INT_CONVCOMPLETE; - eve_write8(REG_INT_MASK, _intr_mask); + if (!int_ccomplete && (touch_intr_mask & EVE_INT_CONVCOMPLETE)) { + touch_intr_mask &= ~EVE_INT_CONVCOMPLETE; + eve_write8(REG_INT_MASK, touch_intr_mask); } eve_spi_stop(); } void eve_handle_time(void) { - EVETouch *touch = _touch_timer.touch; + EVETouch *touch = touch_timer.touch; - if (_touch_timer.evt) { + if (touch_timer.evt) { int more = 0; uint16_t touch_evt = 0; eve_spi_start(); - if (_touch_timer.evt & EVE_TOUCH_ETYPE_LPRESS) { + if (touch_timer.evt & EVE_TOUCH_ETYPE_LPRESS) { touch_evt |= EVE_TOUCH_ETYPE_LPRESS; if (touch) touch->eevt |= EVE_TOUCH_EETYPE_LPRESS; } - if (_touch_timer.evt & EVE_TOUCH_ETYPE_TAP2) { + if (touch_timer.evt & EVE_TOUCH_ETYPE_TAP2) { touch_evt |= EVE_TOUCH_ETYPE_TAP1; } - if (_touch_timer.evt & EVE_TOUCH_ETYPE_TRACK) { + if (touch_timer.evt & EVE_TOUCH_ETYPE_TRACK) { EVEVTrack *vtrack = eve_vtrack_get(); if (vtrack->tick) { @@ -280,19 +280,19 @@ void eve_handle_time(void) { if (vtrack->stop) vtrack->stop(touch, vtrack->param); } } - if (_touch_timer.evt & EVE_TOUCH_ETYPE_TIMER) { + if (touch_timer.evt & EVE_TOUCH_ETYPE_TIMER) { touch_evt |= EVE_TOUCH_ETYPE_TIMER; more = 1; } if (more) { - eve_timer_set(_touch_timer.to); + eve_timer_set(touch_timer.to); } else { - _touch_timer.evt = 0; + touch_timer.evt = 0; } - if (_touch_handler && touch_evt) { - _touch_handler(touch, touch_evt, _touch_timer.tag0, _touch_handler_param); + if (touch_handler && touch_evt) { + touch_handler(touch, touch_evt, touch_timer.tag0, touch_handler_param); } eve_spi_stop(); @@ -305,27 +305,27 @@ void eve_touch_init(void) { eve_vtrack_init(); for (i=0; i<EVE_MAX_TOUCH; i++) { - EVETouch *touch = &_touch[i]; + EVETouch *touch = &touch_obj[i]; touch->eevt |= EVE_TOUCH_EETYPE_NOTOUCH; } - eve_write8(REG_INT_MASK, _intr_mask); + eve_write8(REG_INT_MASK, touch_intr_mask); eve_write8(REG_INT_EN, 0x01); while(eve_read8(REG_INT_FLAGS)); } void eve_touch_set_handler(eve_touch_handler_t handler, void *param) { - _touch_handler = handler; - _touch_handler_param = param; + touch_handler = handler; + touch_handler_param = param; } EVETouch *eve_touch_get(int i) { - return &_touch[i]; + return &touch_obj[i]; } int8_t eve_touch_get_idx(EVETouch *touch) { if (touch == NULL) return -1; - return touch - _touch; + return touch - touch_obj; } uint16_t eve_touch_evt(EVETouch *touch, uint16_t evt, uint8_t tag0, uint8_t tag_min, uint8_t tag_n) { @@ -363,22 +363,22 @@ uint16_t eve_touch_evt(EVETouch *touch, uint16_t evt, uint8_t tag0, uint8_t tag_ } void eve_touch_set_opt(uint8_t tag, uint8_t opt) { - _tag_opt[tag] = opt; + touch_tag_opt[tag] = opt; } uint8_t eve_touch_get_opt(uint8_t tag) { - return _tag_opt[tag]; + return touch_tag_opt[tag]; } void eve_touch_clear_opt(void) { - memset(_tag_opt, 0, sizeof(_tag_opt)); + memset(touch_tag_opt, 0, sizeof(touch_tag_opt)); } void eve_touch_timer_set(EVETouch *touch, uint16_t evt, uint8_t tag0, uint32_t to) { - _touch_timer.touch = touch; - _touch_timer.evt = evt; - _touch_timer.tag0 = tag0; - _touch_timer.to = to; + touch_timer.touch = touch; + touch_timer.evt = evt; + touch_timer.tag0 = tag0; + touch_timer.to = to; eve_timer_set(to); } @@ -389,21 +389,21 @@ void eve_touch_timer_clear(EVETouch *touch) { uint16_t eve_touch_timer_get_evt(EVETouch *touch) { uint16_t ret = 0; - if ((touch == NULL) || (_touch_timer.touch == touch)) { - ret = _touch_timer.evt; - } else if (_touch_timer.touch == NULL) { - ret = _touch_timer.evt & EVE_TOUCH_ETYPE_TIMER; + if ((touch == NULL) || (touch_timer.touch == touch)) { + ret = touch_timer.evt; + } else if (touch_timer.touch == NULL) { + ret = touch_timer.evt & EVE_TOUCH_ETYPE_TIMER; } return ret; } void eve_touch_timer_set_evt(EVETouch *touch, uint16_t evt) { - if (touch == _touch_timer.touch) { - _touch_timer.evt = evt; - } else if (_touch_timer.touch == NULL) { - _touch_timer.evt = evt & EVE_TOUCH_ETYPE_TIMER; + if (touch == touch_timer.touch) { + touch_timer.evt = evt; + } else if (touch_timer.touch == NULL) { + touch_timer.evt = evt & EVE_TOUCH_ETYPE_TIMER; } - if (!_touch_timer.evt) eve_timer_clear(); + if (!touch_timer.evt) eve_timer_clear(); } void eve_touch_timer_start(uint8_t tag0, uint32_t to) { @@ -415,5 +415,5 @@ void eve_touch_timer_stop(void) { } EVETouchTimer *eve_touch_timer_get(void) { - return &_touch_timer; + return &touch_timer; } |