X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fhantek-dso%2Fprotocol.c;h=d2101f2a8170c892af1311c7a0e12f482aa3d84e;hb=7f0463840ab5d6a85daaa76850558d2b71e596cf;hp=a1d940fc5d25e577450000bf9c524afde2a3d22f;hpb=ab8df2b1a64d7891e4fbbcdef047e28343819dc9;p=libsigrok.git diff --git a/src/hardware/hantek-dso/protocol.c b/src/hardware/hantek-dso/protocol.c index a1d940fc..d2101f2a 100644 --- a/src/hardware/hantek-dso/protocol.c +++ b/src/hardware/hantek-dso/protocol.c @@ -130,7 +130,9 @@ SR_PRIV int dso_open(struct sr_dev_inst *sdi) /* * Check device by its physical USB bus/port address. */ - usb_get_port_path(devlist[i], connection_id, sizeof(connection_id)); + if (usb_get_port_path(devlist[i], connection_id, sizeof(connection_id)) < 0) + continue; + if (strcmp(sdi->connection_id, connection_id)) /* This is not the one. */ continue; @@ -263,7 +265,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi) struct dev_context *devc; struct sr_usb_dev_inst *usb; int ret, tmp; - int base; + uint64_t base; uint8_t cmdstring[12]; int trig; @@ -324,7 +326,8 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi) } tmp = base / devc->samplerate; - if (tmp) { + /* Downsample only if really necessary */ + if (tmp > 1) { /* Downsampling on */ cmdstring[2] |= 2; /* Downsampler = 1comp((Base / Samplerate) - 2) @@ -373,7 +376,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi) memset(cmdstring, 0, sizeof(cmdstring)); cmdstring[0] = CMD_2250_SET_TRIGGERPOS_AND_BUFFER; - sr_dbg("Capture ratio: %d.", devc->capture_ratio); + sr_dbg("Capture ratio: %" PRIu64 ".", devc->capture_ratio); trig = devc->capture_ratio; dso2250_set_triggerpos(trig, devc->framesize != FRAMESIZE_SMALL, cmdstring, 2); @@ -394,7 +397,7 @@ static int dso2250_set_trigger_samplerate(const struct sr_dev_inst *sdi) return SR_OK; } -int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi) +SR_PRIV int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi) { struct dev_context *devc; struct sr_usb_dev_inst *usb; @@ -494,7 +497,7 @@ int dso_set_trigger_samplerate(const struct sr_dev_inst *sdi) cmdstring[5] = (tmp >> 8) & 0xff; /* Horizontal trigger position */ - sr_dbg("Capture ratio: %d.", devc->capture_ratio); + sr_dbg("Capture ratio: %" PRIu64 ".", devc->capture_ratio); tmp = 0x77fff + 0x8000 * devc->capture_ratio / 100; cmdstring[6] = tmp & 0xff; cmdstring[7] = (tmp >> 8) & 0xff; @@ -688,7 +691,7 @@ static int dso_set_relays(const struct sr_dev_inst *sdi) return SR_OK; } -int dso_set_voffsets(const struct sr_dev_inst *sdi) +SR_PRIV int dso_set_voffsets(const struct sr_dev_inst *sdi) { struct dev_context *devc; struct sr_usb_dev_inst *usb;