@@ -38,7 +38,6 @@ CiMainGenerator::CiMainGenerator()
38
38
39
39
void CiMainGenerator::Generate (DbcMessageList_t& dlist, const AppSettings_t& fsd)
40
40
{
41
- p_dlist = &dlist;
42
41
// Load income messages to sig printer
43
42
sigprt->LoadMessages (dlist.msgs );
44
43
@@ -61,17 +60,26 @@ void CiMainGenerator::Generate(DbcMessageList_t& dlist, const AppSettings_t& fsd
61
60
// 4 step is to pring fmon head file
62
61
Gen_FMonHeader ();
63
62
64
- // 5 step is to print fmon source file
65
- Gen_FMonSource ();
63
+ if (!fsd.gen .no_fmon )
64
+ {
65
+ // 5 step is to print fmon source file
66
+ Gen_FMonSource ();
67
+ }
66
68
67
- // 6 step is to print template for drv-config.h
68
- Gen_ConfigHeader ();
69
+ if (!fsd.gen .no_config )
70
+ {
71
+ // 6 step is to print template for drv-config.h
72
+ Gen_ConfigHeader ();
69
73
70
- // 7 step is to print canmonitorutil.h template code
71
- Gen_CanMonUtil ();
74
+ // 8 step is to print dbccodeconf.h template
75
+ Gen_DbcCodeConf ();
76
+ }
72
77
73
- // 8 step is to print dbccodeconf.h template
74
- Gen_DbcCodeConf ();
78
+ if (!fsd.gen .no_inc )
79
+ {
80
+ // 7 step is to print canmonitorutil.h template code
81
+ Gen_CanMonUtil ();
82
+ }
75
83
}
76
84
77
85
void CiMainGenerator::Gen_MainHeader ()
@@ -91,8 +99,8 @@ void CiMainGenerator::Gen_MainHeader()
91
99
fwriter->Append ();
92
100
93
101
fwriter->Append (" // DBC file version" );
94
- fwriter->Append (" #define %s (%uU)" , fdesc->gen .verhigh_def .c_str (), p_dlist-> ver . hi );
95
- fwriter->Append (" #define %s (%uU)" , fdesc->gen .verlow_def .c_str (), p_dlist-> ver . low );
102
+ fwriter->Append (" #define %s (%uU)" , fdesc->gen .verhigh_def .c_str (), fdesc-> gen . hiver );
103
+ fwriter->Append (" #define %s (%uU)" , fdesc->gen .verlow_def .c_str (), fdesc-> gen . lowver );
96
104
fwriter->Append ();
97
105
98
106
fwriter->Append (" // include current dbc-driver compilation config" );
@@ -290,7 +298,7 @@ void CiMainGenerator::Gen_MainSource()
290
298
291
299
fwriter->Append (" // DBC file version" );
292
300
fwriter->Append (" #if (%s != (%uU)) || (%s != (%uU))" ,
293
- fdesc->gen .verhigh_def .c_str (), p_dlist-> ver . hi , fdesc->gen .verlow_def .c_str (), p_dlist-> ver . low );
301
+ fdesc->gen .verhigh_def .c_str (), fdesc-> gen . hiver , fdesc->gen .verlow_def .c_str (), fdesc-> gen . lowver );
294
302
295
303
fwriter->Append (" #error The %s dbc source files have different versions" , fdesc->gen .DRVNAME .c_str ());
296
304
fwriter->Append (" #endif" );
@@ -376,76 +384,15 @@ void CiMainGenerator::Gen_ConfigHeader()
376
384
377
385
void CiMainGenerator::Gen_FMonHeader ()
378
386
{
379
- if (fdesc->gen .start_info .size () > 0 )
380
- {
381
- // replace all '\n' on "\n //" for c code comment text
382
- fwriter->Append (" // " + std::regex_replace (fdesc->gen .start_info , std::regex (" \n " ), " \n // " ));
383
- }
384
-
385
- fwriter->Append (" #pragma once" );
386
- fwriter->Append ();
387
-
388
- fwriter->Append (" #ifdef __cplusplus\n extern \" C\" {\n #endif" );
389
- fwriter->Append ();
390
-
391
- fwriter->Append (" // DBC file version" );
392
- fwriter->Append (" #define %s_FMON (%uU)" , fdesc->gen .verhigh_def .c_str (), p_dlist->ver .hi );
393
- fwriter->Append (" #define %s_FMON (%uU)" , fdesc->gen .verlow_def .c_str (), p_dlist->ver .low );
394
- fwriter->Append ();
395
-
396
- fwriter->Append (" #include <%s-config.h>" , fdesc->gen .drvname .c_str ());
397
- fwriter->Append ();
398
-
399
- // put diagmonitor ifdef selection for including @drv-fmon header
400
- // with FMon_* signatures to call from unpack function
401
- fwriter->Append (" #ifdef %s" , fdesc->gen .usemon_def .c_str ());
402
- fwriter->Append ();
403
- fwriter->Append (" #include <canmonitorutil.h>" );
404
- fwriter->Append (" /*\n \
405
- This file contains the prototypes of all the functions that will be called\n \
406
- from each Unpack_*name* function to detect DBC related errors\n \
407
- It is the user responsibility to defined these functions in the\n \
408
- separated .c file. If it won't be done the linkage error will happen\n */" );
409
- fwriter->Append ();
410
-
411
387
MonGenerator mongen;
412
-
413
- mongen.FillHeader ((*fwriter), sigprt->sigs_expr , fdesc->gen );
414
-
415
- fwriter->Append (" #endif // %s" , fdesc->gen .usemon_def .c_str ());
416
- fwriter->Append ();
417
-
418
- fwriter->Append (" #ifdef __cplusplus\n }\n #endif" );
419
-
388
+ mongen.FillHeader ((*fwriter), sigprt->sigs_expr , *fdesc);
420
389
fwriter->Flush (fdesc->file .fmon_h .fpath );
421
390
}
422
391
423
392
void CiMainGenerator::Gen_FMonSource ()
424
393
{
425
- if (fdesc->gen .start_info .size () > 0 )
426
- {
427
- // replace all '\n' on "\n //" for c code comment text
428
- fwriter->Append (" // " + std::regex_replace (fdesc->gen .start_info , std::regex (" \n " ), " \n // " ));
429
- }
430
-
431
- fwriter->Append (" #include <%s>" , fdesc->file .fmon_h .fname .c_str ());
432
- fwriter->Append ();
433
- // put diagmonitor ifdef selection for including @drv-fmon header
434
- // with FMon_* signatures to call from unpack function
435
- fwriter->Append (" #ifdef %s" , fdesc->gen .usemon_def .c_str ());
436
- fwriter->Append ();
437
-
438
- fwriter->Append (" /*\n \
439
- Put the monitor function content here, keep in mind -\n \
440
- next generation will completely clear all manually added code (!)\n \
441
- */\n\n " );
442
-
443
394
MonGenerator mongen;
444
-
445
- mongen.FillSource ((*fwriter), sigprt->sigs_expr , fdesc->gen );
446
-
447
- fwriter->Append (" #endif // %s" , fdesc->gen .usemon_def .c_str ());
448
-
395
+ mongen.FillSource ((*fwriter), sigprt->sigs_expr , *fdesc);
449
396
fwriter->Flush (fdesc->file .fmon_c .fpath );
450
397
}
451
398
0 commit comments