From 421e34417e9fa4be17677e08353ce398894fd80d Mon Sep 17 00:00:00 2001
From: Tina Li <tina@tinaairtwo.student.iastate.edu>
Date: Mon, 8 Oct 2018 13:51:58 -0500
Subject: [PATCH] added debug flag functionality

---
 quad/src/quad_app/debug_rt.c | 152 +++++++++++++++++++++++++++++++++++
 quad/src/quad_app/debug_rt.h |  29 +++++++
 quad/src/quad_app/quad_app.c |   8 ++
 3 files changed, 189 insertions(+)

diff --git a/quad/src/quad_app/debug_rt.c b/quad/src/quad_app/debug_rt.c
index 10b222ccb..7da8240a2 100644
--- a/quad/src/quad_app/debug_rt.c
+++ b/quad/src/quad_app/debug_rt.c
@@ -1,2 +1,154 @@
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include "PID.h"
+#include "type_def.h"
+#include "debug_rt.h"
+#include "communication.h"
+#include "computation_graph.h"
+#include "timer.h"
+
+//use int send_data(struct UARTDriver *uart, u16 type_id, u16 msg_id, u8* data, size_t size) to send information to the via uart to the wifi chip
+
+//the uart driver is in the comm driver
+//send_data(comm->uart, LOG_ID, 0, (u8*)buf.str, buf.size);
+
+//where is LOG ID? Maybe it will compile any if I just write it as is?
+
+
+//typedef struct hardware_t : this is where you access the comm driver
+
+/*
+ 
+ typedef struct hardware_t {
+ struct I2CDriver i2c_0;
+ struct I2CDriver i2c_1;
+ struct RCReceiverDriver rc_receiver;
+ struct MotorDriver motors;
+ struct UARTDriver uart_0;
+ struct UARTDriver uart_1;
+ struct GPSDriver gps;
+ struct CommDriver comm;
+ struct TimerDriver global_timer;
+ struct TimerDriver axi_timer;
+ struct LEDDriver mio7_led;
+ struct SystemDriver sys;
+ struct IMUDriver imu;
+ struct LidarDriver lidar;
+ struct OpticalFlowDriver of;
+ } hardware_t;
+
+ struct CommDriver {
+ struct UARTDriver *uart;  <-- ???
+ };
+ 
+ */
+
+/*
+typedef struct modular_structs {
+    user_input_t user_input_struct;
+    log_t log_struct;
+    raw_sensor_t raw_sensor_struct;
+    sensor_t sensor_struct;
+    setpoint_t setpoint_struct;
+    parameter_t parameter_struct;
+    user_defined_t user_defined_struct;
+    raw_actuator_t raw_actuator_struct;
+    actuator_command_t actuator_command_struct;
+    hardware_t hardware_struct;
+} modular_structs_t;
+ 
+ */
+
+/*
+ 
+ int send_actuator_commands(struct MotorDriver *motors, log_t* log_struct, actuator_command_t* actuator_command_struct) {
+ int i;
+ // write the PWMs to the motors
+ 
+ for (i = 0; i < 4; i++) {
+ motors->write(motors, i, actuator_command_struct->motor_magnitudes[i]);
+ }
+ 
+ return 0;
+ }
+ 
+ */
+
+int set_debug_level(enum debug_data_types type, int state){
+    switch(type)
+    {
+        case CAMERA:
+            flags->camera = state;
+            break;
+        case GYRO:
+            flags->gyro = state;
+            break;
+        case ACCELEROMETER:
+            flags->accelerometer = state;
+            break;
+        case LIDAR:
+            flags->lidar = state;
+            break;
+        case OPT_FLOW:
+            flags->optical_flow = state;
+            break;
+        case GPS:
+            flags->GPS = state;
+            break;
+        case PID:
+            flags->PID = state;
+            break;
+        case RC_TRANS:
+            flags->RC_transmitter = state;
+            break;
+        case ACTUATOR:
+            flags->actuator = state;
+            break;
+        case default:
+            break;
+    }
+}
+
+
+
+char get_debug_level(enum debug_data_types type){
+    
+    switch(type)
+    {
+        case CAMERA:
+            return flags->camera;
+            break;
+        case GYRO:
+            return flags->gyro;
+            break;
+        case ACCELEROMETER:
+            return flags->accelerometer;
+            break;
+        case LIDAR:
+            return flags->lidar;
+            break;
+        case OPT_FLOW:
+            return flags->optical_flow;
+            break;
+        case GPS:
+            return flags->GPS;
+            break;
+        case PID:
+            return flags->PID;
+            break;
+        case RC_TRANS:
+            return flags->RC_transmitter;
+            break;
+        case ACTUATOR:
+            return flags->actuator;
+            break;
+        case default:
+            break;
+    }
+}
+
+
+
 
diff --git a/quad/src/quad_app/debug_rt.h b/quad/src/quad_app/debug_rt.h
index 10b222ccb..5a8b4b014 100644
--- a/quad/src/quad_app/debug_rt.h
+++ b/quad/src/quad_app/debug_rt.h
@@ -1,2 +1,31 @@
 #include <stdio.h>
 
+#define ON 1
+#define OFF 0
+#define ERROR -1
+
+typedef enum debug_data_types
+{
+    CAMERA, GYRO, ACCELEROMETER, LIDAR, OPT_FLOW, GPS, PID, RC_TRANS, ACTUATOR
+}
+
+typedef struct debug_level_flags{
+    
+    char camera;
+    char gyro;
+    char accelerometer;
+    char lidar;
+    char optical_flow;
+    char GPS;
+    char PID;
+    char RC_transmitter;
+    char actuator;
+    
+}debug_flags;
+
+debug_flags flags;
+
+int set_debug_level(enum debug_data_types type, int state);
+
+char get_debug_level(enum debug_data_types type);
+
diff --git a/quad/src/quad_app/quad_app.c b/quad/src/quad_app/quad_app.c
index 561df5b1a..13685c398 100644
--- a/quad/src/quad_app/quad_app.c
+++ b/quad/src/quad_app/quad_app.c
@@ -38,6 +38,10 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct))
 
 	int last_kill_condition = kill_condition(&(structs.user_input_struct));
 
+    
+    //find debug level
+    
+    
 	// Main control loop
 	while (1)
 	{
@@ -58,6 +62,8 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct))
 
 		// Process the sensor data and put it into sensor_struct
 		sensor_processing(&(structs.log_struct), &(structs.user_input_struct), &(structs.raw_sensor_struct), &(structs.sensor_struct));
+        
+        //Send the sensor data in RT
 
 		if (!this_kill_condition) {
 			// Run the control algorithm
@@ -66,6 +72,8 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct))
 
 			// send the actuator commands
 			send_actuator_commands(&(structs.hardware_struct.motors), &(structs.log_struct), &(structs.actuator_command_struct));
+            
+            // send actuator to 
 		}
 		else {
 			kill_motors(&(structs.hardware_struct.motors));
-- 
GitLab