servodisc goodness

Dependencies:   mbed-dev-f303

Revision:
6:1143996ac690
Child:
7:a278f58cdbd3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/communication.cpp	Mon Jan 15 16:12:52 2018 +0000
@@ -0,0 +1,70 @@
+#include <stdint.h>
+#include <stdio.h>
+
+#include "mbed.h"
+#include "communication.h"
+#include "cube.h"
+
+uint8_t message_buffer[MAX_MESSAGE_LENGTH];
+int message_length = -1;
+
+void clear_message_buffer()
+{
+    for(int i = 0; i < MAX_MESSAGE_LENGTH; i++)
+        message_buffer[i] = 0;  
+}  
+
+void echo_message_buffer()
+{
+    printf("Message buffer - message of length %d\r\n",message_length);
+    if(message_length < 1)
+    {
+       printf("\tINVALID!\r\n");
+       return;
+    }
+    
+    for(int i = 0; i < message_length; i++)
+        printf("\tbyte %d: %c (0x%hhx)\r\n",i,message_buffer[i],message_buffer[i]);   
+ 
+}
+
+void receive_move_sequence(Serial* pc,mbed_info_t* sm)
+{
+    //printf("waiting for move sequence...\r\n");
+    int i = 0;
+    for(;;)
+    {
+        if(pc->readable())
+        {
+            message_buffer[i] = pc->getc();
+            i++; 
+        }
+        if(i >= MAX_MESSAGE_LENGTH)
+        {
+            printf("Buffer overflow\r\n");
+            break;
+        }
+        if(message_buffer[i-1] == '\r')
+            break;
+    }
+    message_length = i;
+    echo_message_buffer();
+    serial_to_sequence(get_sequence(),message_buffer,i);
+    print_sequence(get_sequence());
+    sm->seq = get_sequence();
+    reset_mbed();
+}
+
+void print_sample_sequence_hex()
+{
+    char move_str[] = "U  D  L  R  F  B  ";
+    string_to_sequence(move_str);
+    print_sequence(get_sequence());
+    uint8_t hex_buf[100];
+    int size = sequence_to_serial(get_sequence(),hex_buf,100);
+    
+    printf("Hex sequence, %d bytes\r\n",size);
+    
+    for(int i = 0; i < size; i++)
+        printf("\tbyte %d: 0x%hhx\r\n",i,hex_buf[i]);  
+}
\ No newline at end of file