From f323012d879181580bec0cff312819d678ed2e56 Mon Sep 17 00:00:00 2001 From: meri Date: Wed, 30 May 2007 22:03:53 +0000 Subject: python support by Kushal Das git-svn-id: https://svn.gnumonks.org/trunk/librfid@1997 e0336214-984f-0b4b-a45f-81c69e1f0ede --- python/pyrfid.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 python/pyrfid.c (limited to 'python/pyrfid.c') diff --git a/python/pyrfid.c b/python/pyrfid.c new file mode 100644 index 0000000..e626718 --- /dev/null +++ b/python/pyrfid.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +static PyObject *pyi_open(PyObject *self, PyObject *args); +static PyObject *pyi_close(PyObject *self, PyObject *args); +static PyObject *pyi_rfidscan(PyObject *self, PyObject *args); +static PyObject *pyi_rfidlayeropt(PyObject *self, PyObject *args); + +static PyObject *pyi_Error; +struct rfid_reader_handle *rh; +struct rfid_layer2_handle *l2h; +struct rfid_protocol_handle *ph; + +static PyMethodDef pyi_Methods[] = { + {"open", pyi_open, METH_VARARGS, + "This will initialise the RFID reader"}, + {"close", pyi_close, METH_VARARGS, + "This will close the RFID reader"}, + {"scan", pyi_rfidscan, METH_VARARGS, + "This will scan for any card"}, + {"get_id", pyi_rfidlayeropt, METH_VARARGS, + "This will read the id of the card"}, + {NULL, NULL, 0, NULL} +}; + +PyMODINIT_FUNC initpyrfid() { + PyObject *m; + + m = Py_InitModule("openpcd", pyi_Methods); + pyi_Error = PyErr_NewException("openpcd.error", NULL, NULL); + Py_INCREF(pyi_Error); + PyModule_AddObject(m, "error", pyi_Error); + return; +} + +static PyObject *pyi_open(PyObject *self, PyObject *args) { + rfid_init(); + rh = rfid_reader_open(NULL, RFID_READER_OPENPCD); + if (!rh) + return Py_BuildValue("i", 1); + else + return Py_BuildValue("i", 0); +} + +static PyObject *pyi_close(PyObject *self, PyObject *args) { + rfid_reader_close(rh); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject *pyi_rfidscan(PyObject *self, PyObject *args) { + int rc; + rc = rfid_scan(rh, &l2h, &ph); + return Py_BuildValue("i", rc); +} + +static PyObject *pyi_rfidlayeropt(PyObject *self, PyObject *args) { + unsigned char uid_buf[16]; + char card_id[16]; + unsigned int uid_len = sizeof(uid_buf); + rfid_layer2_getopt(l2h, RFID_OPT_LAYER2_UID, &uid_buf, + &uid_len); + strcpy(card_id,hexdump(uid_buf, uid_len)); + return Py_BuildValue("s", card_id); +} -- cgit v1.2.3