X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Ffx2lafw%2Fprotocol.c;h=1ea9020958c4dabc6f0ca08e2e6013d00d6d63c4;hb=7f4975b4401a1e8de61e356b5b272fc00b658260;hp=38ee13b5a50abf3770f3a6d873e65ba26baae52c;hpb=2f9376117c804898eaf75c3efebdbd97b6d89695;p=libsigrok.git diff --git a/hardware/fx2lafw/protocol.c b/hardware/fx2lafw/protocol.c index 38ee13b5..1ea90209 100644 --- a/hardware/fx2lafw/protocol.c +++ b/hardware/fx2lafw/protocol.c @@ -355,7 +355,7 @@ SR_PRIV struct dev_context *fx2lafw_dev_new(void) devc->fw_updated = 0; devc->cur_samplerate = 0; devc->limit_samples = 0; - devc->sample_wide = 0; + devc->sample_wide = FALSE; return devc; } @@ -375,16 +375,13 @@ SR_PRIV void fx2lafw_abort_acquisition(struct dev_context *devc) static void finish_acquisition(struct dev_context *devc) { struct sr_datafeed_packet packet; - int i; /* Terminate session. */ packet.type = SR_DF_END; sr_session_send(devc->cb_data, &packet); /* Remove fds from polling. */ - for (i = 0; devc->usbfd[i] != -1; i++) - sr_source_remove(devc->usbfd[i]); - g_free(devc->usbfd); + usb_source_remove(devc->ctx); devc->num_transfers = 0; g_free(devc->transfers); @@ -435,6 +432,7 @@ SR_PRIV void fx2lafw_receive_transfer(struct libusb_transfer *transfer) int trigger_offset, i, sample_width, cur_sample_count; int trigger_offset_bytes; uint8_t *cur_buf; + uint16_t cur_sample; devc = transfer->user_data; @@ -489,9 +487,9 @@ SR_PRIV void fx2lafw_receive_transfer(struct libusb_transfer *transfer) if (devc->trigger_stage >= 0) { for (i = 0; i < cur_sample_count; i++) { - const uint16_t cur_sample = devc->sample_wide ? - *((const uint16_t*)cur_buf + i) : - *((const uint8_t*)cur_buf + i); + cur_sample = devc->sample_wide ? + *((uint16_t *)cur_buf + i) : + *((uint8_t *)cur_buf + i); if ((cur_sample & devc->trigger_mask[devc->trigger_stage]) == devc->trigger_value[devc->trigger_stage]) { @@ -518,7 +516,7 @@ SR_PRIV void fx2lafw_receive_transfer(struct libusb_transfer *transfer) */ packet.type = SR_DF_LOGIC; packet.payload = &logic; - logic.unitsize = sizeof(*devc->trigger_buffer); + logic.unitsize = sample_width; logic.length = devc->trigger_stage * logic.unitsize; logic.data = devc->trigger_buffer; sr_session_send(devc->cb_data, &packet);