diff --git a/groundStation/src/backend/backend.c b/groundStation/src/backend/backend.c index d801e5ebb1e4c9b39216547b331ea181226f4532..295b8544208f952efcc3dc27dca4f0ce2e453452 100644 --- a/groundStation/src/backend/backend.c +++ b/groundStation/src/backend/backend.c @@ -1012,9 +1012,9 @@ static void quad_recv(int index) { case SEND_RT_ID: quadlog_file = fopen("quad_log_data.txt", "w"); - fwrite((char *) formatted_data, sizeof(char), m.data_len, quadlog_file); + //fwrite((char *) formatted_data, sizeof(char), m.data_len, quadlog_file); fclose(quadlog_file); - free(formatted_data); + //free(formatted_data); break; case RESPPARAM_ID: case RESPSOURCE_ID: diff --git a/quad/src/quad_app/callbacks.c b/quad/src/quad_app/callbacks.c index 005485bdb300fc47e43440d2b96fd18cdc4b32fc..bff5d21427108b39a3845e172afc5fbde55884c5 100644 --- a/quad/src/quad_app/callbacks.c +++ b/quad/src/quad_app/callbacks.c @@ -415,32 +415,33 @@ int cb_sendrtdata(struct modular_structs *structs, struct metadata *meta, unsign if (length < 4) return -1; int size = 0; - structs->flags.lidarflags.quadHeight = read_bit(configData, 31); size += read_bit(configData, 31); + u32 configData = (data[2] << 24) | (data[3] << 16) | (data[4] << 8) | (data[5]); + structs->flags_struct.lidarflags->quadHeight = read_bit(configData, 31); size += read_bit(configData, 31); /*BEGIN DOUBLE-TYPE FLAGS. If these are enabled, actual size of data sent is 2*read_bit due to * length of data. This needs to be compensated for in methods where total length of payload packet * needs to be known ahead of time. */ - structs->flags.optflowflags.x_flow = read_bit(configData, 30); size += read_bit(configData, 30); - structs->flags.optflowflags.y_flow = read_bit(configData, 29); size += read_bit(configData, 29); - structs->flags.optflowflags.x_filter = read_bit(configData, 28); size += read_bit(configData, 28); - structs->flags.optflowflags.y_filter = read_bit(configData, 27); size += read_bit(configData, 27); - structs->flags.optflowflags.x_velocity = read_bit(configData, 26); size += read_bit(configData, 26); - structs->flags.optflowflags.y_velocity = read_bit(configData, 25); size += read_bit(configData, 25); + structs->flags_struct.optflowflags->x_flow = read_bit(configData, 30); size += read_bit(configData, 30); + structs->flags_struct.optflowflags->y_flow = read_bit(configData, 29); size += read_bit(configData, 29); + structs->flags_struct.optflowflags->x_filter = read_bit(configData, 28); size += read_bit(configData, 28); + structs->flags_struct.optflowflags->y_filter = read_bit(configData, 27); size += read_bit(configData, 27); + structs->flags_struct.optflowflags->x_velocity = read_bit(configData, 26); size += read_bit(configData, 26); + structs->flags_struct.optflowflags->y_velocity = read_bit(configData, 25); size += read_bit(configData, 25); //END DOUBLE TYPE FLAGS. - structs->flags.imuflags.gyro_x = read_bit(configData, 24); size += read_bit(configData, 24); - structs->flags.imuflags.gyro_y = read_bit(configData, 23); size += read_bit(configData, 23); - structs->flags.imuflags.gyro_z = read_bit(configData, 22); size += read_bit(configData, 22); - structs->flags.imuflags.acc_x = read_bit(configData, 21); size += read_bit(configData, 21); - structs->flags.imuflags.acc_y = read_bit(configData, 20); size += read_bit(configData, 20); - structs->flags.imuflags.acc_z = read_bit(configData, 19); size += read_bit(configData, 19); - structs->flags.imuflags.mag_x = read_bit(configData, 18); size += read_bit(configData, 18); - structs->flags.imuflags.mag_y = read_bit(configData, 17); size += read_bit(configData, 17); - structs->flags.imuflags.mag_z = read_bit(configData, 16); size += read_bit(configData, 16); - structs->flags.errorflags.lidar = read_bit(configData, 15); size += read_bit(configData, 15); - structs->flags.errorflags.consec_lidar = read_bit(configData, 14); size += read_bit(configData, 14); - structs->flags.errorflags.optFlow = read_bit(configData, 13); size += read_bit(configData, 13); - structs->flags.errorflags.consec_optFlow = read_bit(configData, 12); size += read_bit(configData, 12); - structs->flags.errorflags.imu = read_bit(configData, 11); size += read_bit(configData, 11); - structs->flags.errorflags.consec_imu = read_bit(configData, 10); size += read_bit(configData, 10); - structs->flags.flag_count = size; + structs->flags_struct.imuflags->gyro_x = read_bit(configData, 24); size += read_bit(configData, 24); + structs->flags_struct.imuflags->gyro_y = read_bit(configData, 23); size += read_bit(configData, 23); + structs->flags_struct.imuflags->gyro_z = read_bit(configData, 22); size += read_bit(configData, 22); + structs->flags_struct.imuflags->acc_x = read_bit(configData, 21); size += read_bit(configData, 21); + structs->flags_struct.imuflags->acc_y = read_bit(configData, 20); size += read_bit(configData, 20); + structs->flags_struct.imuflags->acc_z = read_bit(configData, 19); size += read_bit(configData, 19); + structs->flags_struct.imuflags->mag_x = read_bit(configData, 18); size += read_bit(configData, 18); + structs->flags_struct.imuflags->mag_y = read_bit(configData, 17); size += read_bit(configData, 17); + structs->flags_struct.imuflags->mag_z = read_bit(configData, 16); size += read_bit(configData, 16); + structs->flags_struct.errorflags->lidar = read_bit(configData, 15); size += read_bit(configData, 15); + structs->flags_struct.errorflags->consec_lidar = read_bit(configData, 14); size += read_bit(configData, 14); + structs->flags_struct.errorflags->optFlow = read_bit(configData, 13); size += read_bit(configData, 13); + structs->flags_struct.errorflags->consec_optFlow = read_bit(configData, 12); size += read_bit(configData, 12); + structs->flags_struct.errorflags->imu = read_bit(configData, 11); size += read_bit(configData, 11); + structs->flags_struct.errorflags->consec_imu = read_bit(configData, 10); size += read_bit(configData, 10); + structs->flags_struct.flag_count = size; return 0; } diff --git a/quad/src/quad_app/initialize_components.c b/quad/src/quad_app/initialize_components.c index 232125ac34aaaac5497059ee9b5004f755254dd6..270d6c8f623c9647d9436f4572a020c6ed080668 100644 --- a/quad/src/quad_app/initialize_components.c +++ b/quad/src/quad_app/initialize_components.c @@ -49,8 +49,8 @@ int init_structs(modular_structs_t *structs) { // Initialize the controller control_algorithm_init(&structs->parameter_struct); - // Initialize the logging - initialize_logging(&structs->log_struct, &structs->parameter_struct); + // Initialize the logging + //initialize_logging(&structs->log_struct, &structs->parameter_struct); // Initialize loop timers struct TimerDriver *global_timer = &structs->hardware_struct.global_timer; @@ -105,7 +105,7 @@ int init_structs(modular_structs_t *structs) { } sensor_processing_init(&structs->sensor_struct); - initializeFlags(&structs->flags); + initializeFlags(&structs->flags_struct); return 0; } diff --git a/quad/src/quad_app/log_data.c b/quad/src/quad_app/log_data.c index 96a0db977a91e03aafa489fea545633f31b552ce..fe8aef14daa9865b5dafd3a68fb8538359de0149 100644 --- a/quad/src/quad_app/log_data.c +++ b/quad/src/quad_app/log_data.c @@ -410,7 +410,7 @@ void RTprintLogging(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, timer_axi_reset(); } -void RTprintend() +void RTprintend(struct CommDriver *comm) { if (arrayIndex == 0) { diff --git a/quad/src/quad_app/log_data.h b/quad/src/quad_app/log_data.h index c4cfd903ec9a87571d2bde6483deafb6c17c2ded..b7271752413895bd2eebca149dc34ab8b2cc6d4f 100644 --- a/quad/src/quad_app/log_data.h +++ b/quad/src/quad_app/log_data.h @@ -51,13 +51,13 @@ void RTprintLogging(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, /** * Prints the beginning header for a flight data file. Used for Real-Time Data Transfer * */ -void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, raw_sensor_t* raw_sensors, SensorRTFlags_t * flags) +void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, raw_sensor_t* raw_sensors, SensorRTFlags_t * flags); /** * Sends the required ending message to close a log file following the end of a flight. Used for * Real-Time Data Transfer * */ -void RTprintend() +void RTprintend(struct CommDriver *comm); /** * Prints all the log information. diff --git a/quad/src/quad_app/quad_app.c b/quad/src/quad_app/quad_app.c index d9174003ae74df44b06525062481ae997ffad406..4fb124cff4b9a7f24d1bb725eaa91a0ed693e880 100644 --- a/quad/src/quad_app/quad_app.c +++ b/quad/src/quad_app/quad_app.c @@ -100,10 +100,10 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct)) { init_cond = 0x1; initialize_logging(&(structs.log_struct), &(structs.parameter_struct), &(structs.flags_struct)); - RTprintheader(&structs.hardware_struct.comm, &(structs.log_struct), &(structs.parameter_struct), &(structs.raw_sensor_struct), &(structs.flags_struct)); + RTprintheader(&(structs.hardware_struct.comm), &(structs.log_struct), &(structs.parameter_struct), &(structs.raw_sensor_struct), &(structs.flags_struct)); } log_data(&(structs.log_struct), &(structs.parameter_struct), &(structs.flags_struct)); - RTprintLogging(&structs.hardware_struct.comm, &(structs.log_struct), &(structs.parameter_struct), &structs.raw_sensor_struct, &(structs.flags_struct)); + RTprintLogging(&(structs.hardware_struct.comm), &(structs.log_struct), &(structs.parameter_struct), &structs.raw_sensor_struct, &(structs.flags_struct)); if(structs.user_defined_struct.flight_mode == AUTO_FLIGHT_MODE) { static int loop_counter = 0; @@ -128,7 +128,7 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct)) } if (this_kill_condition == 1 && last_kill_condition == 0) { - RTprintend(); + RTprintend(&(structs.hardware_struct.comm)); resetLogging(); MIO7_led_off(); } @@ -143,8 +143,8 @@ int quad_main(int (*setup_hardware)(hardware_t *hardware_struct)) char err_msg[] = "More than 10 IMU errors"; send_data(structs.hardware_struct.comm.uart, DEBUG_ID, 0, (u8*)err_msg, sizeof(err_msg)); //Send end of log message. Uncomment printLogging below for post-flight log. - RTprintend(); - resetLogging(); + RTprintend(&(structs.hardware_struct.comm)); + resetLogging(); //printLogging(&structs.hardware_struct.comm, &(structs.log_struct), &(structs.parameter_struct), &structs.raw_sensor_struct); break; } diff --git a/quad/src/quad_app/type_def.h b/quad/src/quad_app/type_def.h index 8eb2565d3cba3410b7e2eebadd41f0be89d59765..1b67b73f27f4805920fda0bc3eb4fae502c76696 100644 --- a/quad/src/quad_app/type_def.h +++ b/quad/src/quad_app/type_def.h @@ -477,24 +477,6 @@ typedef struct hardware_t { struct OpticalFlowDriver of; } hardware_t; -/** - * @brief - * Structures to be used throughout - */ -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; - SensorRTFlags_t flags_struct; -} modular_structs_t; - /* BEGIN FLAG STRUCTS CONTAINING ENABLED/DISABLED RT DATA TRANSFERS */ typedef struct lidarFlags { @@ -553,6 +535,25 @@ typedef struct SensorRTFlags /* END FLAG STRUCTS */ +/** + * @brief + * Structures to be used throughout + */ +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; + SensorRTFlags_t flags_struct; +} modular_structs_t; + + //////// END MAIN MODULAR STRUCTS #endif /* TYPE_DEF_H_ */