Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
	}
}