Reorder the sigma_capture_mode() function so that the part which handles
the download of samples from Sigma is clearly separated from the tests if
the download should be started.

Signed-off-by: Marek Vasut <[email protected]>
---
 hardware/asix-sigma/asix-sigma.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c
index e7fa7d3..cdc0988 100644
--- a/hardware/asix-sigma/asix-sigma.c
+++ b/hardware/asix-sigma/asix-sigma.c
@@ -1134,23 +1134,26 @@ static int sigma_capture_mode(struct sr_dev_inst *sdi)
        struct sr_datafeed_packet packet;
        uint64_t running_msec;
        struct timeval tv;
-       int numchunks;
        uint8_t modestatus;
 
-       /* Get the current position. */
-       sigma_read_pos(&devc->state.stoppos, &devc->state.triggerpos,
-                      devc);
-
-       numchunks = (devc->state.stoppos + 511) / 512;
+       uint32_t stoppos, triggerpos;
 
-       /* Check if the timer has expired, or memory is full. */
+       /* Check if the selected sampling duration passed. */
        gettimeofday(&tv, 0);
        running_msec = (tv.tv_sec - devc->start_tv.tv_sec) * 1000 +
-               (tv.tv_usec - devc->start_tv.tv_usec) / 1000;
+                      (tv.tv_usec - devc->start_tv.tv_usec) / 1000;
+       if (running_msec >= devc->limit_msec)
+               goto download;
 
-       if (running_msec < devc->limit_msec && numchunks < 32767)
-               /* Still capturing. */
-               return TRUE;
+       /* Get the position in DRAM to which the FPGA is writing now. */
+       sigma_read_pos(&stoppos, &triggerpos, devc);
+       /* Test if DRAM is full and if so, download the data. */
+       if ((stoppos >> 9) == 32767)
+               goto download;
+
+       return TRUE;
+
+download:
 
        /* Stop acquisition. */
        sigma_set_register(WRITE_MODE, 0x11, devc);
-- 
1.8.5.3


------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to