simple/
simple.rs

1use can_dbc::{
2    AttributeDefault, AttributeDefinition, AttributeValue, AttributeValueForDatabase, AttributeValueType, ByteOrder, Comment, Dbc, Message, MessageId, MultiplexIndicator, Signal, Symbol, Transmitter, ValueType, Version
3};
4use dbc_gen::dbc_to_string;
5
6pub fn main() {
7    let dbc = Dbc {
8        version: Version(String::from("")),
9        new_symbols: vec![
10            Symbol(String::from("NS_DESC_")),
11            Symbol(String::from("CM_")),
12            Symbol(String::from("BA_DEF_")),
13            Symbol(String::from("BA_")),
14            Symbol(String::from("VAL_")),
15            Symbol(String::from("CAT_DEF_")),
16            Symbol(String::from("CAT_")),
17            Symbol(String::from("FILTER")),
18            Symbol(String::from("BA_DEF_DEF_")),
19            Symbol(String::from("EV_DATA_")),
20            Symbol(String::from("ENVVAR_DATA_")),
21            Symbol(String::from("SGTYPE_")),
22            Symbol(String::from("SGTYPE_VAL_")),
23            Symbol(String::from("BA_DEF_SGTYPE_")),
24            Symbol(String::from("BA_SGTYPE_")),
25            Symbol(String::from("SIG_TYPE_REF_")),
26            Symbol(String::from("VAL_TABLE_")),
27            Symbol(String::from("SIG_GROUP_")),
28            Symbol(String::from("SIG_VALTYPE_")),
29            Symbol(String::from("SIGTYPE_VALTYPE_")),
30            Symbol(String::from("BO_TX_BU_")),
31            Symbol(String::from("BA_DEF_REL_")),
32            Symbol(String::from("BA_REL_")),
33            Symbol(String::from("BA_DEF_DEF_REL_")),
34            Symbol(String::from("BU_SG_REL_")),
35            Symbol(String::from("BU_EV_REL_")),
36            Symbol(String::from("BU_BO_REL_")),
37            Symbol(String::from("SG_MUL_VAL_")),
38        ],
39        bit_timing: None,
40        nodes: Vec::new(),
41        value_tables: Vec::new(),
42        messages: vec![
43            Message {
44                id: MessageId::Extended(0),
45                name: String::from("zero"),
46                size: 0,
47                transmitter: Transmitter::VectorXXX,
48                signals: vec![Signal {
49                    name: String::from("zero"),
50                    multiplexer_indicator: MultiplexIndicator::Plain,
51                    start_bit: 0,
52                    size: 0,
53                    byte_order: ByteOrder::BigEndian,
54                    value_type: ValueType::Unsigned,
55                    factor: 0.0,
56                    offset: 0.0,
57                    min: 0.0,
58                    max: 0.0,
59                    unit: String::from("unit"),
60                    receivers: vec![String::from("Vector__XXX")],
61                }],
62            },
63            Message {
64                id: MessageId::Extended(1),
65                name: String::from("one"),
66                size: 1,
67                transmitter: Transmitter::VectorXXX,
68                signals: vec![Signal {
69                    name: String::from("one"),
70                    multiplexer_indicator: MultiplexIndicator::Plain,
71                    start_bit: 1,
72                    size: 1,
73                    byte_order: ByteOrder::BigEndian,
74                    value_type: ValueType::Unsigned,
75                    factor: 1.0,
76                    offset: 1.0,
77                    min: 1.0,
78                    max: 1.0,
79                    unit: String::from("unit"),
80                    receivers: vec![String::from("Vector__XXX")],
81                }],
82            },
83        ],
84        message_transmitters: Vec::new(),
85        environment_variables: Vec::new(),
86        environment_variable_data: Vec::new(),
87        signal_types: Vec::new(),
88        comments: vec![
89            Comment::Message {
90                id: MessageId::Extended(0),
91                comment: String::from("This is a test comment on message zero."),
92            },
93            Comment::Signal {
94                message_id: MessageId::Extended(0),
95                name: String::from("zero"),
96                comment: String::from("This is a test comment on signal zero."),
97            },
98            Comment::Message {
99                id: MessageId::Extended(1),
100                comment: String::from("This is a test comment on message one."),
101            },
102            Comment::Signal {
103                message_id: MessageId::Extended(1),
104                name: String::from("one"),
105                comment: String::from("This is a test comment on signal one."),
106            },
107        ],
108        attribute_definitions: vec![
109            AttributeDefinition::Plain(String::from("BusType"), AttributeValueType::String),
110            AttributeDefinition::Plain(String::from("DatabaseCompiler"), AttributeValueType::String),
111            AttributeDefinition::Plain(String::from("DatabaseVersion"), AttributeValueType::String),
112            AttributeDefinition::Plain(String::from("ProtocolType"), AttributeValueType::String),
113        ],
114        relation_attribute_definitions: Vec::new(),
115        attribute_defaults: vec![
116            AttributeDefault { name: String::from("BusType"), value: AttributeValue::String(String::from("")) },
117            AttributeDefault { name: String::from("DatabaseCompiler"), value: AttributeValue::String(String::from("")) },
118            AttributeDefault { name: String::from("DatabaseVersion"), value: AttributeValue::String(String::from("0.1.0")) },
119            AttributeDefault { name: String::from("ProtocolType"), value: AttributeValue::String(String::from("")) },
120        ],
121        relation_attribute_defaults: Vec::new(),
122        relation_attribute_values: Vec::new(),
123        attribute_values_database: vec![
124            AttributeValueForDatabase { name: String::from("BusType"), value: AttributeValue::String(String::from("CAN")) },
125            AttributeValueForDatabase { name: String::from("DatabaseCompiler"), value: AttributeValue::String(String::from("Kent Software (kent.software)")) },
126            AttributeValueForDatabase { name: String::from("DatabaseVersion"), value: AttributeValue::String(String::from("1.0.0")) },
127            AttributeValueForDatabase { name: String::from("ProtocolType"), value: AttributeValue::String(String::from("J1939")) },
128        ],
129        attribute_values_node: Vec::new(),
130        attribute_values_message: Vec::new(),
131        attribute_values_signal: Vec::new(),
132        attribute_values_env: Vec::new(),
133        value_descriptions: Vec::new(),
134        signal_type_refs: Vec::new(),
135        signal_groups: Vec::new(),
136        signal_extended_value_type_list: Vec::new(),
137        extended_multiplex: Vec::new(),
138    };
139
140    println!("{}", dbc_to_string(&dbc));
141}