// scan the base path for fltNNNN directories. Return the biggest // flight number int max_flight_num() { int max = -1; DIR *d = opendir( log_path.c_str() ); if ( d == NULL ) { printf( "Cannot open %s for log writing\n", log_path.c_str() ); return max; } struct dirent *file; while ( ( file = readdir(d) ) != NULL ) { if ( strncmp( file->d_name, "flt", 3 ) == 0 ) { int num; sscanf( file->d_name, "flt%d", &num ); if ( num > max ) { max = num; } printf("file = %s num = %d max = %d\n", file->d_name, num, max); } } if ( closedir( d ) != 0 ) { printf("Error: cannot close log directory\n"); return -1; } return max; }
bool logging_init() { // find the biggest flight number logged so far int max = max_flight_num(); printf("Max log dir is flt%05d\n", max); // make the new logging directory char new_dir[256]; snprintf( new_dir, 256, "%s/flt%05d", log_path.c_str(), max+1 ); printf("Creating log dir: %s\n", new_dir); int result = mkdir( new_dir, 01777 ); if ( result != 0 ) { printf("Error: creating %s\n", new_dir); } // open all the logging files SGPath file; file = new_dir; file.append( "imu.dat.gz" ); if ( (fimu = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannont open %s\n", file.c_str()); return false; } file = new_dir; file.append( "gps.dat.gz" ); if ( (fgps = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannont open %s\n", file.c_str()); return false; } file = new_dir; file.append( "nav.dat.gz" ); if ( (fnav = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannont open %s\n", file.c_str()); return false; } file = new_dir; file.append( "servo.dat.gz" ); if ( (fservo = gzopen( file.c_str(),"w+b" )) == NULL ) { printf("Cannont open %s\n", file.c_str()); return false; } file = new_dir; file.append( "health.dat.gz" ); if ( (fhealth = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannont open %s\n", file.c_str()); return false; } return true; }
bool logging_init() { // find the biggest flight number logged so far int max = max_flight_num(); printf("Max log dir is flt%05d\n", max); // make the new logging directory char new_dir[256]; snprintf( new_dir, 256, "%s/flt%05d", log_path.c_str(), max+1 ); printf("Creating log dir: %s\n", new_dir); int result = mkdir( new_dir, 01777 ); if ( result != 0 ) { printf("Error: creating %s\n", new_dir); } // open all the logging files SGPath file; file = new_dir; file.append( "imu.dat.gz" ); if ( (fimu = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "gps.dat.gz" ); if ( (fgps = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "air.dat.gz" ); if ( (fair = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "filter.dat.gz" ); if ( (ffilter = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "actuator.dat.gz" ); if ( (fact = gzopen( file.c_str(),"w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "pilot.dat.gz" ); if ( (fpilot = gzopen( file.c_str(),"w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "ap.dat.gz" ); if ( (fap = gzopen( file.c_str(), "w+b" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } file = new_dir; file.append( "events.dat" ); if ( (fevent = fopen( file.c_str(), "w" )) == NULL ) { printf("Cannot open %s\n", file.c_str()); return false; } return true; }