servodisc goodness
communication.cpp@6:1143996ac690, 2018-01-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |