main.cpp : Added call to program_initialize().

This commit is contained in:
kevin 2024-09-20 18:19:28 -04:00
parent 68e3aa7a6e
commit a639d3d60c

View File

@ -39,6 +39,7 @@ typedef struct app_str
object_t* flow_cfg; // flow program cfg object_t* flow_cfg; // flow program cfg
object_t* io_cfg; // IO lib cfg. object_t* io_cfg; // IO lib cfg.
const char* cmd_line_pgm_label; // const char* cmd_line_pgm_label; //
const char* cmd_line_cfg_fname;
unsigned appSelId; unsigned appSelId;
@ -112,6 +113,13 @@ rc_t _load_init_pgm( app_t& app, const char* pgm_label, bool& exec_complete_fl_r
goto errLabel; goto errLabel;
} }
if((rc = program_initialize(app.ioFlowH)) != kOkRC )
{
rc = cwLogError(rc,"Program initialize failed on '%s'.",cwStringNullGuard(pgm_label));
goto errLabel;
}
// if the program is in NRT mode then run it
if( is_program_nrt(app.ioFlowH) ) if( is_program_nrt(app.ioFlowH) )
{ {
exec_complete_fl_ref = true; exec_complete_fl_ref = true;
@ -294,12 +302,14 @@ rc_t _parse_main_cfg( app_t& app, int argc, char* argv[] )
goto errLabel; goto errLabel;
} }
// Get the selector-id associated with the first command line arg. (e.g. exec, hw_report, ...)
if((app.appSelId = labelToId( appSelA, argv[1], kInvalidId )) == kInvalidId ) if((app.appSelId = labelToId( appSelA, argv[1], kInvalidId )) == kInvalidId )
{ {
rc = cwLogError(kInvalidArgRC,"The command line action '%s' is not valid.",argv[1]); rc = cwLogError(kInvalidArgRC,"The command line action '%s' is not valid.",argv[1]);
_print_command_line_help(); _print_command_line_help();
} }
// if 'exec' or 'hw_report' was selected
if( app.appSelId == kExecSelId || app.appSelId == kHwReportSelId ) if( app.appSelId == kExecSelId || app.appSelId == kHwReportSelId )
{ {
if( argc <= 3 ) if( argc <= 3 )
@ -308,10 +318,18 @@ rc_t _parse_main_cfg( app_t& app, int argc, char* argv[] )
_print_command_line_help(); _print_command_line_help();
} }
// get the fourth cmd line arg (pgm label of the program to run from the cfg file in arg[2])
app.cmd_line_pgm_label = argv[3]; app.cmd_line_pgm_label = argv[3];
app.cmd_line_cfg_fname = argv[2];
if( app.cmd_line_cfg_fname == nullptr )
{
rc = cwLogError(kInvalidArgRC,"No 'caw' program cfg file was provided.");
goto errLabel;
}
// parse the cfg. file // parse the cfg. file
if((rc = objectFromFile(argv[2],app.flow_cfg)) != kOkRC ) if((rc = objectFromFile(app.cmd_line_cfg_fname,app.flow_cfg)) != kOkRC )
{ {
rc = cwLogError(rc,"Parsing failed on the cfg. file '%s'.",argv[1]); rc = cwLogError(rc,"Parsing failed on the cfg. file '%s'.",argv[1]);
goto errLabel; goto errLabel;
@ -436,7 +454,15 @@ int main( int argc, char* argv[] )
} }
if( app.cmd_line_pgm_label != nullptr ) // if we are here then then program 'exec' was requested
if( app.cmd_line_pgm_label == nullptr )
{
rc = cwLogError(kInvalidArgRC,"The label of the program to execute from %s was not given.",cwStringNullGuard(app.cmd_line_cfg_fname));
goto errLabel;
}
// load the requested program - and execute it if it is in non-real-time mode
if((rc = _load_init_pgm(app, app.cmd_line_pgm_label, exec_complete_fl )) != kOkRC ) if((rc = _load_init_pgm(app, app.cmd_line_pgm_label, exec_complete_fl )) != kOkRC )
goto errLabel; goto errLabel;