From 17bf3a52fc4e5900d93f5b4463b4e90cf774734c Mon Sep 17 00:00:00 2001 From: Goten Xiao Date: Mon, 19 May 2008 19:09:47 +0100 Subject: [PATCH] cleaned up function definitions (METH_NOARGS for gettype), LED constants altered to use x52pro.h definitions, start of setled implementation x52.py populated with more tests and cleaned up --- PyX52.c | 58 ++++++++++++++++++++++++++++++++++------------------------ x52.py | 61 +++++++++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 77 insertions(+), 42 deletions(-) diff --git a/PyX52.c b/PyX52.c index 8f77a69..429fb9c 100644 --- a/PyX52.c +++ b/PyX52.c @@ -70,9 +70,8 @@ PyX52_X52_dealloc(PyX52_X52_object *self) } static PyObject * -PyX52_X52_gettype(PyX52_X52_object *self, PyObject *args) +PyX52_X52_gettype(PyX52_X52_object *self) { - int ok = PyArg_ParseTuple(args, ""); enum x52_type type = x52_gettype(self->handle); return Py_BuildValue("i", type); } @@ -92,6 +91,12 @@ PyX52_X52_setbri(PyX52_X52_object *self, PyObject *args) static PyObject * PyX52_X52_setled(PyX52_X52_object *self, PyObject *args) { + if (x52_gettype(self->handle) != DEV_X52PRO) + { + PyErr_SetString(PyExc_RuntimeError, "Cannot call setled on this device."); + return NULL; + } + int ok = PyArg_ParseTuple(args, ""); } @@ -127,8 +132,10 @@ static PyObject * PyX52_X52_setsecond(PyX52_X52_object *self, PyObject *args, PyObject *kws) { if (x52_gettype(self->handle) != DEV_YOKE) + { PyErr_SetString(PyExc_RuntimeError, "Cannot call setsecond on this device."); return NULL; + } struct tm *ltime; time_t t = time(NULL); @@ -161,14 +168,18 @@ PyX52_X52_setdate(PyX52_X52_object *self, PyObject *args, PyObject *kws) if (!PyArg_ParseTupleAndKeywords(args, kws, "|iii", kwlist, &year, &month, &day)) return NULL; - x52_setdate(self->handle, year, month, day); + if (!x52_setdate(self->handle, year, month, day)) + { + PyErr_SetString(PyExc_RuntimeError, "Could not set date."); + return NULL; + } Py_INCREF(Py_None); return Py_None; } static PyMethodDef PyX52_X52_methods[] = { - {"gettype", (PyCFunction)PyX52_X52_gettype, METH_VARARGS, "Get the type of X52 device."}, + {"gettype", (PyCFunction)PyX52_X52_gettype, METH_NOARGS, "Get the type of X52 device."}, {"settext", (PyCFunction)PyX52_X52_settext, METH_VARARGS, "Set the text on the MFD. (X52 and X52 Pro only.)"}, {"setbri", (PyCFunction)PyX52_X52_setbri, METH_VARARGS, "Set the brightness of either the LEDs or the MFD. (X52 and X52 Pro only.)"}, {"setled", (PyCFunction)PyX52_X52_setled, METH_VARARGS, "Set an LED's state. (X52 Pro only.)"}, @@ -257,26 +268,25 @@ initPyX52(void) * I */ - PyModule_AddIntConstant(m, "LED_FIRE", 1); - PyModule_AddIntConstant(m, "LED_ARED", 2); - PyModule_AddIntConstant(m, "LED_AGREEN", 3); - PyModule_AddIntConstant(m, "LED_BRED", 4); - PyModule_AddIntConstant(m, "LED_BGREEN", 5); - PyModule_AddIntConstant(m, "LED_DRED", 6); - PyModule_AddIntConstant(m, "LED_DGREEN", 7); - PyModule_AddIntConstant(m, "LED_ERED", 8); - PyModule_AddIntConstant(m, "LED_EGREEN", 9); - PyModule_AddIntConstant(m, "LED_T1RED", 10); - PyModule_AddIntConstant(m, "LED_T1GREEN", 11); - PyModule_AddIntConstant(m, "LED_T2RED", 12); - PyModule_AddIntConstant(m, "LED_T2GREEN", 13); - PyModule_AddIntConstant(m, "LED_T3RED", 14); - PyModule_AddIntConstant(m, "LED_T3GREEN", 15); - PyModule_AddIntConstant(m, "LED_CORED", 16); - PyModule_AddIntConstant(m, "LED_COGREEN", 17); - PyModule_AddIntConstant(m, "LED_IRED", 18); - PyModule_AddIntConstant(m, "LED_IGREEN", 19); - + PyModule_AddIntConstant(m, "LED_FIRE", X52PRO_LED_FIRE); + PyModule_AddIntConstant(m, "LED_ARED", X52PRO_LED_ARED); + PyModule_AddIntConstant(m, "LED_AGREEN", X52PRO_LED_AGREEN); + PyModule_AddIntConstant(m, "LED_BRED", X52PRO_LED_BRED); + PyModule_AddIntConstant(m, "LED_BGREEN", X52PRO_LED_BGREEN); + PyModule_AddIntConstant(m, "LED_DRED", X52PRO_LED_DRED); + PyModule_AddIntConstant(m, "LED_DGREEN", X52PRO_LED_DGREEN); + PyModule_AddIntConstant(m, "LED_ERED", X52PRO_LED_ERED); + PyModule_AddIntConstant(m, "LED_EGREEN", X52PRO_LED_EGREEN); + PyModule_AddIntConstant(m, "LED_T1RED", X52PRO_LED_T1RED); + PyModule_AddIntConstant(m, "LED_T1GREEN", X52PRO_LED_T1GREEN); + PyModule_AddIntConstant(m, "LED_T2RED", X52PRO_LED_T2RED); + PyModule_AddIntConstant(m, "LED_T2GREEN", X52PRO_LED_T2GREEN); + PyModule_AddIntConstant(m, "LED_T3RED", X52PRO_LED_T3RED); + PyModule_AddIntConstant(m, "LED_T3GREEN", X52PRO_LED_T3GREEN); + PyModule_AddIntConstant(m, "LED_CORED", X52PRO_LED_CORED); + PyModule_AddIntConstant(m, "LED_COGREEN", X52PRO_LED_COGREEN); + PyModule_AddIntConstant(m, "LED_IRED", X52PRO_LED_IRED); + PyModule_AddIntConstant(m, "LED_IGREEN", X52PRO_LED_IGREEN); PyModule_AddIntConstant(m, "TYPE_X52", DEV_X52); PyModule_AddIntConstant(m, "TYPE_X52PRO", DEV_X52PRO); PyModule_AddIntConstant(m, "TYPE_YOKE", DEV_YOKE); diff --git a/x52.py b/x52.py index 3db68cc..ec4f2c1 100755 --- a/x52.py +++ b/x52.py @@ -1,35 +1,60 @@ #!/usr/bin/env python from traceback import print_exc + +x52 = None + try: print "Importing PyX52... ", import PyX52 -except: - print "[ FAIL ]" - print_exc() - exit(-1) -else: print "[ OK ]" -x52types = {PyX52.TYPE_X52: "X52", PyX52.TYPE_X52PRO: "X52 Pro", PyX52.TYPE_YOKE: "Yoke"} - -x52 = None -try: print "Creating PyX52.X52... ", x52 = PyX52.X52() -except: - print "[ FAIL ]" - print_exc() - exit(-1) -else: print "[ OK ]" -try: + x52types = {PyX52.TYPE_X52: "X52", PyX52.TYPE_X52PRO: "X52 Pro", PyX52.TYPE_YOKE: "Yoke"} print "Detecting X52 device type... ", typestr = x52types[x52.gettype()] + print "[ OK ]" + print "X52 device type: [ %s ]" % typestr + + print "Setting date... ", + x52.setdate() + print "[ OK ]" + + print "Setting time... ", + x52.settime() + print "[ OK ]" + + print "Setting MFD brightness... ", + x52.setbri(0, 127) + x52.setbri(0, 63) + x52.setbri(0, 0) + x52.setbri(0, 127) + print "[ OK ]" + + print "Setting LED brightness... ", + x52.setbri(1, 127) + x52.setbri(1, 63) + x52.setbri(1, 0) + x52.setbri(1, 127) + print "[ OK ]" + + print "Setting text... ", + x52.settext(1, "1234567890123456") + x52.settext(2, "1234567890123456") + x52.settext(3, "1234567890123456") + x52.settext(1, "") + x52.settext(2, "") + x52.settext(3, "") + print "[ OK ]" + + print "Setting LED states... ", + print "[ OK ]" + + print "Setting time offset... ", + print "[ OK ]" except: print "[ FAIL ]" print_exc() exit(-1) -else: - print "[ OK ]" - print "X52 device type: [ %s ]" % typestr -- 2.11.4.GIT