4,6 → 4,7 |
#include "CUBE.h" |
#include "SPI1.h" |
#include "glcdfont.h" |
#include "UART1.h" |
|
static CUBE_DATA *cube_data_ptr; |
|
758,6 → 759,10 |
} |
// Process data |
switch (cube_data_ptr->frame_state) { |
case IDLE: |
// Reflect the character back to the transmitter |
UART1_Write(&c, 1); |
break; |
case READ_LENGTH_MSB: // Save MSB of length |
cube_data_ptr->frame_length |= (c << 8); |
cube_data_ptr->frame_state = READ_LENGTH_LSB; |
775,17 → 780,17 |
cube_data_ptr->frame_checksum += c; |
cube_data_ptr->frame_buffer[cube_data_ptr->frame_index] = c; |
cube_data_ptr->frame_index++; |
if (cube_data_ptr->frame_index == cube_data_ptr->frame_length) |
if (cube_data_ptr->frame_index == cube_data_ptr->frame_length - 1) |
cube_data_ptr->frame_state = READ_CHECKSUM; |
break; |
case READ_CHECKSUM: // Process frame if checksum is valid |
if (0xFF - (cube_data_ptr->frame_checksum && 0xFF) == c) |
cube_data_ptr->frame_checksum = 0xFF - cube_data_ptr->frame_checksum; |
if (cube_data_ptr->frame_checksum == c) { |
Cube_Data_In_Process_Frame(); |
} |
cube_data_ptr->frame_state = IDLE; |
break; |
case IDLE: |
default: |
// Do nothing |
break; |
} |
} |