dbc-codegen icon indicating copy to clipboard operation
dbc-codegen copied to clipboard

None unique field enums are not renamed

Open wallem89 opened this issue 1 year ago • 2 comments

I have a DBC file which has non unique field names in an enumerated signal. Example:

/// Defined values for Command
#[derive(Clone, Copy, PartialEq)]
#[cfg_attr(feature = "debug", derive(Debug))]
pub enum CommandCommand{
    NotAvailable,
    Error,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Reserved,
    Release,
    Close,
    Open,
    Init,
    _Other(u8),
}

I know this is a bit strange but all none used enums are set to reserved. I could delete them so that _Other is handling those but renaming would be done as for the enums starting with a non-alphabetic character .

From DBC:

VAL_ 2566903515 Command 15 "Not Available" 14 "Error" 13 "Reserved" 12 "Reserved" 11 "Reserved" 10 "Reserved" 9 "Reserved" 8 "Reserved" 7 "Reserved" 6 "Reserved" 5 "Reserved" 4 "Reserved" 3 "Release" 2 "Close" 1 "Open" 0 "Init" ;

For now my workaround is to rename the Reserved enums in the DBC-file:

VAL_ 2566903515 Command 15 "Not Available" 14 "Error" 13 "Reserved_13" 12 "Reserved_12" 11 "Reserved_11" 10 "Reserved_10" 9 "Reserved_9" 8 "Reserved_8" 7 "Reserved_7" 6 "Reserved_6" 5 "Reserved_5" 4 "Reserved_4" 3 "Release" 2 "Close" 1 "Open" 0 "Init" ;

Which will give me unique enums:

/// Defined values for Command
#[derive(Clone, Copy, PartialEq)]
#[cfg_attr(feature = "debug", derive(Debug))]
pub enum CommandCommand{
    NotAvailable,
    Error,
    Reserved13,
    Reserved12,
    Reserved11,
    Reserved10,
    Reserved9,
    Reserved8,
    Reserved7,
    Reserved6,
    Reserved5,
    Reserved4,
    Release,
    Close,
    Open,
    Init,
    _Other(u8),
}

I could try to implement this myself and send in a PR but depends if you thinks this makes sense.

wallem89 avatar Mar 24 '23 13:03 wallem89

I have a pr for that in the can-dbc crate that would fix it when parsing: https://github.com/marcelbuesing/can-dbc/pull/15

JoNil avatar May 08 '24 13:05 JoNil

Just saw @marcelbuesing wrote that this would be better done here. If you want to port the PR over here, I'd be happy to accept it :)

killercup avatar May 13 '24 12:05 killercup