Skip to content
Snippets Groups Projects
Commit 0e913f2a authored by James Talbert's avatar James Talbert
Browse files

Fix memory leak

parent f17e6ad0
No related branches found
No related tags found
No related merge requests found
...@@ -448,6 +448,7 @@ int cb_overrideoutput(struct modular_structs *structs, struct metadata *meta, un ...@@ -448,6 +448,7 @@ int cb_overrideoutput(struct modular_structs *structs, struct metadata *meta, un
float f = build_float(&data[1+i*4]); float f = build_float(&data[1+i*4]);
override_info->values[i] = f; override_info->values[i] = f;
} }
return 0;
} }
int cb_sendrtdata(struct modular_structs *structs, struct metadata *meta, unsigned char *data, unsigned short length) { int cb_sendrtdata(struct modular_structs *structs, struct metadata *meta, unsigned char *data, unsigned short length) {
...@@ -456,32 +457,32 @@ int cb_sendrtdata(struct modular_structs *structs, struct metadata *meta, unsign ...@@ -456,32 +457,32 @@ int cb_sendrtdata(struct modular_structs *structs, struct metadata *meta, unsign
return -1; return -1;
int size = 0; int size = 0;
u32 configData = (data[2] << 24) | (data[3] << 16) | (data[4] << 8) | (data[5]); 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); 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 /*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 * length of data. This needs to be compensated for in methods where total length of payload packet
* needs to be known ahead of time. */ * needs to be known ahead of time. */
structs->flags_struct.optflowflags->x_flow = read_bit(configData, 30); size += read_bit(configData, 30); 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.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.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.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.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); structs->flags_struct.optflowflags.y_velocity = read_bit(configData, 25); size += read_bit(configData, 25);
//END DOUBLE TYPE FLAGS. //END DOUBLE TYPE FLAGS.
structs->flags_struct.imuflags->gyro_x = read_bit(configData, 24); size += read_bit(configData, 24); 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_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.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_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_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.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_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_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.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.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.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.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.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.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.errorflags.consec_imu = read_bit(configData, 10); size += read_bit(configData, 10);
structs->flags_struct.flag_count = size; structs->flags_struct.flag_count = size;
return 0; return 0;
} }
...@@ -138,39 +138,39 @@ void initialize_logging(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * fl ...@@ -138,39 +138,39 @@ void initialize_logging(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * fl
addParamToLog(log_struct, ps->flow_quality, CONST_VAL, "none"); addParamToLog(log_struct, ps->flow_quality, CONST_VAL, "none");
int num_outputs = 0; int num_outputs = 0;
if (flags->imuflags->acc_x) if (flags->imuflags.acc_x)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->acc_y) if (flags->imuflags.acc_y)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->acc_z) if (flags->imuflags.acc_z)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->gyro_x) if (flags->imuflags.gyro_x)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->gyro_y) if (flags->imuflags.gyro_y)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->gyro_z) if (flags->imuflags.gyro_z)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->mag_x) if (flags->imuflags.mag_x)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->mag_y) if (flags->imuflags.mag_y)
{ {
num_outputs++; num_outputs++;
} }
if (flags->imuflags->mag_z) if (flags->imuflags.mag_z)
{ {
num_outputs++; num_outputs++;
} }
...@@ -197,39 +197,39 @@ int log_data(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * flags) ...@@ -197,39 +197,39 @@ int log_data(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * flags)
//TODO make this not stupid //TODO make this not stupid
thisRow[offset++] = log_struct->time_stamp; thisRow[offset++] = log_struct->time_stamp;
if (flags->imuflags->acc_x) if (flags->imuflags.acc_x)
{ {
thisRow[offset++] = log_struct->gam.accel_x; thisRow[offset++] = log_struct->gam.accel_x;
} }
if (flags->imuflags->acc_y) if (flags->imuflags.acc_y)
{ {
thisRow[offset++] = log_struct->gam.accel_y; thisRow[offset++] = log_struct->gam.accel_y;
} }
if (flags->imuflags->acc_z) if (flags->imuflags.acc_z)
{ {
thisRow[offset++] = log_struct->gam.accel_z; thisRow[offset++] = log_struct->gam.accel_z;
} }
if (flags->imuflags->gyro_x) if (flags->imuflags.gyro_x)
{ {
thisRow[offset++] = log_struct->gam.gyro_xVel_p; thisRow[offset++] = log_struct->gam.gyro_xVel_p;
} }
if (flags->imuflags->gyro_y) if (flags->imuflags.gyro_y)
{ {
thisRow[offset++] = log_struct->gam.gyro_yVel_q; thisRow[offset++] = log_struct->gam.gyro_yVel_q;
} }
if (flags->imuflags->gyro_z) if (flags->imuflags.gyro_z)
{ {
thisRow[offset++] = log_struct->gam.gyro_zVel_r; thisRow[offset++] = log_struct->gam.gyro_zVel_r;
} }
if (flags->imuflags->mag_x) if (flags->imuflags.mag_x)
{ {
thisRow[offset++] = log_struct->gam.mag_x; thisRow[offset++] = log_struct->gam.mag_x;
} }
if (flags->imuflags->mag_y) if (flags->imuflags.mag_y)
{ {
thisRow[offset++] = log_struct->gam.mag_y; thisRow[offset++] = log_struct->gam.mag_y;
} }
if (flags->imuflags->mag_z) if (flags->imuflags.mag_z)
{ {
thisRow[offset++] = log_struct->gam.mag_z; thisRow[offset++] = log_struct->gam.mag_z;
} }
...@@ -286,39 +286,39 @@ void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, ...@@ -286,39 +286,39 @@ void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps,
// TODO make this not stupid // TODO make this not stupid
safe_sprintf_cat(&buf, "%%Time"); safe_sprintf_cat(&buf, "%%Time");
if (flags->imuflags->acc_x) if (flags->imuflags.acc_x)
{ {
safe_sprintf_cat(&buf, "\taccel_x"); safe_sprintf_cat(&buf, "\taccel_x");
} }
if (flags->imuflags->acc_y) if (flags->imuflags.acc_y)
{ {
safe_sprintf_cat(&buf, "\taccel_y"); safe_sprintf_cat(&buf, "\taccel_y");
} }
if (flags->imuflags->acc_z) if (flags->imuflags.acc_z)
{ {
safe_sprintf_cat(&buf, "\taccel_z"); safe_sprintf_cat(&buf, "\taccel_z");
} }
if (flags->imuflags->gyro_x) if (flags->imuflags.gyro_x)
{ {
safe_sprintf_cat(&buf, "\tgyro_x"); safe_sprintf_cat(&buf, "\tgyro_x");
} }
if (flags->imuflags->gyro_y) if (flags->imuflags.gyro_y)
{ {
safe_sprintf_cat(&buf, "\tgyro_y"); safe_sprintf_cat(&buf, "\tgyro_y");
} }
if (flags->imuflags->gyro_z) if (flags->imuflags.gyro_z)
{ {
safe_sprintf_cat(&buf, "\tgyro_z"); safe_sprintf_cat(&buf, "\tgyro_z");
} }
if (flags->imuflags->mag_x) if (flags->imuflags.mag_x)
{ {
safe_sprintf_cat(&buf, "\tmag_x"); safe_sprintf_cat(&buf, "\tmag_x");
} }
if (flags->imuflags->mag_y) if (flags->imuflags.mag_y)
{ {
safe_sprintf_cat(&buf, "\tmag_y_x"); safe_sprintf_cat(&buf, "\tmag_y_x");
} }
if (flags->imuflags->mag_z) if (flags->imuflags.mag_z)
{ {
safe_sprintf_cat(&buf, "\tmag_z"); safe_sprintf_cat(&buf, "\tmag_z");
} }
...@@ -344,39 +344,39 @@ void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps, ...@@ -344,39 +344,39 @@ void RTprintheader(struct CommDriver *comm, log_t* log_struct, parameter_t* ps,
buf.size = 0; buf.size = 0;
safe_sprintf_cat(&buf, "&s"); // The pre-defined ones safe_sprintf_cat(&buf, "&s"); // The pre-defined ones
if (flags->imuflags->acc_x) if (flags->imuflags.acc_x)
{ {
safe_sprintf_cat(&buf, "\tG"); safe_sprintf_cat(&buf, "\tG");
} }
if (flags->imuflags->acc_y) if (flags->imuflags.acc_y)
{ {
safe_sprintf_cat(&buf, "\tG"); safe_sprintf_cat(&buf, "\tG");
} }
if (flags->imuflags->acc_z) if (flags->imuflags.acc_z)
{ {
safe_sprintf_cat(&buf, "\tG"); safe_sprintf_cat(&buf, "\tG");
} }
if (flags->imuflags->gyro_x) if (flags->imuflags.gyro_x)
{ {
safe_sprintf_cat(&buf, "\trad/s"); safe_sprintf_cat(&buf, "\trad/s");
} }
if (flags->imuflags->gyro_y) if (flags->imuflags.gyro_y)
{ {
safe_sprintf_cat(&buf, "\trad/s"); safe_sprintf_cat(&buf, "\trad/s");
} }
if (flags->imuflags->gyro_z) if (flags->imuflags.gyro_z)
{ {
safe_sprintf_cat(&buf, "\trad/s"); safe_sprintf_cat(&buf, "\trad/s");
} }
if (flags->imuflags->mag_x) if (flags->imuflags.mag_x)
{ {
safe_sprintf_cat(&buf, "\tuT"); safe_sprintf_cat(&buf, "\tuT");
} }
if (flags->imuflags->mag_y) if (flags->imuflags.mag_y)
{ {
safe_sprintf_cat(&buf, "\tuT"); safe_sprintf_cat(&buf, "\tuT");
} }
if (flags->imuflags->mag_z) if (flags->imuflags.mag_z)
{ {
safe_sprintf_cat(&buf, "\tuT"); safe_sprintf_cat(&buf, "\tuT");
} }
...@@ -529,20 +529,13 @@ void format_log(int idx, log_t* log_struct, struct str* buf) { ...@@ -529,20 +529,13 @@ void format_log(int idx, log_t* log_struct, struct str* buf) {
Initially sets it so that all debug values are zero Initially sets it so that all debug values are zero
*/ */
void initializeFlags(SensorRTFlags_t * flags) { void initializeFlags(SensorRTFlags_t * flags) {
IMUFlags_t imu = {0,0,0, 0,0,0, 0,0,0};
flags = calloc(1, sizeof(SensorRTFlags_t)); flags->imuflags = imu;
flags -> imuflags = calloc(1, sizeof(IMUFlags_t)); OptFlowFlags_t optf = {0,0, 0,0, 0,0};
flags -> optflowflags = calloc(1, sizeof(OptFlowFlags_t)); flags->optflowflags = optf;
flags -> lidarflags = calloc(1, sizeof(lidarFlags_t)); lidarFlags_t lidar = {0};
flags -> errorflags = calloc(1, sizeof(SensorErrorFlags_t)); flags->lidarflags = lidar;
flags -> flag_count = 0; SensorErrorFlags_t se = {0,0,0, 0,0,0};
} flags->errorflags = se;
flags->flag_count = 0;
void freeFlags(SensorRTFlags_t * flags){
free(flags -> imuflags);
free(flags -> optflowflags);
free(flags -> lidarflags);
free(flags -> errorflags);
free(flags -> flag_count);
free(flags);
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
void initialize_logging(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * flags); void initialize_logging(log_t* log_struct, parameter_t* ps, SensorRTFlags_t * flags);
void initializeFlags(SensorRTFlags_t * flags);
/** /**
* Adds the given block output to the data to be logged * Adds the given block output to the data to be logged
*/ */
......
...@@ -535,10 +535,10 @@ typedef struct SensorErrorFlags ...@@ -535,10 +535,10 @@ typedef struct SensorErrorFlags
*/ */
typedef struct SensorRTFlags typedef struct SensorRTFlags
{ {
IMUFlags_t * imuflags; IMUFlags_t imuflags;
OptFlowFlags_t * optflowflags; OptFlowFlags_t optflowflags;
lidarFlags_t * lidarflags; lidarFlags_t lidarflags;
SensorErrorFlags_t * errorflags; SensorErrorFlags_t errorflags;
int flag_count; int flag_count;
} SensorRTFlags_t; } SensorRTFlags_t;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment