- if (dmm->req_timeout_ms || dmm->req_delay_ms)
- devc->req_next_at = g_get_monotonic_time() +
- dmm->req_delay_ms * 1000;
- req_packet(sdi);
- } else {
- offset++;
+ }
+ if (ret == SR_PACKET_INVALID) {
+ sr_dbg("Not a valid packet, searching.");
+ check_pos++;
+ continue;
+ }
+ } else if (dmm->packet_valid) {
+ if (!dmm->packet_valid(check_ptr)) {
+ sr_dbg("Not a valid packet, searching.");
+ check_pos++;
+ continue;
+ }
+ pkt_size = dmm->packet_size;
+ }
+
+ /* Process the package. */
+ sr_dbg("Valid packet, size %zu, processing", pkt_size);
+ handle_packet(sdi, check_ptr, pkt_size, info);
+ check_pos += pkt_size;
+
+ /* Arrange for the next packet request if needed. */
+ if (!dmm->packet_request)
+ continue;
+ if (dmm->req_timeout_ms || dmm->req_delay_ms) {
+ deadline = g_get_monotonic_time();
+ deadline += dmm->req_delay_ms * 1000;
+ devc->req_next_at = deadline;