X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fgreatfet%2Fprotocol.h;h=e5a4b8add55d09fa79c1466e920b91522590366d;hb=208fcedc872a4c03e0ffb790460cf92449aae1ed;hp=fc61b6800916c76b3921e8c51239220bdd841805;hpb=f594b3b05c481ee893dae5d05a5beaf5162b79e3;p=libsigrok.git diff --git a/src/hardware/greatfet/protocol.h b/src/hardware/greatfet/protocol.h index fc61b680..e5a4b8ad 100644 --- a/src/hardware/greatfet/protocol.h +++ b/src/hardware/greatfet/protocol.h @@ -1,6 +1,8 @@ /* * This file is part of the libsigrok project. * + * Copyright (C) 2019 Katherine J. Temkin + * Copyright (C) 2019 Mikaela Szekely * Copyright (C) 2023 Gerhard Sittig * * This program is free software: you can redistribute it and/or modify @@ -20,16 +22,65 @@ #ifndef LIBSIGROK_HARDWARE_GREATFET_PROTOCOL_H #define LIBSIGROK_HARDWARE_GREATFET_PROTOCOL_H -#include #include #include +#include + #include "libsigrok-internal.h" #define LOG_PREFIX "greatfet" struct dev_context { + struct sr_dev_inst *sdi; + GString *usb_comm_buffer; + char *firmware_version; + char *serial_number; + size_t channel_count; + char **channel_names; + struct sr_sw_limits sw_limits; + uint64_t samplerate; + struct dev_acquisition_t { + uint64_t bandwidth_threshold; + size_t unit_size; + struct feed_queue_logic *feed_queue; + size_t capture_channels; + size_t channel_shift; + size_t points_per_byte; + uint64_t capture_samplerate; + size_t firmware_bufsize; + uint8_t samples_endpoint; + uint8_t control_interface; + uint8_t samples_interface; + enum { + ACQ_IDLE, + ACQ_PREPARE, + ACQ_RECEIVE, + ACQ_SHUTDOWN, + } acquisition_state; + gboolean frame_begin_sent; + gboolean control_interface_claimed; + gboolean samples_interface_claimed; + gboolean start_req_sent; + } acquisition; + struct dev_transfers_t { + size_t transfer_bufsize; + size_t transfers_count; + uint8_t *transfer_buffer; + struct libusb_transfer **transfers; + size_t active_transfers; + size_t capture_bufsize; + } transfers; }; +SR_PRIV int greatfet_get_serial_number(const struct sr_dev_inst *sdi); +SR_PRIV int greatfet_get_version_number(const struct sr_dev_inst *sdi); + +SR_PRIV int greatfet_setup_acquisition(const struct sr_dev_inst *sdi); +SR_PRIV int greatfet_start_acquisition(const struct sr_dev_inst *sdi); +SR_PRIV void greatfet_abort_acquisition(const struct sr_dev_inst *sdi); +SR_PRIV int greatfet_stop_acquisition(const struct sr_dev_inst *sdi); +SR_PRIV void greatfet_release_resources(const struct sr_dev_inst *sdi); + SR_PRIV int greatfet_receive_data(int fd, int revents, void *cb_data); #endif