void Send_RC_Packet(void) { uint8_t left_encoder_high; uint8_t left_encoder_low; uint8_t right_encoder_high; uint8_t right_encoder_low; uint8_t heading_high; uint8_t heading_low; USART_Transmit(0x00); // Initialize packet packet[0] = "\0"; // Get the current number of left encoder // clicks left_encoder_clicks = Left_Encoder_Count(); // Split it into a high and low byte left_encoder_high = left_encoder_clicks >> 8; left_encoder_low = left_encoder_clicks << 8; USART_Transmit(0x01); // Get the current number of right encoder // clicks right_encoder_clicks = Right_Encoder_Count(); // Split into high and low byte right_encoder_high = right_encoder_clicks >> 8; right_encoder_low = right_encoder_clicks << 8; // Split heading into high and low heading_high = current_heading >> 8; heading_low = current_heading << 8; USART_Transmit(0x02); // Send two starting bits, to tell the receiving uC // that a data packet is coming. strcat(packet, 0x00); strcat(packet, 0x00); // Left encoder value strcat(packet, left_encoder_high); strcat(packet, left_encoder_low); // Right encoder value strcat(packet, right_encoder_high); strcat(packet, right_encoder_low); // Heading strcat(packet, heading_high); strcat(packet, heading_low); // Ending bit, to tell the receiving uC that data // transmission is over. strcat(packet, 0xFF); USART_Transmit(0x03); // Send packet USART_Transmit(packet); }