servodisc goodness
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Tue Jul 19 2022 04:12:03 by 1.7.2