From b13681e7a5dafbc0ec9351a230ec9af8d86c0628 Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Mon, 20 Jul 2020 01:16:31 +0200
Subject: [PATCH] fix(vibra): Deal with durations <= 0

---
 epicardium/modules/vibra.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/epicardium/modules/vibra.c b/epicardium/modules/vibra.c
index 8b10d19b6..da1325093 100644
--- a/epicardium/modules/vibra.c
+++ b/epicardium/modules/vibra.c
@@ -27,15 +27,21 @@ void epic_vibra_vibrate(int millis)
 {
 	int ticks = millis * (configTICK_RATE_HZ / 1000);
 
+	/* Make sure the duration is valid */
+	if (ticks < 1) {
+		/* Disable a potentially running motor */
+		epic_vibra_set(0);
+		return;
+	}
+
 	if (vibra_timer == NULL) {
 		vibra_timer = xTimerCreateStatic(
 			"vibratimer",
 			ticks,
-			pdFALSE,
+			pdFALSE, /* one-shot */
 			0,
 			vTimerCallback,
-			&vibra_timer_data
-		);
+			&vibra_timer_data);
 	}
 	if (vibra_timer != NULL) {
 		epic_vibra_set(1);
-- 
GitLab