/*
* Don't send the request while receive data is being accumulated.
+ * Defer request transmission when a previous request has not yet
+ * seen any response data at all (more probable to happen shortly
+ * after connecting to the peripheral).
*/
devc = sdi->priv;
- if (!force && devc->rdlen)
- return SR_OK;
+ if (!force) {
+ if (devc->rdlen)
+ return SR_OK;
+ if (!devc->rx_after_tx)
+ return SR_OK;
+ }
/*
* Send the request when the transmit interval was reached. Or
return SR_ERR;
}
devc->cmd_sent_at = now;
+ devc->rx_after_tx = 0;
return SR_OK;
}
if (len == 0)
return SR_OK;
devc->rdlen += len;
+ devc->rx_after_tx += len;
}
/*