X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsaleae-logic16%2Fprotocol.h;h=0cadd359517fc043f3fd9c4f35acd06b671de1be;hb=c86813962979777f53432e7e3392b1d2f2b661b4;hp=8a1ded823900e7ae41c194f355d1a73b5f07fb15;hpb=155b680da482cea2381becb73c51cfb838bff31e;p=libsigrok.git diff --git a/src/hardware/saleae-logic16/protocol.h b/src/hardware/saleae-logic16/protocol.h index 8a1ded82..0cadd359 100644 --- a/src/hardware/saleae-logic16/protocol.h +++ b/src/hardware/saleae-logic16/protocol.h @@ -35,8 +35,17 @@ enum voltage_range { VOLTAGE_RANGE_5_V, /* 5V logic */ }; +enum fpga_variant { + FPGA_VARIANT_ORIGINAL, + FPGA_VARIANT_ORIGINAL_NEW_BITSTREAM, + FPGA_VARIANT_MCUPRO /* mcupro clone v4.6 with Actel FPGA */ +}; + /** Private, per-device-instance driver context. */ struct dev_context { + /** Distinguishing between original Logic16 and clones */ + enum fpga_variant fpga_variant; + /* * Since we can't keep track of a Logic16 device after upgrading * the firmware (it renumerates into a different device address @@ -51,6 +60,9 @@ struct dev_context { /** Maximum number of samples to capture, if nonzero. */ uint64_t limit_samples; + /** Percent of the samples that should be captured before the trigger. */ + uint64_t capture_ratio; + /** The currently configured input voltage of the device. */ enum voltage_range cur_voltage_range; @@ -79,6 +91,10 @@ struct dev_context { unsigned int num_transfers; struct libusb_transfer **transfers; struct sr_context *ctx; + + const uint8_t *fpga_register_map; + const uint8_t *fpga_status_control_bit_map; + const uint8_t *fpga_mode_bit_map; }; SR_PRIV int logic16_setup_acquisition(const struct sr_dev_inst *sdi, @@ -86,6 +102,6 @@ SR_PRIV int logic16_setup_acquisition(const struct sr_dev_inst *sdi, SR_PRIV int logic16_start_acquisition(const struct sr_dev_inst *sdi); SR_PRIV int logic16_abort_acquisition(const struct sr_dev_inst *sdi); SR_PRIV int logic16_init_device(const struct sr_dev_inst *sdi); -SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer); +SR_PRIV void LIBUSB_CALL logic16_receive_transfer(struct libusb_transfer *transfer); #endif