Skip to content

Commit 4ece32e

Browse files
committed
fixes JD9863 display driver and add a couple of axs indev drivers
1 parent e6f39b0 commit 4ece32e

File tree

3 files changed

+84
-6
lines changed

3 files changed

+84
-6
lines changed

api_drivers/common_api_drivers/indev/axs15231.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ def __init__(
4343
self._rx_buf = bytearray(8)
4444
self._rx_mv = memoryview(self._rx_buf)
4545

46+
self.__last_x = -1
47+
self.__last_y = -1
48+
self.__last_state = self.RELEASED
49+
4650
def _read_data(self):
4751
self._device.write(self._tx_mv)
4852
self._device.read(buf=self._rx_mv)
@@ -69,12 +73,13 @@ def _get_coords(self):
6973
touch_data = self._read_data()
7074

7175
if touch_data:
72-
x = touch_data[0].x
73-
y = touch_data[0].y
76+
self.__last_x = touch_data[0].x
77+
self.__last_y = touch_data[0].y
7478

7579
if touch_data[0].event == 1:
76-
return self.RELEASED, x, y
80+
self.__last_state = self.RELEASED
81+
82+
else:
83+
self.__last_state = self.PRESSED
7784

78-
return self.PRESSED, x, y
79-
else:
80-
return None
85+
return self.__last_state, self.__last_x, self.__last_y
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Copyright (c) 2024 - 2025 Kevin G. Schlosser
2+
3+
from micropython import const # NOQA
4+
import pointer_framework
5+
import machine # NOQA
6+
import time
7+
8+
9+
_POINTS_REG = const(0X01)
10+
11+
I2C_ADDR = 0x63
12+
BITS = 8
13+
14+
15+
class AXS5106(pointer_framework.PointerDriver):
16+
17+
def _read_reg(self, reg, num_bytes):
18+
self._tx_buf[0] = reg
19+
self._rx_mv[:num_bytes] = bytearray([0x00] * num_bytes)
20+
self._device.write(self._tx_mv[:1])
21+
self._device.read(self._rx_mv[:num_bytes])
22+
23+
def __init__(
24+
self,
25+
device,
26+
reset_pin=None,
27+
touch_cal=None,
28+
startup_rotation=pointer_framework.lv.DISPLAY_ROTATION._0, # NOQA
29+
debug=False
30+
):
31+
self._tx_buf = bytearray(1)
32+
self._tx_mv = memoryview(self._tx_buf)
33+
self._rx_buf = bytearray(14)
34+
self._rx_mv = memoryview(self._rx_buf)
35+
36+
self._device = device
37+
38+
self.__x = 0
39+
self.__y = 0
40+
self.__last_state = self.RELEASED
41+
42+
if isinstance(reset_pin, int):
43+
reset_pin = machine.Pin(reset_pin, machine.Pin.OUT)
44+
45+
self._reset_pin = reset_pin
46+
self.hw_reset()
47+
super().__init__(
48+
touch_cal=touch_cal, startup_rotation=startup_rotation, debug=debug
49+
)
50+
51+
def hw_reset(self):
52+
if self._reset_pin:
53+
self._reset_pin.value(1)
54+
time.sleep_ms(10) # NOQA
55+
self._reset_pin.value(0)
56+
time.sleep_ms(10) # NOQA
57+
58+
def _get_coords(self):
59+
self._read_reg(_POINTS_REG, 14)
60+
touch_cnt = self._rx_buf[1] & 0x0F
61+
62+
if touch_cnt:
63+
x = ((self._rx_buf[2] & 0x0F) << 8) | self._rx_buf[3]
64+
y = ((self._rx_buf[4] & 0x0F) << 8) | self._rx_buf[5]
65+
66+
self.__x = x
67+
self.__y = y
68+
self.__last_state = self.PRESSED
69+
70+
elif touch_cnt == 0:
71+
self.__last_state = self.RELEASED
72+
73+
return self.__last_state, self.__x, self.__y

0 commit comments

Comments
 (0)