*/
static int decode_chunk_ts(struct sigma_dram_line *dram_line, uint16_t *lastts,
uint16_t *lastsample, int triggerpos,
- uint16_t limit_chunk, void *cb_data)
+ uint16_t events_in_line, void *cb_data)
{
uint8_t *buf = (uint8_t *)dram_line;
struct sigma_dram_cluster *dram_cluster;
}
/* For each ts. */
- for (i = 0; i < 64; i++) {
+ for (i = 0; i < (events_in_line / 7); i++) {
dram_cluster = &dram_line->cluster[i];
ts = sigma_dram_cluster_ts(dram_cluster);
tsdiff = ts - *lastts;
*lastts = ts;
- /* Decode partial chunk. */
- if (limit_chunk && ts > limit_chunk)
- return SR_OK;
-
/* Pad last sample up to current point. */
numpad = tsdiff * devc->samples_per_event - clustersize;
if (numpad > 0) {
uint32_t i;
uint32_t dl_lines_total, dl_lines_curr, dl_lines_done;
- uint32_t dl_trailing_events;
+ uint32_t dl_events_in_line = 64 * 7;
uint32_t trg_line = ~0;
dram_line = g_try_malloc0(chunks_per_read * sizeof(*dram_line));
* line can be only partial, containing less than 64 clusters.
*/
dl_lines_total = (stoppos >> 9) + 1;
- dl_trailing_events = stoppos & 0x1ff;
dl_lines_done = 0;
}
for (i = 0; i < dl_lines_curr; i++) {
- uint32_t dl_limit = 0;
int trigger_line = -1;
/* The last "DRAM line" can be only partially full. */
if (dl_lines_done + i == dl_lines_total - 1)
- dl_limit = dl_trailing_events;
+ dl_events_in_line = stoppos & 0x1ff;
/* Test if the trigger happened on this line. */
if (dl_lines_done + i == trg_line)
decode_chunk_ts(dram_line + i,
&devc->state.lastts,
&devc->state.lastsample,
- trigger_line, dl_limit, sdi);
+ trigger_line,
+ dl_events_in_line, sdi);
}
dl_lines_done += dl_lines_curr;