static PyObject * i2c_read_msg(PyObject *self, PyObject *args) { /* parameters */ struct as_i2c_device *aDev; uint8_t *aWData; int aWriteSize; uint8_t RData[MAX_DATA_SIZE]; int aReadSize; int ret; /* Get arguments */ if (!PyArg_ParseTuple(args, "ls#i", (long *)&aDev, (unsigned char *)&aWData, &aWriteSize, &aReadSize)) { PyErr_SetString(PyExc_IOError, "Wrong parameters."); return NULL; } if (aReadSize > MAX_DATA_SIZE) { PyErr_SetString(PyExc_IOError, "Read size too high"); return NULL; } ret = as_i2c_read_msg(aDev, aWData, aWriteSize, RData, aReadSize); if (ret < 0) { PyErr_SetString(PyExc_IOError, "Can't forge read message"); return NULL; } return Py_BuildValue("s#", (unsigned char *)RData, aReadSize); }
long AsI2c::readMsg(unsigned char *aWData, unsigned char aWriteSize, unsigned char *aRData, size_t aReadSize) { if (mDev != NULL) { return as_i2c_read_msg(mDev, aWData, aWriteSize, aRData, aReadSize); } else { std::cerr<<"AsI2c device structure not allocated"<<std::endl; return -1; } }