From 7aec98c57df5a04e482c2e1909c52f83e74513f1 Mon Sep 17 00:00:00 2001
From: PeterKietzmann <peter.kietzmann@haw-hamburg.de>
Date: Fri, 17 Oct 2014 10:09:25 +0200
Subject: [PATCH] Added a function for the slave to print received data.

---
 tests/periph_spi/main.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tests/periph_spi/main.c b/tests/periph_spi/main.c
index 65c2edda4a..ce59d0263a 100644
--- a/tests/periph_spi/main.c
+++ b/tests/periph_spi/main.c
@@ -44,6 +44,8 @@ static int spi_speed = -1;
 static int spi_master = -1;     /* 0 for slave, 1 for master, -1 for not initialized */
 
 static char buffer[256];       /* temporary buffer */
+static char rx_buffer[256];    /* global receive buffer */
+static int rx_counter = 0;
 
 static volatile int state;
 static char* mem = "Hello Master! abcdefghijklmnopqrstuvwxyz 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -140,6 +142,12 @@ void slave_on_cs(void *arg)
 
 char slave_on_data(char data)
 {
+    rx_buffer[rx_counter] = data;
+    rx_counter++;
+    if (rx_counter >= 256) {
+        rx_counter = 0;
+    }
+
     switch (rw) {
         case READ:
             return mem[state++];
@@ -239,6 +247,19 @@ void cmd_transfer(int argc, char **argv)
     }
 }
 
+void cmd_print(int argc, char **argv)
+{
+    if (spi_master != 0) {
+        puts("error: node is not initialized as slave");
+    }
+    else {
+        printf("Received %i bytes:\n", rx_counter);
+        print_bytes("MOSI", rx_buffer, rx_counter);
+    }
+    rx_counter = 0;
+    memset(&rx_buffer, 0, 256);
+}
+
 int shell_getchar(void)
 {
     return (int)getchar();
@@ -253,6 +274,7 @@ static const shell_command_t shell_commands[] = {
     { "init_master", "Initialize node as SPI master", cmd_init_master },
     { "init_slave", "Initialize node as SPI slave", cmd_init_slave },
     { "send", "Transfer string to slave (only in master mode)", cmd_transfer },
+    { "print_rx", "Print the received string (only in slave mode)", cmd_print },
     { NULL, NULL, NULL }
 };
 
-- 
GitLab