@@ -63,6 +63,13 @@ def format_float(f):
63
63
return s .upper ()
64
64
65
65
66
+ def check_define (define ):
67
+ # check if define is compatible with dbc. else repace by STRING
68
+ if define .type not in ["ENUM" , "STRING" , "INT" , "HEX" , "FLOAT" ]:
69
+ logger .warn ("dbc export of attribute type {} not supported; replaced by STRING" .format (define .type ))
70
+ define .definition = "STRING"
71
+
72
+
66
73
def dump (mydb , f , ** options ):
67
74
# create copy because export changes database
68
75
db = deepcopy (mydb )
@@ -289,7 +296,9 @@ def dump(mydb, f, **options):
289
296
f .write ("\n " .encode (dbcExportEncoding ))
290
297
291
298
defaults = {}
299
+
292
300
for (dataType , define ) in sorted (list (db .frameDefines .items ())):
301
+ check_define (define )
293
302
f .write (
294
303
('BA_DEF_ BO_ "' + dataType + '" ' ).encode (dbcExportEncoding ) + define .definition .encode (dbcExportEncoding , 'replace' ) + ';\n ' .encode (dbcExportEncoding ))
295
304
if dataType not in defaults and define .defaultValue is not None :
@@ -299,6 +308,7 @@ def dump(mydb, f, **options):
299
308
defaults [dataType ] = define .defaultValue
300
309
301
310
for (dataType , define ) in sorted (list (db .signalDefines .items ())):
311
+ check_define (define )
302
312
f .write (
303
313
('BA_DEF_ SG_ "' + dataType + '" ' ).encode (dbcExportEncoding ) +
304
314
define .definition .encode (dbcExportEncoding , 'replace' ) + ';\n ' .encode (dbcExportEncoding ))
@@ -308,6 +318,7 @@ def dump(mydb, f, **options):
308
318
else :
309
319
defaults [dataType ] = define .defaultValue
310
320
for (dataType , define ) in sorted (list (db .buDefines .items ())):
321
+ check_define (define )
311
322
f .write (
312
323
('BA_DEF_ BU_ "' + dataType + '" ' ).encode (dbcExportEncoding ) +
313
324
define .definition .encode (dbcExportEncoding , 'replace' ) + ';\n ' .encode (dbcExportEncoding ))
@@ -317,6 +328,7 @@ def dump(mydb, f, **options):
317
328
else :
318
329
defaults [dataType ] = define .defaultValue
319
330
for (dataType , define ) in sorted (list (db .globalDefines .items ())):
331
+ check_define (define )
320
332
f .write (('BA_DEF_ "' + dataType + '" ' ).encode (dbcExportEncoding ) + define .definition .encode (dbcExportEncoding , 'replace' ) + ';\n ' .encode (dbcExportEncoding ))
321
333
if dataType not in defaults and define .defaultValue is not None :
322
334
if define .type == "ENUM" or define .type == "STRING" :
0 commit comments