/*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
*
* Copyright (C) 2010 Sven Peter <sven@fail0verflow.com>
* Copyright (C) 2010 Haxx Enterprises <bushing@gmail.com>
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <libusb.h>
#include <stdio.h>
-#include "sigrok.h"
-#include "sigrok-internal.h"
+#include <libusb.h>
+#include "libsigrok.h"
+#include "libsigrok-internal.h"
#include "gl_usb.h"
+#include "protocol.h"
#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN | \
LIBUSB_RECIPIENT_INTERFACE)
ret = libusb_control_transfer(devh, CTRL_OUT, 0xc, REQ_WRITEADDR,
0, packet, 1, TIMEOUT);
if (ret != 1)
- sr_err("zp: %s: libusb_control_transfer returned %d\n",
- __func__, ret);
+ sr_err("%s: %s.", __func__, libusb_error_name(ret));
return ret;
}
ret = libusb_control_transfer(devh, CTRL_OUT, 0xc, REQ_WRITEDATA,
0, packet, 1, TIMEOUT);
if (ret != 1)
- sr_err("zp: %s: libusb_control_transfer returned %d\n",
- __func__, ret);
+ sr_err("%s: %s.", __func__, libusb_error_name(ret));
return ret;
}
ret = libusb_control_transfer(devh, CTRL_IN, 0xc, REQ_READDATA,
0, packet, 1, TIMEOUT);
if (ret != 1)
- sr_err("zp: %s: libusb_control_transfer returned %d, "
- "val=%hhx\n", __func__, ret, packet[0]);
+ sr_err("%s: %s, val=%hhx.", __func__,
+ libusb_error_name(ret), packet[0]);
return (ret == 1) ? packet[0] : ret;
}
ret = libusb_control_transfer(devh, CTRL_OUT, 0x4, REQ_READBULK,
0, packet, 8, TIMEOUT);
if (ret != 8)
- sr_err("zp: %s: libusb_control_transfer returned %d\n",
- __func__, ret);
+ sr_err("%s: libusb_control_transfer: %s.", __func__,
+ libusb_error_name(ret));
ret = libusb_bulk_transfer(devh, EP1_BULK_IN, buffer, size,
&transferred, TIMEOUT);
if (ret < 0)
- sr_err("zp: Bulk read error %d\n", ret);
+ sr_err("%s: libusb_bulk_transfer: %s.", __func__,
+ libusb_error_name(ret));
return transferred;
}
ret = gl_read_data(devh);
return ret;
}
+
+SR_PRIV int gl_reg_read_buf(libusb_device_handle *devh, unsigned int reg,
+ unsigned char *buf, unsigned int len)
+{
+ int ret;
+ unsigned int i;
+
+ ret = gl_write_address(devh, reg);
+ if (ret < 0)
+ return ret;
+ for (i = 0; i < len; i++) {
+ ret = gl_read_data(devh);
+ if (ret < 0)
+ return ret;
+ buf[i] = ret;
+ }
+ return 0;
+}