servodisc goodness

Dependencies:   mbed-dev-f303

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers communication.cpp Source File

communication.cpp

00001 #include <stdint.h>
00002 #include <stdio.h>
00003 
00004 #include "mbed.h"
00005 #include "communication.h"
00006 #include "cube.h"
00007 
00008 uint8_t message_buffer[MAX_MESSAGE_LENGTH];
00009 int message_length = -1;
00010 
00011 void clear_message_buffer()
00012 {
00013     for(int i = 0; i < MAX_MESSAGE_LENGTH; i++)
00014         message_buffer[i] = 0;  
00015 }  
00016 
00017 void echo_message_buffer()
00018 {
00019     printf("Message buffer - message of length %d\r\n",message_length);
00020     if(message_length < 1)
00021     {
00022        printf("\tINVALID!\r\n");
00023        return;
00024     }
00025     
00026     for(int i = 0; i < message_length; i++)
00027         printf("\tbyte %d: %c (0x%hhx)\r\n",i,message_buffer[i],message_buffer[i]);   
00028  
00029 }
00030 
00031 void receive_move_sequence(Serial* pc,mbed_info_t* sm)
00032 {
00033     //printf("waiting for move sequence...\r\n");
00034     int i = 0;
00035     for(;;)
00036     {
00037         if(pc->readable())
00038         {
00039             message_buffer[i] = pc->getc();
00040             i++; 
00041         }
00042         if(i >= MAX_MESSAGE_LENGTH)
00043         {
00044             printf("Buffer overflow\r\n");
00045             break;
00046         }
00047         if(message_buffer[i-1] == '\r')
00048             break;
00049     }
00050     message_length = i;
00051     echo_message_buffer();
00052     serial_to_sequence(get_sequence(),message_buffer,i);
00053     print_sequence(get_sequence());
00054     sm->seq = get_sequence();
00055     reset_mbed();
00056 }
00057 
00058 void print_sample_sequence_hex()
00059 {
00060     char move_str[] = "U  D  L  R  F  B  ";
00061     string_to_sequence(move_str);
00062     print_sequence(get_sequence());
00063     uint8_t hex_buf[100];
00064     int size = sequence_to_serial(get_sequence(),hex_buf,100);
00065     
00066     printf("Hex sequence, %d bytes\r\n",size);
00067     
00068     for(int i = 0; i < size; i++)
00069         printf("\tbyte %d: 0x%hhx\r\n",i,hex_buf[i]);  
00070 }