30 lines
782 B
Python
30 lines
782 B
Python
"""Hynitron CST816S touch contoller driver for MicroPython."""
|
|
|
|
import watch
|
|
|
|
class CST816S:
|
|
"""Hynitron CST816S I2C touch controller driver."""
|
|
|
|
def __init__(self):
|
|
self.dbuf = bytearray(6)
|
|
pass
|
|
|
|
def get_event(self, queue):
|
|
"""Receive a touch event.
|
|
|
|
Check for a pending touch event and, if an event is pending,
|
|
prepare it ready to go in the event queue.
|
|
|
|
:return: True if an event is received, False otherwise.
|
|
"""
|
|
dbuf = self.dbuf
|
|
|
|
try:
|
|
watch.i2c.readfrom_mem_into(21, 1, dbuf)
|
|
except OSError:
|
|
return False
|
|
|
|
queue[0] = dbuf[0]
|
|
queue[1] = ((dbuf[2] & 0xf) << 8) + dbuf[3]
|
|
queue[2] = ((dbuf[4] & 0xf) << 8) + dbuf[5]
|
|
return True
|