From 6044fda8a88b5d5df30ce0a00e07b3840f663149 Mon Sep 17 00:00:00 2001
From: Brendan Bartels <bbartels@iastate.edu>
Date: Thu, 6 Apr 2017 08:45:38 -0500
Subject: [PATCH] quad: instruct virtual quad to relinquish cpu during I/O

---
 quad/Makefile                                | 6 +++---
 quad/src/virt_quad/hw_impl_unix_i2c.c        | 1 +
 quad/src/virt_quad/hw_impl_unix_mio7_led.c   | 2 +-
 quad/src/virt_quad/hw_impl_unix_pwm_input.c  | 1 +
 quad/src/virt_quad/hw_impl_unix_pwm_output.c | 2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/quad/Makefile b/quad/Makefile
index b5432b33c..f67155208 100644
--- a/quad/Makefile
+++ b/quad/Makefile
@@ -38,9 +38,9 @@ test: all
 	$(MAKE) -C src/queue test
 	$(MAKE) -C src/computation_graph test
 	$(MAKE) -C src/quad_app test
-	# ruby scripts/tests/test_safety_checks.rb
-	# ruby scripts/tests/test_unix_uart.rb
-	# ruby scripts/tests/run_virtual_test_flight.rb
+	ruby scripts/tests/test_safety_checks.rb
+	ruby scripts/tests/test_unix_uart.rb
+	ruby scripts/tests/run_virtual_test_flight.rb
 
 clean:
 	rm -rf $(INCDIR) $(LIBDIR) $(OUTDIR) $(EXEDIR)
diff --git a/quad/src/virt_quad/hw_impl_unix_i2c.c b/quad/src/virt_quad/hw_impl_unix_i2c.c
index c32e0c4ea..b77e635a5 100644
--- a/quad/src/virt_quad/hw_impl_unix_i2c.c
+++ b/quad/src/virt_quad/hw_impl_unix_i2c.c
@@ -112,6 +112,7 @@ void * update_i2c_input_cache(void *arg) {
       cache[i].s = val;
       printf("%s: %ld\n", input_names[i], val);
     }
+    pthread_yield();
   }
   return NULL;
 }
diff --git a/quad/src/virt_quad/hw_impl_unix_mio7_led.c b/quad/src/virt_quad/hw_impl_unix_mio7_led.c
index 6aef66752..b9b66dd09 100644
--- a/quad/src/virt_quad/hw_impl_unix_mio7_led.c
+++ b/quad/src/virt_quad/hw_impl_unix_mio7_led.c
@@ -52,6 +52,6 @@ void * output_cached_led() {
     sprintf(buff, "%d\n", on);
     write(fifo, buff, strlen(buff));
     close(fifo);
-    usleep(500); // don't spam the reader
+    pthread_yield();
   }
 }
diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_input.c b/quad/src/virt_quad/hw_impl_unix_pwm_input.c
index e81e88254..df1aaf5f9 100644
--- a/quad/src/virt_quad/hw_impl_unix_pwm_input.c
+++ b/quad/src/virt_quad/hw_impl_unix_pwm_input.c
@@ -78,6 +78,7 @@ void * update_input_cache(void *arg) {
 	printf("%s: Bad value - input not received\n", input_names[i]);
       }
     }
+    pthread_yield();
   }
   return NULL;
 }
diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_output.c b/quad/src/virt_quad/hw_impl_unix_pwm_output.c
index 71b89c4f4..e58d5cf5a 100644
--- a/quad/src/virt_quad/hw_impl_unix_pwm_output.c
+++ b/quad/src/virt_quad/hw_impl_unix_pwm_output.c
@@ -59,7 +59,7 @@ void * output_cache(void *arg) {
     sprintf(buff, "%ld\n", cache[i]);
     write(fifo, buff, strlen(buff));
     close(fifo);
-    usleep(500); // don't spam the reader
+    pthread_yield();
   }
   return NULL;
 }
-- 
GitLab