///|
fn main {
  let source = "BU_: ECU\nBO_ 1 Sensors: 2 ECU\n SG_ Mode M : 0|8@1+ (1,0) [0|255] \"\" ECU\n SG_ Temp m0 : 8|8@1+ (1,-40) [-40|215] \"degC\" ECU\n SG_ Volts m1 : 8|8@1+ (0.1,0) [0|25.5] \"V\" ECU\n"
  try {
    let db = @dbc.parse_dbc(source)
    let frame = @dbc.encode_message(db.messages[0], [
        { name: "Mode", value: Physical(1) },
        { name: "Volts", value: Physical(12.5) },
      ]).frame
    println(@dbc.frame_hex(frame.payload))
    let decoded = @dbc.decode_frame(db, frame)
    for s in decoded.signals {
      println("\{s.name} = \{s.physical} \{s.unit}")
    }
    println(@dbc.render_layout(db.messages[0]))
  } catch {
    @dbc.Failure(d) => println(@dbc.render_diagnostic(d))
  }
}