This commit is contained in:
Pherring04 2024-10-02 16:19:27 -05:00
parent 448320602e
commit d09c4f5d98
9 changed files with 36 additions and 36 deletions

View File

@ -68,7 +68,7 @@ namespace Trick {
@code <my_drg> = trick.DRAscii("<in_name>") @endcode
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
*/
DRAscii( std::string in_name) ;
DRAscii( std::string in_name, Trick::DR_Type dr_type = DR_Type::DR_Type_Ascii ) ;
/**
@copybrief Trick::DataRecordGroup::format_specific_header

View File

@ -93,7 +93,7 @@ namespace Trick {
@code <my_drg> = trick.DRBinary("<in_name>") @endcode
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
*/
DRBinary( std::string in_name, bool register_group = true, unsigned long job_config = 0x7F ) ;
DRBinary( std::string in_name, bool register_group = true, Trick::DR_Type dr_type = DR_Type::DR_Type_Binary ) ;
/**
@copybrief Trick::DataRecordGroup::format_specific_header

View File

@ -101,7 +101,7 @@ GROUP "/" {
@code <my_drg> = trick.DRHDF5("<in_name>") @endcode
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
*/
DRHDF5( std::string in_name) ;
DRHDF5( std::string in_name, Trick::DR_Type dr_type = DR_Type::DR_Type_HDF5) ;
/**
@copybrief Trick::DataRecordGroup::format_specific_header

View File

@ -42,6 +42,14 @@ namespace Trick {
DR_Not_Specified = 3 /**< Unknown type */
} ;
enum class DR_Type : int {
DR_Type_None,
DR_Type_Ascii,
DR_Type_Binary,
DR_Type_HDF5,
DR_Type_FrameLogDataRecord
} ;
class DataRecordBuffer {
public:
char *buffer; /* ** generic holding buffer for data */
@ -149,7 +157,7 @@ namespace Trick {
@brief Constructor that creates a new data recording group with the given @c in_name.
@param in_name - the new data recording group name
*/
DataRecordGroup( std::string in_name = "", unsigned long job_config = 0x7F ) ;
DataRecordGroup( std::string in_name = "", Trick::DR_Type dr_type = DR_Type::DR_Type_None ) ;
~DataRecordGroup() ;
@ -409,7 +417,7 @@ namespace Trick {
@brief This function adds jobs to the DRG based on job_config bits. By default a DRG should be constructed with all jobs on.
@returns void
*/
virtual void configure_jobs(unsigned long job_config) ;
void configure_jobs(DR_Type type) ;
/** Check that a variable is supported by data recording. */
/** Variable must be a single primitive type - no STL, array, structured, string */

View File

@ -18,7 +18,7 @@ PROGRAMMERS:
#include "trick/message_type.h"
#include "trick/bitfield_proto.h"
Trick::DRAscii::DRAscii( std::string in_name ) : Trick::DataRecordGroup( in_name ) {
Trick::DRAscii::DRAscii( std::string in_name, Trick::DR_Type dr_type ) : Trick::DataRecordGroup( in_name, dr_type ) {
ascii_float_format = "%20.8g" ;
ascii_double_format = "%20.16g" ;

View File

@ -22,7 +22,7 @@ PROGRAMMERS:
Other classes inherit from DRBinary. In these cases, we don't want to register the memory as DRBinary,
so register_group will be set to false.
*/
Trick::DRBinary::DRBinary( std::string in_name, bool register_group, unsigned long job_config ) : Trick::DataRecordGroup(in_name, job_config) {
Trick::DRBinary::DRBinary( std::string in_name, bool register_group, Trick::DR_Type dr_type ) : Trick::DataRecordGroup(in_name, dr_type) {
if ( register_group ) {
register_group_with_mm(this, "Trick::DRBinary") ;
}

View File

@ -14,7 +14,7 @@ PROGRAMMERS:
#include "trick/memorymanager_c_intf.h"
#include "trick/message_proto.h"
Trick::DRHDF5::DRHDF5( std::string in_name ) : Trick::DataRecordGroup(in_name) {
Trick::DRHDF5::DRHDF5( std::string in_name, Trick::DR_Type dr_type ) : Trick::DataRecordGroup(in_name, dr_type) {
register_group_with_mm(this, "Trick::DRHDF5") ;
}

View File

@ -54,7 +54,7 @@ Trick::DataRecordBuffer::~DataRecordBuffer() {
free(ref) ;
}
Trick::DataRecordGroup::DataRecordGroup( std::string in_name, unsigned long job_config ) :
Trick::DataRecordGroup::DataRecordGroup( std::string in_name, Trick::DR_Type dr_type ) :
record(true) ,
inited(false) ,
group_name(in_name) ,
@ -96,15 +96,7 @@ Trick::DataRecordGroup::DataRecordGroup( std::string in_name, unsigned long job_
// sim object name
name = std::string("trick_data_record_group_") + in_name ;
/*
By default we want to configure our jobs.
Some derived classes (looking at you FrameDataRecordGroup) want to setup their jobs differently,
so we provide the option to disable this step
For context - FrameDataRecordGroup does not want to create restart jobs,
but rather the FrameLog object which owns those DRG's will manually retsart them from the FrameLog's restart job.
*/
configure_jobs(job_config);
configure_jobs(dr_type) ;
add_time_variable() ;
}
@ -426,28 +418,28 @@ int Trick::DataRecordGroup::init() {
}
void Trick::DataRecordGroup::configure_jobs(unsigned long job_config)
{
void Trick::DataRecordGroup::configure_jobs(DR_Type type) {
//std::cout << "!!!!!!!!!! DataRecordGroup::configure_jobs: " << (int)type << std::endl;
switch(type) {
default:
// run the restart job in phase 60001
add_job(0, 5, (char *)"restart", NULL, 1.0, (char *)"restart", (char *)"TRK", 60001) ;
case DR_Type::DR_Type_FrameLogDataRecord:
// add_jobs_to_queue will fill in job_id later
// make the init job run after all other initialization jobs but before the post init checkpoint
// job so users can allocate memory in initialization jobs and checkpointing data rec groups will work
if(job_config & 1)
add_job(0, 1, (char *)"initialization", NULL, cycle, (char *)"init", (char *)"TRK", 65534) ;
if(job_config & 2)
add_job(0, 2, (char *)"end_of_frame", NULL, 1.0, (char *)"write_data", (char *)"TRK") ;
if(job_config & 4)
add_job(0, 3, (char *)"checkpoint", NULL, 1.0, (char *)"checkpoint", (char *)"TRK") ;
if(job_config & 8)
add_job(0, 4, (char *)"post_checkpoint", NULL, 1.0, (char *)"clear_checkpoint_vars", (char *)"TRK") ;
if(job_config & 16)
// run the restart job in phase 60001
add_job(0, 5, (char *)"restart", NULL, 1.0, (char *)"restart", (char *)"TRK", 60001) ;
if(job_config & 32)
add_job(0, 6, (char *)"shutdown", NULL, 1.0, (char *)"shutdown", (char *)"TRK") ;
if(job_config & 64)
write_job = add_job(0, 99, (char *)job_class.c_str(), NULL, cycle, (char *)"data_record" , (char *)"TRK") ;
break ;
}
}
int Trick::DataRecordGroup::checkpoint() {

View File

@ -9,7 +9,7 @@
-# All instances get the end_of_frame frame_log_clear job.
*/
Trick::FrameDataRecordGroup::FrameDataRecordGroup( int in_thread_id , std::string in_name )
: Trick::DRBinary(in_name, false, 0x6F) , thread_id(in_thread_id ) {
: Trick::DRBinary(in_name, false, DR_Type::DR_Type_FrameLogDataRecord ), thread_id(in_thread_id ) {
if ( thread_id > 0 ) {
add_job(thread_id, 1000, (char *)"top_of_frame", NULL, 1.0, (char *)"start_timer", (char *)"TRK", 1) ;
// Frame logging uses phase 65533 in FrameLog.ccp. Stop the timer just before that.