fix double DF_END and libusb timeout
This commit is contained in:
parent
9a4988343f
commit
9c48090a88
|
@ -102,6 +102,7 @@ static uint8_t trigger_buffer[NUM_TRIGGER_STAGES] = { 0 };
|
||||||
int trigger_stage = TRIGGER_FIRED;
|
int trigger_stage = TRIGGER_FIRED;
|
||||||
|
|
||||||
static int hw_set_configuration(int device_index, int capability, void *value);
|
static int hw_set_configuration(int device_index, int capability, void *value);
|
||||||
|
static void hw_stop_acquisition(int device_index, gpointer session_device_id);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns 1 if the device's configuration profile match the Logic firmware's
|
* Returns 1 if the device's configuration profile match the Logic firmware's
|
||||||
|
@ -668,6 +669,7 @@ void receive_transfer(struct libusb_transfer *transfer)
|
||||||
* transfer that come in.
|
* transfer that come in.
|
||||||
*/
|
*/
|
||||||
if (num_samples == -1) {
|
if (num_samples == -1) {
|
||||||
|
if (transfer)
|
||||||
libusb_free_transfer(transfer);
|
libusb_free_transfer(transfer);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -696,9 +698,7 @@ void receive_transfer(struct libusb_transfer *transfer)
|
||||||
* The FX2 gave up. End the acquisition, the frontend
|
* The FX2 gave up. End the acquisition, the frontend
|
||||||
* will work out that the samplecount is short.
|
* will work out that the samplecount is short.
|
||||||
*/
|
*/
|
||||||
packet.type = DF_END;
|
hw_stop_acquisition(-1, user_data);
|
||||||
session_bus(user_data, &packet);
|
|
||||||
num_samples = -1;
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -723,10 +723,7 @@ void receive_transfer(struct libusb_transfer *transfer)
|
||||||
|
|
||||||
num_samples += cur_buflen;
|
num_samples += cur_buflen;
|
||||||
if ((unsigned int)num_samples > limit_samples) {
|
if ((unsigned int)num_samples > limit_samples) {
|
||||||
/* End the acquisition. */
|
hw_stop_acquisition(-1, user_data);
|
||||||
packet.type = DF_END;
|
|
||||||
session_bus(user_data, &packet);
|
|
||||||
num_samples = -1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
|
@ -773,7 +770,7 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id)
|
||||||
|
|
||||||
lupfd = libusb_get_pollfds(usb_context);
|
lupfd = libusb_get_pollfds(usb_context);
|
||||||
for (i = 0; lupfd[i]; i++)
|
for (i = 0; lupfd[i]; i++)
|
||||||
source_add(lupfd[i]->fd, lupfd[i]->events, -1, receive_data,
|
source_add(lupfd[i]->fd, lupfd[i]->events, 40, receive_data,
|
||||||
NULL);
|
NULL);
|
||||||
free(lupfd);
|
free(lupfd);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue