Skip to content

Commit 03f95ce

Browse files
eve: add wrapper
Signed-off-by: Francois Berder <[email protected]>
1 parent 8023931 commit 03f95ce

File tree

2 files changed

+367
-1
lines changed

2 files changed

+367
-1
lines changed

letmecreate/click/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
- Color2
1818
- ADC
1919
- Alcohol
20+
- Eve
2021
"""
2122

2223
__all__ = ['thermo3', 'proximity', 'accel', 'relay2', 'motion', 'led_matrix',
2324
'joystick', 'color', 'seven_seg', 'ir_distance', 'bargraph',
24-
'relay', 'ir_eclipse', 'color2', 'adc', 'alcohol']
25+
'relay', 'ir_eclipse', 'color2', 'adc', 'alcohol', 'eve']

letmecreate/click/eve.py

Lines changed: 365 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,365 @@
1+
#!/usr/bin/env python3
2+
3+
4+
import ctypes
5+
6+
_LIB = ctypes.CDLL('libletmecreate_click.so')
7+
_CALLBACK_TYPE = ctypes.CFUNCTYPE(None, ctypes.c_uint16, ctypes.c_uint16)
8+
_CALLBACK = None
9+
10+
# Display list opcodes
11+
FT800_ALPHA_FUNC = (0x09 << 24)
12+
FT800_BEGIN = (0x1F << 24)
13+
FT800_BITMAP_HANDLE = (0x05 << 24)
14+
FT800_BITMAP_LAYOUT = (0x07 << 24)
15+
FT800_BITMAP_SIZE = (0x08 << 24)
16+
FT800_BITMAP_SOURCE = (0x01 << 24)
17+
FT800_BITMAP_TRANSFORM_A = (0x15 << 24)
18+
FT800_BITMAP_TRANSFORM_B = (0x16 << 24)
19+
FT800_BITMAP_TRANSFORM_C = (0x17 << 24)
20+
FT800_BITMAP_TRANSFORM_D = (0x18 << 24)
21+
FT800_BITMAP_TRANSFORM_E = (0x19 << 24)
22+
FT800_BITMAP_TRANSFORM_F = (0x1F << 24)
23+
FT800_BLEND_FUNC = (0x0B << 24)
24+
FT800_CALL = (0x1D << 24)
25+
FT800_CELL = (0x06 << 24)
26+
FT800_CLEAR = (0x26 << 24)
27+
FT800_CLEAR_COLOR_A = (0x0F << 24)
28+
FT800_CLEAR_COLOR_RGB = (0x02 << 24)
29+
FT800_CLEAR_STENCIL = (0x11 << 24)
30+
FT800_CLEAR_TAG = (0x06 << 24)
31+
FT800_COLOR_A = (0x10 << 24)
32+
FT800_COLOR_MASK = (0x20 << 24)
33+
FT800_COLOR_RGB = (0x04 << 24)
34+
FT800_DISPLAY = (0)
35+
FT800_END = (0x21 << 24)
36+
FT800_JUMP = (0x1E << 24)
37+
FT800_LINE_WIDTH = (0x06 << 24)
38+
FT800_MACRO = (0x25 << 24)
39+
FT800_POINT_SIZE = (0x0D << 24)
40+
FT800_RESTORE_CONTEXT = (0x23 << 24)
41+
FT800_RETURN = (0x24 << 24)
42+
FT800_SAVE_CONTEXT = (0x22 << 24)
43+
FT800_SCISSOR_SIZE = (0x1C << 24)
44+
FT800_SCISSOR_XY = (0x1B << 24)
45+
FT800_STENCIL_FUNC = (0x0A << 24)
46+
FT800_STENCIL_MASK = (0x13 << 24)
47+
FT800_STENCIL_OP = (0x0C << 24)
48+
FT800_TAG = (0x03 << 24)
49+
FT800_TAG_MASK = (0x14 << 24)
50+
FT800_VERTEX2F = (0x01 << 30)
51+
FT800_VERTEX2II = (0x02 << 30)
52+
53+
# Coprocessor opcodes
54+
FT800_APPEND = (0xFFFFFF02)
55+
FT800_BGCOLOR = (0xFFFFFF09)
56+
FT800_BUTTON = (0xFFFFFF0D)
57+
FT800_CALIBRATE = (0xFFFFFF15)
58+
FT800_CLOCK = (0xFFFFFF14)
59+
FT800_COLDSTART = (0xFFFFFF32)
60+
FT800_DIAL = (0xFFFFFF2D)
61+
FT800_DLSTART = (0xFFFFFF00)
62+
FT800_FGCOLOR = (0xFFFFFF0A)
63+
FT800_GAUGE = (0xFFFFFF13)
64+
FT800_GETMATRIX = (0xFFFFFF33)
65+
FT800_GETPTR = (0xFFFFFF23)
66+
FT800_GRADCOLOR = (0xFFFFFF34)
67+
FT800_GRADIENT = (0xFFFFFF0B)
68+
FT800_INFLATE = (0xFFFFFF22)
69+
FT800_INTERRUPT = (0xFFFFFF02)
70+
FT800_KEYS = (0xFFFFFF0E)
71+
FT800_LOADIDENTITY = (0xFFFFFF26)
72+
FT800_LOADIMAGE = (0xFFFFFF24)
73+
FT800_LOGO = (0xFFFFFF31)
74+
FT800_MEMCPY = (0xFFFFFF1D)
75+
FT800_MEMCRC = (0xFFFFFF18)
76+
FT800_MEMSET = (0xFFFFFF1B)
77+
FT800_MEMWRITE = (0xFFFFFF1A)
78+
FT800_MEMZERO = (0xFFFFFF1C)
79+
FT800_NUMBER = (0xFFFFFF2E)
80+
FT800_PROGRESS = (0xFFFFFF0F)
81+
FT800_REGREAD = (0xFFFFFF19)
82+
FT800_ROTATE = (0xFFFFFF29)
83+
FT800_SCALE = (0xFFFFFF28)
84+
FT800_SCREENSAVER = (0xFFFFFF2F)
85+
FT800_SCROLLBAR = (0xFFFFFF11)
86+
FT800_SETMATRIX = (0xFFFFFF2A)
87+
FT800_SKETCH = (0xFFFFFF30)
88+
FT800_SLIDER = (0xFFFFFF10)
89+
FT800_SNAPSHOT = (0xFFFFFF1F)
90+
FT800_SPINNER = (0xFFFFFF16)
91+
FT800_STOP = (0xFFFFFF17)
92+
FT800_SWAP = (0xFFFFFF01)
93+
FT800_TEXT = (0xFFFFFF0C)
94+
FT800_TOGGLE = (0xFFFFFF12)
95+
FT800_TRACK = (0xFFFFFF2C)
96+
FT800_TRANSLATE = (0xFFFFFF27)
97+
98+
# Functions
99+
FT800_FUNC_NEVER = (0)
100+
FT800_FUNC_LESS = (1)
101+
FT800_FUNC_LEQUAL = (2)
102+
FT800_FUNC_GREATER = (3)
103+
FT800_FUNC_GEQUAL = (4)
104+
FT800_FUNC_EQUAL = (5)
105+
FT800_FUNC_NOTEQUAL = (6)
106+
FT800_FUNC_ALWAYS = (7)
107+
108+
# Primitives
109+
FT800_BITMAPS = (1)
110+
FT800_POINTS = (2)
111+
FT800_LINES = (3)
112+
FT800_LINE_STRIP = (4)
113+
FT800_EDGE_STRIP_R = (5)
114+
FT800_EDGE_STRIP_L = (6)
115+
FT800_EDGE_STRIP_A = (7)
116+
FT800_EDGE_STRIP_B = (8)
117+
FT800_RECTS = (9)
118+
119+
# Formats
120+
FT800_ARGB1555 = (0)
121+
FT800_L1 = (1)
122+
FT800_L4 = (2)
123+
FT800_L8 = (3)
124+
FT800_RGB332 = (4)
125+
FT800_ARGB2 = (5)
126+
FT800_ARGB4 = (6)
127+
FT800_RGB565 = (7)
128+
FT800_PALETTED = (8)
129+
FT800_TEXT8X8 = (9)
130+
FT800_TEXTVGA = (10)
131+
FT800_BARGRAPH = (11)
132+
133+
# Filters
134+
FT800_NEAREST = (0)
135+
FT800_BILINEAR = (1)
136+
137+
# Wrap modes
138+
FT800_BORDER = (0)
139+
FT800_REPEAT = (1)
140+
141+
# Blend functions
142+
FT800_BLEND_ZERO = (0)
143+
FT800_BLEND_ONE = (1)
144+
FT800_BLEND_SRC_ALPHA = (2)
145+
FT800_BLEND_DST_ALPHA = (3)
146+
FT800_BLEND_ONE_MINUS_SRC_ALPHA = (4)
147+
FT800_BLEND_ONE_MINUS_DST_ALPHA = (5)
148+
149+
# Options
150+
FT800_OPT_3D = (0)
151+
FT800_OPT_RGB565 = (0)
152+
FT800_OPT_MONO = (1)
153+
FT800_OPT_NODL = (2)
154+
FT800_OPT_FLAT = (256)
155+
FT800_OPT_SIGNED = (256)
156+
FT800_OPT_CENTERX = (512)
157+
FT800_OPT_CENTERY = (1024)
158+
FT800_OPT_CENTER = (1536)
159+
FT800_OPT_RIGHTX = (2048)
160+
FT800_OPT_NOBACK = (4096)
161+
FT800_OPT_NOTICKS = (8192)
162+
FT800_OPT_NOHM = (16384)
163+
FT800_OPT_NOPOINTER = (16384)
164+
FT800_OPT_NOSECS = (32768)
165+
FT800_OPT_NOHANDS = (49152)
166+
167+
168+
def enable(mikrobus_index):
169+
ret = _LIB.eve_click_enable(mikrobus_index)
170+
if ret < 0:
171+
raise Exception("eve click enable failed")
172+
173+
174+
def disable(mikrobus_index):
175+
ret = _LIB.eve_click_disable(mikrobus_index)
176+
if ret < 0:
177+
raise Exception("eve click disable failed")
178+
179+
180+
def disable_buffering():
181+
_LIB.eve_click_disable_buffering()
182+
183+
184+
def enable_buffering():
185+
_LIB.eve_click_disable_buffering()
186+
187+
188+
def is_buffering_enabled():
189+
ret = _LIB.eve_click_is_buffering_enabled()
190+
if ret < 0:
191+
raise Exception("eve click is buffering enabled failed")
192+
return ret
193+
194+
195+
def clear(r = 0, g = 0, b = 0):
196+
ret = _LIB.eve_click_clear(r, g, b)
197+
if ret < 0:
198+
raise Exception("eve click clear failed")
199+
200+
201+
def draw(cmd, args):
202+
ret = _LIB.eve_click_draw(cmd, *args)
203+
if ret < 0:
204+
raise Exception("eve click draw failed")
205+
206+
207+
def display():
208+
ret = _LIB.eve_click_display()
209+
if ret < 0:
210+
raise Exception("eve click display failed")
211+
212+
213+
def load_image(ptr, options, data, count):
214+
length = len(data)
215+
_data = (ctypes.c_uint8 * length)(*data)
216+
ret = _LIB.eve_click_load_image(ptr, options, _data, count)
217+
if ret < 0:
218+
raise Exception("eve click load image failed")
219+
220+
221+
def inflate(ptr, data, count):
222+
length = len(data)
223+
_data = (ctypes.c_uint8 * length)(*data)
224+
ret = _LIB.eve_click_inflate(ptr, _data, count)
225+
if ret < 0:
226+
raise Exception("eve click inflate failed")
227+
228+
229+
def get_ptr():
230+
ptr = ctypes.c_uint32(0)
231+
ret = _LIB.eve_click_get_ptr(ctypes.byref(ptr))
232+
if ret < 0:
233+
raise Exception("eve click get ptr failed")
234+
return ptr.value
235+
236+
237+
def load_identity():
238+
ret = _LIB.eve_click_load_identity()
239+
if ret < 0:
240+
raise Exception("eve click load identity failed")
241+
242+
243+
def translate(tx, ty):
244+
ret = _LIB.eve_click_translate(tx, ty)
245+
if ret < 0:
246+
raise Exception("eve click translate failed")
247+
248+
249+
def scale(sx, sy):
250+
ret = _LIB.eve_click_scale(sx, sy)
251+
if ret < 0:
252+
raise Exception("eve click scale failed")
253+
254+
255+
def rotate(angle):
256+
ret = _LIB.eve_click_rotate(angle)
257+
if ret < 0:
258+
raise Exception("eve click rotate failed")
259+
260+
261+
def get_matrix():
262+
a = ctypes.c_int32(0)
263+
b = ctypes.c_int32(0)
264+
c = ctypes.c_int32(0)
265+
d = ctypes.c_int32(0)
266+
e = ctypes.c_int32(0)
267+
f = ctypes.c_int32(0)
268+
ret = _LIB.eve_click_get_matrix(ctypes.byref(a),
269+
ctypes.byref(b),
270+
ctypes.byref(c),
271+
ctypes.byref(d),
272+
ctypes.byref(e),
273+
ctypes.byref(f))
274+
if ret < 0:
275+
raise Exception("eve click get matrix failed")
276+
return [a.value, b.value, c.value,
277+
d.value, e.value, f.value]
278+
279+
280+
def set_matrix():
281+
ret = _LIB.eve_click_set_matrix()
282+
if ret < 0:
283+
raise Exception("eve click set matrix failed")
284+
285+
286+
def memcrc(ptr, byte_count):
287+
crc = ctypes.c_uint32(0)
288+
ret = _LIB.eve_click_memcrc(ptr, byte_count, ctypes.byref(crc))
289+
if ret < 0:
290+
raise Exception("eve click memcrc failed")
291+
return crc.value
292+
293+
294+
def memset(ptr, value, byte_count):
295+
ret = _LIB.eve_click_memset(ptr, value, byte_count)
296+
if ret < 0:
297+
raise Exception("eve click memset failed")
298+
299+
300+
def memcpy(dest, src, byte_count):
301+
ret = _LIB.eve_click_memcpy(dest, src, byte_count)
302+
if ret < 0:
303+
raise Exception("eve click memcpy failed")
304+
305+
306+
def memzero(ptr, byte_count):
307+
ret = _LIB.eve_click_memzero(ptr, byte_count)
308+
if ret < 0:
309+
raise Exception("eve click memzero failed")
310+
311+
312+
def ftdi_logo():
313+
ret = _LIB.eve_click_ftdi_logo()
314+
if ret < 0:
315+
raise Exception("eve click ftdi logo failed")
316+
317+
318+
def snapshot(ptr):
319+
data = (ctypes.c_uint8 * 261120)()
320+
ret = _LIB.eve_click_snapshot(ptr, data);
321+
if ret < 0:
322+
raise Exception("eve click ftdi logo failed")
323+
return [data[i] for i in range(261120)]
324+
325+
326+
def spinner(x, y, style, scale):
327+
ret = _LIB.eve_click_spinner(x, y, style, scale)
328+
if ret < 0:
329+
raise Exception("eve click spinner failed")
330+
331+
332+
def stop():
333+
ret = _LIB.eve_click_stop()
334+
if ret < 0:
335+
raise Exception("eve click stop failed")
336+
337+
338+
def coldstart():
339+
ret = _LIB.eve_click_coldstart()
340+
if ret < 0:
341+
raise Exception("eve click coldstart failed")
342+
343+
344+
def screensaver():
345+
ret = _LIB.eve_click_screensaver()
346+
if ret < 0:
347+
raise Exception("eve click screensaver failed")
348+
349+
350+
def set_backlight_intensity(intensity):
351+
ret = _LIB.eve_click_set_backlight_intensity(intensity)
352+
if ret < 0:
353+
raise Exception("eve click set backlight intensity failed")
354+
355+
356+
def attach_touch_callback(callback):
357+
ptr = _CALLBACK_TYPE(callback)
358+
_LIB.eve_click_attach_touch_callback(ptr)
359+
_CALLBACK = callback
360+
361+
362+
def calibrate():
363+
ret = _LIB.eve_click_calibrate()
364+
if ret < 0:
365+
raise Exception("eve click calibrate failed")

0 commit comments

Comments
 (0)