mirror of
https://github.com/nasa/trick.git
synced 2024-12-18 20:57:55 +00:00
Addressed phantom frame log restart jobs (#1787)
* Frame Log DRG now manage their own jobs (no longer add a phantom restart job) * Actually removed frame log drg restart jobs this time * Refactored to avoid duplicate code * Refactor * Fixed DR constructors * Fixed some syntax stuff centos was throwing a tantrum about * More centos whining * Centos... * Centos... * Clean up
This commit is contained in:
parent
a352c821f4
commit
9e974e6a9b
@ -13,6 +13,7 @@ PROGRAMMERS:
|
|||||||
#include "trick/DataRecordGroup.hh"
|
#include "trick/DataRecordGroup.hh"
|
||||||
|
|
||||||
#ifdef SWIG
|
#ifdef SWIG
|
||||||
|
%feature("compactdefaultargs","0") ;
|
||||||
%feature("shadow") Trick::DRAscii::DRAscii(std::string in_name) %{
|
%feature("shadow") Trick::DRAscii::DRAscii(std::string in_name) %{
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
this = $action(*args)
|
this = $action(*args)
|
||||||
@ -68,7 +69,7 @@ namespace Trick {
|
|||||||
@code <my_drg> = trick.DRAscii("<in_name>") @endcode
|
@code <my_drg> = trick.DRAscii("<in_name>") @endcode
|
||||||
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
||||||
*/
|
*/
|
||||||
DRAscii( std::string in_name) ;
|
DRAscii( std::string in_name, Trick::DR_Type dr_type = Trick::DR_Type::DR_Type_Ascii ) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@copybrief Trick::DataRecordGroup::format_specific_header
|
@copybrief Trick::DataRecordGroup::format_specific_header
|
||||||
|
@ -93,7 +93,7 @@ namespace Trick {
|
|||||||
@code <my_drg> = trick.DRBinary("<in_name>") @endcode
|
@code <my_drg> = trick.DRBinary("<in_name>") @endcode
|
||||||
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
||||||
*/
|
*/
|
||||||
DRBinary( std::string in_name, bool register_group = true ) ;
|
DRBinary( std::string in_name, bool register_group = true, Trick::DR_Type dr_type = Trick::DR_Type::DR_Type_Binary ) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@copybrief Trick::DataRecordGroup::format_specific_header
|
@copybrief Trick::DataRecordGroup::format_specific_header
|
||||||
|
@ -24,6 +24,7 @@ PROGRAMMERS:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SWIG
|
#ifdef SWIG
|
||||||
|
%feature("compactdefaultargs","0") ;
|
||||||
%feature("shadow") Trick::DRHDF5::DRHDF5(std::string in_name) %{
|
%feature("shadow") Trick::DRHDF5::DRHDF5(std::string in_name) %{
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
this = $action(*args)
|
this = $action(*args)
|
||||||
@ -101,7 +102,7 @@ GROUP "/" {
|
|||||||
@code <my_drg> = trick.DRHDF5("<in_name>") @endcode
|
@code <my_drg> = trick.DRHDF5("<in_name>") @endcode
|
||||||
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
@copydoc Trick::DataRecordGroup::DataRecordGroup(string in_name)
|
||||||
*/
|
*/
|
||||||
DRHDF5( std::string in_name) ;
|
DRHDF5( std::string in_name, Trick::DR_Type dr_type = Trick::DR_Type::DR_Type_HDF5) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@copybrief Trick::DataRecordGroup::format_specific_header
|
@copybrief Trick::DataRecordGroup::format_specific_header
|
||||||
|
@ -42,6 +42,14 @@ namespace Trick {
|
|||||||
DR_Not_Specified = 3 /**< Unknown type */
|
DR_Not_Specified = 3 /**< Unknown type */
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
enum DR_Type {
|
||||||
|
DR_Type_None,
|
||||||
|
DR_Type_Ascii,
|
||||||
|
DR_Type_Binary,
|
||||||
|
DR_Type_HDF5,
|
||||||
|
DR_Type_FrameLogDataRecord
|
||||||
|
} ;
|
||||||
|
|
||||||
class DataRecordBuffer {
|
class DataRecordBuffer {
|
||||||
public:
|
public:
|
||||||
char *buffer; /* ** generic holding buffer for data */
|
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.
|
@brief Constructor that creates a new data recording group with the given @c in_name.
|
||||||
@param in_name - the new data recording group name
|
@param in_name - the new data recording group name
|
||||||
*/
|
*/
|
||||||
DataRecordGroup( std::string in_name = "" ) ;
|
DataRecordGroup( std::string in_name = "", Trick::DR_Type dr_type = Trick::DR_Type::DR_Type_None ) ;
|
||||||
|
|
||||||
~DataRecordGroup() ;
|
~DataRecordGroup() ;
|
||||||
|
|
||||||
@ -405,6 +413,12 @@ namespace Trick {
|
|||||||
*/
|
*/
|
||||||
virtual int add_time_variable() ;
|
virtual int add_time_variable() ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief This function adds jobs to the DRG based on the dr type.
|
||||||
|
@returns void
|
||||||
|
*/
|
||||||
|
void configure_jobs(DR_Type type) ;
|
||||||
|
|
||||||
/** Check that a variable is supported by data recording. */
|
/** Check that a variable is supported by data recording. */
|
||||||
/** Variable must be a single primitive type - no STL, array, structured, string */
|
/** Variable must be a single primitive type - no STL, array, structured, string */
|
||||||
bool isSupportedType(REF2 * ref2, std::string& message);
|
bool isSupportedType(REF2 * ref2, std::string& message);
|
||||||
|
@ -18,7 +18,7 @@ PROGRAMMERS:
|
|||||||
#include "trick/message_type.h"
|
#include "trick/message_type.h"
|
||||||
#include "trick/bitfield_proto.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_float_format = "%20.8g" ;
|
||||||
ascii_double_format = "%20.16g" ;
|
ascii_double_format = "%20.16g" ;
|
||||||
|
@ -22,7 +22,7 @@ PROGRAMMERS:
|
|||||||
Other classes inherit from DRBinary. In these cases, we don't want to register the memory as DRBinary,
|
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.
|
so register_group will be set to false.
|
||||||
*/
|
*/
|
||||||
Trick::DRBinary::DRBinary( std::string in_name , bool register_group ) : Trick::DataRecordGroup(in_name) {
|
Trick::DRBinary::DRBinary( std::string in_name, bool register_group, Trick::DR_Type dr_type ) : Trick::DataRecordGroup(in_name, dr_type) {
|
||||||
if ( register_group ) {
|
if ( register_group ) {
|
||||||
register_group_with_mm(this, "Trick::DRBinary") ;
|
register_group_with_mm(this, "Trick::DRBinary") ;
|
||||||
}
|
}
|
||||||
@ -190,4 +190,4 @@ int Trick::DRBinary::format_specific_shutdown() {
|
|||||||
close(fd) ;
|
close(fd) ;
|
||||||
}
|
}
|
||||||
return(0) ;
|
return(0) ;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ PROGRAMMERS:
|
|||||||
#include "trick/memorymanager_c_intf.h"
|
#include "trick/memorymanager_c_intf.h"
|
||||||
#include "trick/message_proto.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") ;
|
register_group_with_mm(this, "Trick::DRHDF5") ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ Trick::DataRecordBuffer::~DataRecordBuffer() {
|
|||||||
free(ref) ;
|
free(ref) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Trick::DataRecordGroup::DataRecordGroup( std::string in_name ) :
|
Trick::DataRecordGroup::DataRecordGroup( std::string in_name, Trick::DR_Type dr_type ) :
|
||||||
record(true) ,
|
record(true) ,
|
||||||
inited(false) ,
|
inited(false) ,
|
||||||
group_name(in_name) ,
|
group_name(in_name) ,
|
||||||
@ -96,18 +96,7 @@ Trick::DataRecordGroup::DataRecordGroup( std::string in_name ) :
|
|||||||
// sim object name
|
// sim object name
|
||||||
name = std::string("trick_data_record_group_") + in_name ;
|
name = std::string("trick_data_record_group_") + in_name ;
|
||||||
|
|
||||||
// add_jobs_to_queue will fill in job_id later
|
configure_jobs(dr_type) ;
|
||||||
// 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
|
|
||||||
add_job(0, 1, (char *)"initialization", NULL, cycle, (char *)"init", (char *)"TRK", 65534) ;
|
|
||||||
add_job(0, 2, (char *)"end_of_frame", NULL, 1.0, (char *)"write_data", (char *)"TRK") ;
|
|
||||||
add_job(0, 3, (char *)"checkpoint", NULL, 1.0, (char *)"checkpoint", (char *)"TRK") ;
|
|
||||||
add_job(0, 4, (char *)"post_checkpoint", NULL, 1.0, (char *)"clear_checkpoint_vars", (char *)"TRK") ;
|
|
||||||
// run the restart job in phase 60001
|
|
||||||
add_job(0, 5, (char *)"restart", NULL, 1.0, (char *)"restart", (char *)"TRK", 60001) ;
|
|
||||||
add_job(0, 6, (char *)"shutdown", NULL, 1.0, (char *)"shutdown", (char *)"TRK") ;
|
|
||||||
|
|
||||||
write_job = add_job(0, 99, (char *)job_class.c_str(), NULL, cycle, (char *)"data_record" , (char *)"TRK") ;
|
|
||||||
|
|
||||||
add_time_variable() ;
|
add_time_variable() ;
|
||||||
}
|
}
|
||||||
@ -429,6 +418,27 @@ int Trick::DataRecordGroup::init() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Trick::DataRecordGroup::configure_jobs(DR_Type type) {
|
||||||
|
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
|
||||||
|
add_job(0, 1, (char *)"initialization", NULL, cycle, (char *)"init", (char *)"TRK", 65534) ;
|
||||||
|
add_job(0, 2, (char *)"end_of_frame", NULL, 1.0, (char *)"write_data", (char *)"TRK") ;
|
||||||
|
add_job(0, 3, (char *)"checkpoint", NULL, 1.0, (char *)"checkpoint", (char *)"TRK") ;
|
||||||
|
add_job(0, 4, (char *)"post_checkpoint", NULL, 1.0, (char *)"clear_checkpoint_vars", (char *)"TRK") ;
|
||||||
|
add_job(0, 6, (char *)"shutdown", NULL, 1.0, (char *)"shutdown", (char *)"TRK") ;
|
||||||
|
|
||||||
|
write_job = add_job(0, 99, (char *)job_class.c_str(), NULL, cycle, (char *)"data_record" , (char *)"TRK") ;
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int Trick::DataRecordGroup::checkpoint() {
|
int Trick::DataRecordGroup::checkpoint() {
|
||||||
unsigned int jj ;
|
unsigned int jj ;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
-# All instances get the end_of_frame frame_log_clear job.
|
-# All instances get the end_of_frame frame_log_clear job.
|
||||||
*/
|
*/
|
||||||
Trick::FrameDataRecordGroup::FrameDataRecordGroup( int in_thread_id , std::string in_name )
|
Trick::FrameDataRecordGroup::FrameDataRecordGroup( int in_thread_id , std::string in_name )
|
||||||
: Trick::DRBinary(in_name, false) , thread_id(in_thread_id ) {
|
: Trick::DRBinary(in_name, false, Trick::DR_Type::DR_Type_FrameLogDataRecord ), thread_id(in_thread_id ) {
|
||||||
if ( thread_id > 0 ) {
|
if ( thread_id > 0 ) {
|
||||||
add_job(thread_id, 1000, (char *)"top_of_frame", NULL, 1.0, (char *)"start_timer", (char *)"TRK", 1) ;
|
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.
|
// Frame logging uses phase 65533 in FrameLog.ccp. Stop the timer just before that.
|
||||||
|
Loading…
Reference in New Issue
Block a user