aboutsummaryrefslogtreecommitdiffstats
path: root/demos/various
diff options
context:
space:
mode:
authorTexZK <texzk@email.it>2015-07-07 23:53:21 +0200
committerTexZK <texzk@email.it>2015-07-07 23:53:21 +0200
commit3f88eaa27a9ac41a294c5cf6c2de27c47ced9ad0 (patch)
tree95948926588d7ccf908c82b48540eca713fcaf52 /demos/various
parent3ac6c611847f1f20a89315d6d66bc138145ad62d (diff)
downloadChibiOS-Contrib-3f88eaa27a9ac41a294c5cf6c2de27c47ced9ad0.tar.gz
ChibiOS-Contrib-3f88eaa27a9ac41a294c5cf6c2de27c47ced9ad0.tar.bz2
ChibiOS-Contrib-3f88eaa27a9ac41a294c5cf6c2de27c47ced9ad0.zip
Added shell commands to control triple buffer demo
Diffstat (limited to 'demos/various')
-rw-r--r--demos/various/RT-Win32-TriBuf/main.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/demos/various/RT-Win32-TriBuf/main.c b/demos/various/RT-Win32-TriBuf/main.c
index 75fa1a5..bab25cd 100644
--- a/demos/various/RT-Win32-TriBuf/main.c
+++ b/demos/various/RT-Win32-TriBuf/main.c
@@ -25,8 +25,8 @@
/* TriBuf related. */
/*===========================================================================*/
-#define WRITER_DELAY 10
-#define READER_DELAY 20
+#define WRITER_DELAY_MS 10
+#define READER_DELAY_MS 20
#define WRITER_STACK_SIZE 4096
#define READER_STACK_SIZE 4096
@@ -50,11 +50,16 @@ static char read_front(void) {
const char *front;
msg_t error;
+ /* Wait until a new front buffer gets available with prepared data */
error = tribufWaitReadyTimeout(&tribuf, MS2ST(1000));
if (error == MSG_TIMEOUT)
chSysHalt("ERROR: read_front() timed out");
+
+ /* Retrieve the new front buffer */
tribufSwapFront(&tribuf);
front = (const char *)tribufGetFront(&tribuf);
+
+ /* Read data from the new front buffer */
return front[0];
}
@@ -65,8 +70,13 @@ static void write_back(char c) {
char *back;
+ /* Retrieve the current back buffer */
back = (char *)tribufGetBack(&tribuf);
+
+ /* Prepare data onto the current back buffer */
back[0] = c;
+
+ /* Exchange the prepared buffer with a new one */
tribufSwapBack(&tribuf);
}
@@ -133,14 +143,14 @@ int main(void) {
readertp = chThdCreateStatic(reader_wa, sizeof(reader_wa),
READER_PRIORITY,
- reader_thread, (void *)READER_DELAY);
+ reader_thread, (void *)READER_DELAY_MS);
writertp = chThdCreateStatic(writer_wa, sizeof(writer_wa),
WRITER_PRIORITY,
- writer_thread, (void *)WRITER_DELAY);
+ writer_thread, (void *)WRITER_DELAY_MS);
/*
- * Reads from the front buffer.
+ * Let the threads process data.
*/
for (;;)
chThdSleepMilliseconds(1000);