*/
#include <string.h>
-#include <libserialport.h>
#include "protocol.h"
#define SERIALCOMM "115200/8n1"
return SR_ERR;
}
+ if (libusb_has_capability(LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER)) {
+ if (libusb_kernel_driver_active(usb->devhdl, 0) == 1) {
+ if ((ret = libusb_detach_kernel_driver(usb->devhdl, 0)) < 0) {
+ sr_err("Failed to detach kernel driver: %s.",
+ libusb_error_name(ret));
+ return SR_ERR;
+ }
+ }
+ }
+
if ((ret = libusb_claim_interface(usb->devhdl, 0))) {
sr_err("Failed to claim interface: %s.", libusb_error_name(ret));
return SR_ERR;
return;
crc = crc16_mcrf4xx(0xffff, devc->reply, devc->reply_size - 2);
- if ((crc & 0xff) == devc->reply[devc->reply_size - 2]
- && (crc >> 8) == devc->reply[devc->reply_size - 1]) {
+ if (crc == RL16(&devc->reply[devc->reply_size - 2])) {
testo_receive_packet(sdi);
devc->num_samples++;
} else {
}
if (sdi->status == SR_ST_STOPPING) {
- usb_source_remove(drvc->sr_ctx);
+ usb_source_remove(sdi->session, drvc->sr_ctx);
dev_close(sdi);
/* Send header packet to the session bus. */
std_session_send_df_header(cb_data, LOG_PREFIX);
- usb_source_add(drvc->sr_ctx, 100, handle_events, (void *)sdi);
+ usb_source_add(sdi->session, drvc->sr_ctx, 100,
+ handle_events, (void *)sdi);
if (testo_set_serial_params(usb) != SR_OK)
return SR_ERR;