annotate dmx_usb_module/dmx.pyx @ 2328:d050b8efda9d

fix bug with uninitialized effect ,and prefer a dead effect over a graph reload
author drewp@bigasterisk.com
date Thu, 01 Jun 2023 18:42:36 -0700
parents 295e803f6a5e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
355
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
1 cdef extern from "fcntl.h":
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
2 int open(char *pathname, int flags)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
3 int O_WRONLY
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
4
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
5 cdef extern from "unistd.h":
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
6 int write(int fd, void *buf, int count)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
7
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
8 cdef extern from "string.h":
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
9 char *strncpy(char *dest, char *src, int n)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
10
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
11 cdef extern from "Python.h":
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
12 char* PyString_AsString(object string)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
13
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
14 cdef class Dmx:
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
15 cdef int fd
424
295e803f6a5e dmx.pyx fixes for new stricter pyrex
drewp@bigasterisk.com
parents: 355
diff changeset
16 def __cinit__(self, port="/dev/dmx0"):
355
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
17 self.fd = open(port, O_WRONLY)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
18 if self.fd < 0:
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
19 raise OSError("open failed")
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
20
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
21 def write(self, buf):
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
22 cdef char *cbuf
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
23 cbuf = PyString_AsString(buf)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
24 if cbuf == NULL:
424
295e803f6a5e dmx.pyx fixes for new stricter pyrex
drewp@bigasterisk.com
parents: 355
diff changeset
25 raise ValueError("string buffer conversion failed")
355
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
26 res = write(self.fd, cbuf, 513)
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
27 if res < 0:
4e60444605f6 add dmx_usb_module
drewp@bigasterisk.com
parents:
diff changeset
28 raise OSError("write failed")