- arg[0] = ((readcount - 1) & 0xff);
- arg[1] = ((readcount - 1) & 0xff00) >> 8;
- arg[2] = ((delaycount - 1) & 0xff);
- arg[3] = ((delaycount - 1) & 0xff00) >> 8;
- if (send_longcommand(serial, CMD_CAPTURE_SIZE, arg) != SR_OK)
- return SR_ERR;
+
+ if (devc->max_samples > 256 * 1024) {
+ arg[0] = ((readcount - 1) & 0xff);
+ arg[1] = ((readcount - 1) & 0xff00) >> 8;
+ arg[2] = ((readcount - 1) & 0xff0000) >> 16;
+ arg[3] = ((readcount - 1) & 0xff000000) >> 24;
+ if (send_longcommand(serial, CMD_CAPTURE_READCOUNT, arg) != SR_OK)
+ return SR_ERR;
+ arg[0] = ((delaycount - 1) & 0xff);
+ arg[1] = ((delaycount - 1) & 0xff00) >> 8;
+ arg[2] = ((delaycount - 1) & 0xff0000) >> 16;
+ arg[3] = ((delaycount - 1) & 0xff000000) >> 24;
+ if (send_longcommand(serial, CMD_CAPTURE_DELAYCOUNT, arg) != SR_OK)
+ return SR_ERR;
+ } else {
+ arg[0] = ((readcount - 1) & 0xff);
+ arg[1] = ((readcount - 1) & 0xff00) >> 8;
+ arg[2] = ((delaycount - 1) & 0xff);
+ arg[3] = ((delaycount - 1) & 0xff00) >> 8;
+ if (send_longcommand(serial, CMD_CAPTURE_SIZE, arg) != SR_OK)
+ return SR_ERR;
+ }