hantek-dso: capturestate packet also contains the trigger point
Not yet used, but it's the key to knowing where in the frame to start displaying; the frame is used as a circular buffer, and what is sent is effectively a snapshot.
This commit is contained in:
parent
a217bcdf10
commit
6e6eeff47a
|
@ -628,7 +628,8 @@ static int handle_event(int fd, int revents, void *cb_data)
|
||||||
struct sr_datafeed_packet packet;
|
struct sr_datafeed_packet packet;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct context *ctx;
|
struct context *ctx;
|
||||||
int capturestate;
|
uint32_t trigger_offset;
|
||||||
|
uint8_t capturestate;
|
||||||
|
|
||||||
/* Avoid compiler warnings. */
|
/* Avoid compiler warnings. */
|
||||||
(void)fd;
|
(void)fd;
|
||||||
|
@ -654,12 +655,11 @@ static int handle_event(int fd, int revents, void *cb_data)
|
||||||
if (ctx->dev_state != CAPTURE)
|
if (ctx->dev_state != CAPTURE)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if ((capturestate = dso_get_capturestate(ctx)) == CAPTURE_UNKNOWN) {
|
if ((dso_get_capturestate(ctx, &capturestate, &trigger_offset)) != SR_OK)
|
||||||
/* Generated by the function, not the hardware. */
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
|
||||||
|
|
||||||
sr_dbg("hantek-dso: capturestate %d", capturestate);
|
sr_dbg("hantek-dso: capturestate %d", capturestate);
|
||||||
|
sr_dbg("hantek-dso: trigger offset 0x%.6x", trigger_offset);
|
||||||
switch (capturestate) {
|
switch (capturestate) {
|
||||||
case CAPTURE_EMPTY:
|
case CAPTURE_EMPTY:
|
||||||
if (++ctx->capture_empty_count >= MAX_CAPTURE_EMPTY) {
|
if (++ctx->capture_empty_count >= MAX_CAPTURE_EMPTY) {
|
||||||
|
|
|
@ -640,7 +640,8 @@ SR_PRIV int dso_init(struct context *ctx)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
SR_PRIV uint8_t dso_get_capturestate(struct context *ctx)
|
SR_PRIV int dso_get_capturestate(struct context *ctx, uint8_t *capturestate,
|
||||||
|
uint32_t *trigger_offset)
|
||||||
{
|
{
|
||||||
int ret, tmp;
|
int ret, tmp;
|
||||||
uint8_t cmdstring[2], inbuf[512];
|
uint8_t cmdstring[2], inbuf[512];
|
||||||
|
@ -652,20 +653,22 @@ SR_PRIV uint8_t dso_get_capturestate(struct context *ctx)
|
||||||
|
|
||||||
if ((ret = send_bulkcmd(ctx, cmdstring, sizeof(cmdstring))) != SR_OK) {
|
if ((ret = send_bulkcmd(ctx, cmdstring, sizeof(cmdstring))) != SR_OK) {
|
||||||
sr_dbg("Failed to send get_capturestate command: %d", ret);
|
sr_dbg("Failed to send get_capturestate command: %d", ret);
|
||||||
return CAPTURE_UNKNOWN;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = libusb_bulk_transfer(ctx->usb->devhdl,
|
if ((ret = libusb_bulk_transfer(ctx->usb->devhdl,
|
||||||
DSO_EP_IN | LIBUSB_ENDPOINT_IN,
|
DSO_EP_IN | LIBUSB_ENDPOINT_IN,
|
||||||
inbuf, 512, &tmp, 100)) != 0) {
|
inbuf, 512, &tmp, 100)) != 0) {
|
||||||
sr_dbg("Failed to get capturestate: %d", ret);
|
sr_dbg("Failed to get capturestate: %d", ret);
|
||||||
return CAPTURE_UNKNOWN;
|
return SR_ERR;
|
||||||
}
|
}
|
||||||
|
*capturestate = inbuf[0];
|
||||||
|
*trigger_offset = (inbuf[1] << 16) | (inbuf[3] << 8) | inbuf[2];
|
||||||
|
|
||||||
return inbuf[0];
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
SR_PRIV uint8_t dso_capture_start(struct context *ctx)
|
SR_PRIV int dso_capture_start(struct context *ctx)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
uint8_t cmdstring[2];
|
uint8_t cmdstring[2];
|
||||||
|
|
|
@ -203,8 +203,9 @@ SR_PRIV void dso_close(struct sr_dev_inst *sdi);
|
||||||
SR_PRIV int dso_enable_trigger(struct context *ctx);
|
SR_PRIV int dso_enable_trigger(struct context *ctx);
|
||||||
SR_PRIV int dso_force_trigger(struct context *ctx);
|
SR_PRIV int dso_force_trigger(struct context *ctx);
|
||||||
SR_PRIV int dso_init(struct context *ctx);
|
SR_PRIV int dso_init(struct context *ctx);
|
||||||
SR_PRIV uint8_t dso_get_capturestate(struct context *ctx);
|
SR_PRIV int dso_get_capturestate(struct context *ctx, uint8_t *capturestate,
|
||||||
SR_PRIV uint8_t dso_capture_start(struct context *ctx);
|
uint32_t *trigger_offset);
|
||||||
|
SR_PRIV int dso_capture_start(struct context *ctx);
|
||||||
SR_PRIV int dso_get_channeldata(struct context *ctx, libusb_transfer_cb_fn cb);
|
SR_PRIV int dso_get_channeldata(struct context *ctx, libusb_transfer_cb_fn cb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue