From cae9cab6e9245b442fe54c9d5f96bb2bd2c7d7c6 Mon Sep 17 00:00:00 2001
From: Raphael Nestler <raphael.nestler@gmail.com>
Date: Fri, 23 Aug 2019 03:10:39 +0200
Subject: [PATCH] Rolling buffer

---
 sensor-plot/src/main.rs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/sensor-plot/src/main.rs b/sensor-plot/src/main.rs
index 0deb211..993aa53 100644
--- a/sensor-plot/src/main.rs
+++ b/sensor-plot/src/main.rs
@@ -7,7 +7,7 @@ use core::fmt::Write;
 
 struct PlotBuffer {
     buffer: [i32; Display::W as usize],
-    index: usize,
+    index: u16,
 }
 
 impl PlotBuffer {
@@ -27,9 +27,9 @@ impl PlotBuffer {
     }
 
     pub fn add_sample(&mut self, sample: i32) {
-        self.buffer[self.index] = sample;
+        self.buffer[self.index as usize] = sample;
         self.index += 1;
-        if self.index >= Display::W as usize {
+        if self.index >= Display::W {
             self.index = 0;
         }
     }
@@ -45,9 +45,11 @@ impl PlotBuffer {
         };
 
         for i in 0..Display::W {
+            let index = (self.index + i) % Display::W;
             display.pixel(
                 i,
-                ((Display::H - 1) as f32 - ((self.buffer[i as usize] as f32 - min) * multiplier))
+                ((Display::H - 1) as f32
+                    - ((self.buffer[index as usize] as f32 - min) * multiplier))
                     as u16,
                 Color::white(),
             );
-- 
GitLab