{
struct dev_context *devc = sdi->priv;
const int chunks_per_read = 32;
- unsigned char buf[chunks_per_read * CHUNK_SIZE];
+ struct sigma_dram_line *dram_line;
+ unsigned char *buf;
int bufsz, i, numchunks, newchunks;
uint32_t stoppos, triggerpos;
int triggerchunk, chunks_downloaded;
struct sr_datafeed_packet packet;
uint8_t modestatus;
+ dram_line = g_try_malloc0(chunks_per_read * sizeof(*dram_line));
+ if (!dram_line)
+ return FALSE;
+
+ buf = (unsigned char *)dram_line;
+
sr_info("Downloading sample data.");
/* Stop acquisition. */
dev_acquisition_stop(sdi, sdi);
+ g_free(dram_line);
+
return TRUE;
}
#define CHUNK_SIZE 1024
+/*
+ * The entire ASIX Sigma DRAM is an array of struct sigma_dram_line[1024];
+ */
+
+/* One "DRAM cluster" contains a timestamp and 7 samples, 16b total. */
+struct sigma_dram_cluster {
+ uint8_t timestamp_lo;
+ uint8_t timestamp_hi;
+ struct {
+ uint8_t sample_hi;
+ uint8_t sample_lo;
+ } samples[7];
+};
+
+/* One "DRAM line" contains 64 "DRAM clusters", 1024b total. */
+struct sigma_dram_line {
+ struct sigma_dram_cluster cluster[64];
+};
+
struct clockselect_50 {
uint8_t async;
uint8_t fraction;