servodisc goodness

Dependencies:   mbed-dev-f303

Committer:
benkatz
Date:
Mon Jan 15 16:12:52 2018 +0000
Revision:
6:1143996ac690
Child:
7:a278f58cdbd3
Synchronization worked!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benkatz 6:1143996ac690 1 #include <stdint.h>
benkatz 6:1143996ac690 2 #include <stdio.h>
benkatz 6:1143996ac690 3
benkatz 6:1143996ac690 4 #include "mbed.h"
benkatz 6:1143996ac690 5 #include "communication.h"
benkatz 6:1143996ac690 6 #include "cube.h"
benkatz 6:1143996ac690 7
benkatz 6:1143996ac690 8 uint8_t message_buffer[MAX_MESSAGE_LENGTH];
benkatz 6:1143996ac690 9 int message_length = -1;
benkatz 6:1143996ac690 10
benkatz 6:1143996ac690 11 void clear_message_buffer()
benkatz 6:1143996ac690 12 {
benkatz 6:1143996ac690 13 for(int i = 0; i < MAX_MESSAGE_LENGTH; i++)
benkatz 6:1143996ac690 14 message_buffer[i] = 0;
benkatz 6:1143996ac690 15 }
benkatz 6:1143996ac690 16
benkatz 6:1143996ac690 17 void echo_message_buffer()
benkatz 6:1143996ac690 18 {
benkatz 6:1143996ac690 19 printf("Message buffer - message of length %d\r\n",message_length);
benkatz 6:1143996ac690 20 if(message_length < 1)
benkatz 6:1143996ac690 21 {
benkatz 6:1143996ac690 22 printf("\tINVALID!\r\n");
benkatz 6:1143996ac690 23 return;
benkatz 6:1143996ac690 24 }
benkatz 6:1143996ac690 25
benkatz 6:1143996ac690 26 for(int i = 0; i < message_length; i++)
benkatz 6:1143996ac690 27 printf("\tbyte %d: %c (0x%hhx)\r\n",i,message_buffer[i],message_buffer[i]);
benkatz 6:1143996ac690 28
benkatz 6:1143996ac690 29 }
benkatz 6:1143996ac690 30
benkatz 6:1143996ac690 31 void receive_move_sequence(Serial* pc,mbed_info_t* sm)
benkatz 6:1143996ac690 32 {
benkatz 6:1143996ac690 33 //printf("waiting for move sequence...\r\n");
benkatz 6:1143996ac690 34 int i = 0;
benkatz 6:1143996ac690 35 for(;;)
benkatz 6:1143996ac690 36 {
benkatz 6:1143996ac690 37 if(pc->readable())
benkatz 6:1143996ac690 38 {
benkatz 6:1143996ac690 39 message_buffer[i] = pc->getc();
benkatz 6:1143996ac690 40 i++;
benkatz 6:1143996ac690 41 }
benkatz 6:1143996ac690 42 if(i >= MAX_MESSAGE_LENGTH)
benkatz 6:1143996ac690 43 {
benkatz 6:1143996ac690 44 printf("Buffer overflow\r\n");
benkatz 6:1143996ac690 45 break;
benkatz 6:1143996ac690 46 }
benkatz 6:1143996ac690 47 if(message_buffer[i-1] == '\r')
benkatz 6:1143996ac690 48 break;
benkatz 6:1143996ac690 49 }
benkatz 6:1143996ac690 50 message_length = i;
benkatz 6:1143996ac690 51 echo_message_buffer();
benkatz 6:1143996ac690 52 serial_to_sequence(get_sequence(),message_buffer,i);
benkatz 6:1143996ac690 53 print_sequence(get_sequence());
benkatz 6:1143996ac690 54 sm->seq = get_sequence();
benkatz 6:1143996ac690 55 reset_mbed();
benkatz 6:1143996ac690 56 }
benkatz 6:1143996ac690 57
benkatz 6:1143996ac690 58 void print_sample_sequence_hex()
benkatz 6:1143996ac690 59 {
benkatz 6:1143996ac690 60 char move_str[] = "U D L R F B ";
benkatz 6:1143996ac690 61 string_to_sequence(move_str);
benkatz 6:1143996ac690 62 print_sequence(get_sequence());
benkatz 6:1143996ac690 63 uint8_t hex_buf[100];
benkatz 6:1143996ac690 64 int size = sequence_to_serial(get_sequence(),hex_buf,100);
benkatz 6:1143996ac690 65
benkatz 6:1143996ac690 66 printf("Hex sequence, %d bytes\r\n",size);
benkatz 6:1143996ac690 67
benkatz 6:1143996ac690 68 for(int i = 0; i < size; i++)
benkatz 6:1143996ac690 69 printf("\tbyte %d: 0x%hhx\r\n",i,hex_buf[i]);
benkatz 6:1143996ac690 70 }