X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsaleae-logic16%2Fprotocol.h;h=9f834164c83d14bb3603a75f1815348b13f74e02;hb=02e49ae5d2e37daa6e3e76a4123000bc5d77ee1f;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..9f834164 100644 --- a/src/hardware/saleae-logic16/protocol.h +++ b/src/hardware/saleae-logic16/protocol.h @@ -24,7 +24,7 @@ #include #include -#include "libsigrok.h" +#include #include "libsigrok-internal.h" #define LOG_PREFIX "saleae-logic16" @@ -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