Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit60abfec

Browse files
committed
Added template ***-config.h generation.
1 parentcf4ac28 commit60abfec

File tree

2 files changed

+73
-1
lines changed

2 files changed

+73
-1
lines changed

‎src/codegen/c-main-generator.cpp‎

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ void CiMainGenerator::Generate(std::vector<MessageDescriptor_t*>& msgs, const Fs
4343

4444
// 5 step is to print fmon source file
4545
Gen_FMonSource();
46+
47+
// 6 step is to print template for drv-config.h
48+
Gen_ConfigHeader();
4649
}
4750

4851
voidCiMainGenerator::Gen_MainHeader()
@@ -254,6 +257,73 @@ void CiMainGenerator::Gen_MainSource()
254257
fwriter->Flush(fdesc->core_c.fpath);
255258
}
256259

260+
voidCiMainGenerator::Gen_ConfigHeader()
261+
{
262+
fwriter->AppendLine("#pragma once",2);
263+
264+
fwriter->AppendLine("/* include common dbccode configurations */");
265+
fwriter->AppendLine("#include\"dbccodeconf.h\"",3);
266+
fwriter->AppendLine("/* ----------------------------------------------------------------------------------- */");
267+
fwriter->AppendLine("/* To enable using messaged typedefs based on bit-fields");
268+
fwriter->AppendLine(" uncomment define below. (Note(!): bit-feild was not tested");
269+
fwriter->AppendLine(" properly, so using is up to user). */",2 );
270+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->usebits_def.c_str()),3);
271+
fwriter->AppendLine("/* ----------------------------------------------------------------------------------- */");
272+
fwriter->AppendLine("/* By default signature of pack function intakes a few simple typed params");
273+
fwriter->AppendLine(" for loading data, len, etc. To enable specific struct based signature");
274+
fwriter->AppendLine(" uncomment define below. */",2);
275+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->usesruct_def.c_str()),3);
276+
fwriter->AppendLine("/* ----------------------------------------------------------------------------------- */");
277+
fwriter->AppendLine("/* To enable phys values handling uncomment define below. It will:");
278+
fwriter->AppendLine(" - adds additional members to message struct with name extension *_phys");
279+
fwriter->AppendLine(" which have user defined type @sigfloat_t (must be defined by user in");
280+
fwriter->AppendLine(" dbccodeconf.h)");
281+
fwriter->AppendLine(" - in unpack function these signal will be loaded by the converted");
282+
fwriter->AppendLine(" value (with factor and offset)");
283+
fwriter->AppendLine(" - in pack function the CAN frame signal values will be loaded from");
284+
fwriter->AppendLine(" *_phys value with factor and offset conversion. */",2);
285+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->usesigfloat_def.c_str()),3);
286+
287+
fwriter->AppendLine("/* ----------------------------------------------------------------------------------- */");
288+
fwriter->AppendLine("/* To enable monitor functions uncomment define below.");
289+
fwriter->AppendLine("/* (Note(!): the\"canmonitorutil.h\" must be accessed in include path):");
290+
fwriter->AppendLine(" It will:");
291+
fwriter->AppendLine(" - bring to message struct special monitor member @mon1");
292+
fwriter->AppendLine(" - calling function FMon_*** function inside unpack function");
293+
fwriter->AppendLine(" which is empty by default and must be filled by user code");
294+
fwriter->AppendLine(" to check if any fault state detected. */",2);
295+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->usemon_def.c_str()),3);
296+
297+
fwriter->AppendLine(StrPrint("/* When monitor using is enabled (%s)", fdesc->usemon_def.c_str()));
298+
fwriter->AppendLine(" and define below uncommented, additional signal will be added");
299+
fwriter->AppendLine(" to message struct. ***_expt - expected rolling counter, to");
300+
fwriter->AppendLine(" perform monitoring rolling counter sequence automatically. */",2);
301+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->useroll_def.c_str()),3);
302+
303+
fwriter->AppendLine("/* ----------------------------------------------------------------------------------- */");
304+
fwriter->AppendLine(StrPrint("/* When monitor using is enabled (%s)", fdesc->usemon_def.c_str()));
305+
fwriter->AppendLine(" and define below uncommented, checksum calculation in unpack");
306+
fwriter->AppendLine(" function will be performed. in pack function checksum signal will");
307+
fwriter->AppendLine(" be calculated automatically too.",2);
308+
fwriter->AppendLine(" The signal that can be selected as checksum must have in comment substring with next format:");
309+
fwriter->AppendLine(" <Checksum:XOR8:3> where:");
310+
fwriter->AppendLine(" - Checksum : constant marker word");
311+
fwriter->AppendLine(" - XOR8 : type of method, this text will be passed to GetFrameHash function as is,");
312+
fwriter->AppendLine(" so the best use case is to pre-define enum collection which have value from this position");
313+
fwriter->AppendLine(" - 3 : optional value that will be passed to GetFrameHash as integer value",2);
314+
fwriter->AppendLine(" To this case user must define specific function",2);
315+
fwriter->AppendLine(" function: uint8_t GetFrameHash(data_ptr, len, msgid, type, option)",2);
316+
fwriter->AppendLine(" where:");
317+
fwriter->AppendLine(" - data_ptr : pointer to payload");
318+
fwriter->AppendLine(" - len : message dlc or payload len");
319+
fwriter->AppendLine(" - msgid : CAN Message ID");
320+
fwriter->AppendLine(" - type : method of algorythm");
321+
fwriter->AppendLine(" - option : optional integer param */",2);
322+
fwriter->AppendLine(StrPrint("// #define %s", fdesc->usecsm_def.c_str()),2);
323+
324+
fwriter->Flush(fdesc->core_c.dir +'/' + fdesc->drvname +"-config.h");
325+
}
326+
257327
voidCiMainGenerator::Gen_FMonHeader()
258328
{
259329
fwriter->AppendLine("#pragma once",2);
@@ -461,7 +531,8 @@ void CiMainGenerator::WriteUnpackBody(const CiExpr_t* sgs)
461531
{
462532
// Put checksum check function call here
463533
fwriter->AppendLine(StrPrint("#ifdef %s", fdesc->usecsm_def.c_str()));
464-
fwriter->AppendLine(StrPrint(" _m->mon1.csm_error = ((uint8_t)GetFrameCRC(_d, %s_DLC, %s_CANID, %s, %d)) != (_m->%s))",
534+
fwriter->AppendLine(
535+
StrPrint(" _m->mon1.csm_error = ((uint8_t)GetFrameHash(_d, %s_DLC, %s_CANID, %s, %d)) != (_m->%s))",
465536
sgs->msg.Name.c_str(), sgs->msg.Name.c_str(), sgs->msg.CsmMethod.c_str(),
466537
sgs->msg.CsmOp, sgs->msg.CsmSig->Name.c_str()));
467538
fwriter->AppendLine(StrPrint("#endif // %s", fdesc->usecsm_def.c_str()),2);

‎src/codegen/c-main-generator.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class CiMainGenerator {
1717

1818
voidGen_MainHeader();
1919
voidGen_MainSource();
20+
voidGen_ConfigHeader();
2021
voidGen_FMonHeader();
2122
voidGen_FMonSource();
2223

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp