From 477097f32a3df201ddc531e56127e110896ae13c Mon Sep 17 00:00:00 2001
From: Brendan Bartels <bbartels@iastate.edu>
Date: Sat, 21 Jan 2017 15:54:06 -0600
Subject: [PATCH] quad: Code Review Feedback

- Use u8, u16, and u32 in favor of byte, short, and int
---
 quad/sw/modular_quad_pid/src/commands.c      |  2 +-
 quad/sw/modular_quad_pid/src/communication.c | 14 ++--
 quad/sw/modular_quad_pid/src/uart_buff.c     | 68 ++++++++++++++------
 quad/sw/modular_quad_pid/src/uart_buff.h     |  9 ++-
 4 files changed, 63 insertions(+), 30 deletions(-)

diff --git a/quad/sw/modular_quad_pid/src/commands.c b/quad/sw/modular_quad_pid/src/commands.c
index c89696f2c..36ce1e9b9 100644
--- a/quad/sw/modular_quad_pid/src/commands.c
+++ b/quad/sw/modular_quad_pid/src/commands.c
@@ -419,7 +419,7 @@ int update(modular_structs_t *structs)
 
 	quadPosition_t* currentQuadPosition = &(structs->raw_sensor_struct.currentQuadPosition);
 	// Packet must come as [NEARPY], 4 bytes each
-	int packetId = uart_buff_data_get_int(0);
+	int packetId = uart_buff_data_get_u32(0);
 //	printf("Packet ID: %d\n", packetId);
 	float y_pos = uart_buff_data_get_float(4);
 //	printf("y_pos: %f\n", y_pos);
diff --git a/quad/sw/modular_quad_pid/src/communication.c b/quad/sw/modular_quad_pid/src/communication.c
index 11935385d..2a428909a 100644
--- a/quad/sw/modular_quad_pid/src/communication.c
+++ b/quad/sw/modular_quad_pid/src/communication.c
@@ -70,19 +70,19 @@ int initUartComms() {
 int process_packet(modular_structs_t *structs) {
 	metadata_t meta_data;
 	// parse metadata
-	meta_data.begin_char = uart_buff_get_byte(0);
-	meta_data.msg_type = uart_buff_get_byte(01);
-	meta_data.msg_subtype = uart_buff_get_byte(2);
-	meta_data.msg_id = (uart_buff_get_byte(4) << 8) | (uart_buff_get_byte(3));
-	meta_data.data_len = (uart_buff_get_byte(6) << 8) | (uart_buff_get_byte(5));
-	unsigned char packet_checksum = uart_buff_get_byte(7+meta_data.data_len);
+	meta_data.begin_char = uart_buff_get_u8(0);
+	meta_data.msg_type = uart_buff_get_u8(1);
+	meta_data.msg_subtype = uart_buff_get_u8(2);
+	meta_data.msg_id = uart_buff_get_u16(3);
+	meta_data.data_len = uart_buff_get_u16(5);
+	unsigned char packet_checksum = uart_buff_get_u8(7+meta_data.data_len);
 	//unsigned char* packet_data = packet + sizeof(metadata_t);
 
 	// Compute checksum
 	int i;
 	unsigned char calculated_checksum = 0;
 	for(i = 0; i < meta_data.data_len + 7; i++){
-		calculated_checksum ^= uart_buff_get_byte(i);
+		calculated_checksum ^= uart_buff_get_u8(i);
 	}
 	// Discard if checksum didn't match
 	if(packet_checksum != calculated_checksum) {
diff --git a/quad/sw/modular_quad_pid/src/uart_buff.c b/quad/sw/modular_quad_pid/src/uart_buff.c
index a11a78f47..fab7e464f 100644
--- a/quad/sw/modular_quad_pid/src/uart_buff.c
+++ b/quad/sw/modular_quad_pid/src/uart_buff.c
@@ -66,7 +66,7 @@ void uart_buff_scan_packet_size() {
     return;
   }
 
-  packet_data_length = (uart_buff_get_byte(6) << 8) | uart_buff_get_byte(5);
+  packet_data_length = (uart_buff_get_u8(6) << 8) | uart_buff_get_u8(5);
   packet_size_found = 1;
 
   if (uart_buff_packet_size() > UART_MAX_PACKET_SIZE) {
@@ -87,36 +87,66 @@ int uart_buff_packet_ready() {
 }
 
 /**
- * Retrieve a byte from the buffer according to the given offset with respect
+ * Retrieve a 8-bit from the buffer according to the given offset with respect
  * to the start index of the buffer.
  */
-u8 uart_buff_get_byte(size_t offset) {
+u8 uart_buff_get_u8(size_t offset) {
   size_t target = uart_buff_calc_index(start + offset);
 
   return buff[target];
 }
 
 /**
- * Retrieve a byte from the buffer according to the given offset with respect
- * to the start of the data portion of the current packet.
+ * Retrieve a 16-bit from the buffer according to the given offset with respect
+ * to the start index of the buffer.
+ */
+u16 uart_buff_get_u16(size_t offset) {
+  return uart_buff_data_get_u8(offset + 1) << 8 |
+    uart_buff_data_get_u8(offset);
+}
+
+/**
+ * Retrieve a 32-bit from the buffer according to the given offset with respect
+ * to the start index of the buffer.
+ */
+u32 uart_buff_get_u32(size_t offset) {
+  return uart_buff_data_get_u8(offset + 3) << 24 |
+    uart_buff_data_get_u8(offset + 2) << 16 |
+    uart_buff_data_get_u8(offset + 1) << 8 |
+    uart_buff_data_get_u8(offset);
+}
+
+/**
+ * Retrieve a 8-bit unsigned integer from the buffer according to
+ * the given offset with respect to the start of the data portion
+ * of the current packet.
+ *
+ * This has undefined behavior if a packet is not ready.
+ */
+u8 uart_buff_data_get_u8(size_t offset) {
+  return uart_buff_get_u8(7 + offset);
+}
+
+/**
+ * Retrieve a 16-bit unsigned integer from the buffer according to
+ * the given offset with respect to the start of the data portion
+ * of the current packet.
  *
  * This has undefined behavior if a packet is not ready.
  */
-u8 uart_buff_data_get_byte(size_t offset) {
-  return uart_buff_get_byte(7 + offset);
+u16 uart_buff_data_get_u16(size_t offset) {
+  return uart_buff_get_u16(7 + offset);
 }
 
 /**
- * Retrieve a 32-bit integer from the buffer according to the givein offset with
- * respect to the start of the data portion of the current packet.
+ * Retrieve a 32-bit unsigned integer from the buffer according to
+ * the given offset with respect to the start of the data portion
+ * of the current packet.
  *
  * This has undefined behavior if a packet is not ready.
  */
-int uart_buff_data_get_int(size_t offset) {
-  return uart_buff_data_get_byte(offset + 3) << 24 |
-    uart_buff_data_get_byte(offset + 2) << 16 |
-    uart_buff_data_get_byte(offset + 1) << 8 |
-    uart_buff_data_get_byte(offset);
+u32 uart_buff_data_get_u32(size_t offset) {
+  return uart_buff_get_u32(7 + offset);
 }
 
 /**
@@ -131,10 +161,10 @@ float uart_buff_data_get_float(size_t offset) {
 		float f;
 		int i;
 	} x;
-	x.i = uart_buff_data_get_byte(offset + 3) << 24 |
-			uart_buff_data_get_byte(offset + 2) << 16 |
-			uart_buff_data_get_byte(offset + 1) << 8 |
-			uart_buff_data_get_byte(offset);
+	x.i = uart_buff_data_get_u8(offset + 3) << 24 |
+			uart_buff_data_get_u8(offset + 2) << 16 |
+			uart_buff_data_get_u8(offset + 1) << 8 |
+			uart_buff_data_get_u8(offset);
 	return x.f;
 }
 
@@ -223,7 +253,7 @@ char * uart_buff_get_packet() {
 	str[packet_size + 1] = '\0'; // null terminate string
 	int i;
 	for (i = 0; i < packet_size; i += 1) {
-		str[i] = uart_buff_get_byte(i);
+		str[i] = uart_buff_get_u8(i);
 	}
 	return str;
 }
diff --git a/quad/sw/modular_quad_pid/src/uart_buff.h b/quad/sw/modular_quad_pid/src/uart_buff.h
index 7dcd0fa69..cdf4298f2 100644
--- a/quad/sw/modular_quad_pid/src/uart_buff.h
+++ b/quad/sw/modular_quad_pid/src/uart_buff.h
@@ -8,9 +8,12 @@ void uart_buff_scan_packet();
 void uart_buff_scan_packet_start();
 void uart_buff_scan_packet_size();
 int uart_buff_packet_ready();
-u8 uart_buff_get_byte(size_t);
-u8 uart_buff_data_get_byte(size_t);
-int uart_buff_data_get_int(size_t);
+u8 uart_buff_get_u8(size_t);
+u16 uart_buff_get_u16(size_t);
+u32 uart_buff_get_u32(size_t);
+u8 uart_buff_data_get_u8(size_t);
+u16 uart_buff_data_get_u16(size_t);
+u32 uart_buff_data_get_u32(size_t);
 float uart_buff_data_get_float(size_t);
 void uart_buff_flush_packet();
 size_t uart_buff_size();
-- 
GitLab