dbc-toolkit

    Validated CAN DBC parser and signal codec toolkit for MoonBit

    can
    dbc
    automotive
    parser
    codec
    Download zip
    Version
    0.1.1
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    35

    No dependencies

    #MoonBit DBC Toolkit

    Typed CAN DBC parser, validator, signal codec, analysis and transformation toolkit for MoonBit.

    let database = @dbc.parse_dbc(dbc_text).unwrap()
    let frame = @dbc.encode_frame(
    database,
    100,
    [@dbc.SignalAssignment::new("Speed", 12.34)],
    ).unwrap()
    let decoded = @dbc.decode_frame(database, frame).unwrap()
    println(@dbc.render_decoded_text(decoded.message(), decoded.signals()))

    The package processes caller-provided DBC text and in-memory CAN/CAN FD frame bytes. It does not connect to CAN hardware, capture bus traffic, or implement UDS/J1939 diagnostics.

    ByteOrder

    pub(all) enum ByteOrder {
    Motorola
    Intel
    } derive(Eq,
    Debug
    )

    CanFrame

    pub struct CanFrame {
    id_value : Int
    data_value : Bytes
    } derive(Eq,
    Debug
    )

    CanFrame::data

    fn CanFrame::data(self : CanFrame) -> Bytes

    CanFrame::id

    fn CanFrame::id(self : CanFrame) -> Int

    CanFrame::new

    fn CanFrame::new(id : Int, data : Bytes) -> Result[CanFrame, DbcError]

    ChangeKind

    pub(all) enum ChangeKind {
    Added
    Removed
    Modified
    } derive(Eq,
    Debug
    )

    DbcAudit

    pub struct DbcAudit {
    database_value : DbcDatabase
    validation_value : DbcValidationResult
    statistics_value : DbcStatistics
    canonical_text_value : String
    round_trip_consistent_value : Bool
    } derive(Eq,
    Debug
    )

    DbcAudit::accepted

    fn DbcAudit::accepted(self : DbcAudit) -> Bool

    DbcAudit::canonical_text

    fn DbcAudit::canonical_text(self : DbcAudit) -> String

    DbcAudit::database

    fn DbcAudit::database(self : DbcAudit) -> DbcDatabase

    DbcAudit::round_trip_consistent

    fn DbcAudit::round_trip_consistent(self : DbcAudit) -> Bool

    DbcAudit::statistics

    fn DbcAudit::statistics(self : DbcAudit) -> DbcStatistics

    DbcAudit::validation

    fn DbcAudit::validation(self : DbcAudit) -> DbcValidationResult

    DbcBatchInput

    pub struct DbcBatchInput {
    label_value : String
    text_value : String
    } derive(Eq,
    Debug
    )

    DbcBatchInput::label

    fn DbcBatchInput::label(self : DbcBatchInput) -> String

    DbcBatchInput::new

    fn DbcBatchInput::new(label : String, text : String) -> Result[DbcBatchInput, DbcError]

    DbcBatchInput::text

    fn DbcBatchInput::text(self : DbcBatchInput) -> String

    DbcBatchItem

    pub struct DbcBatchItem {
    label_value : String
    database_value : DbcDatabase?
    error_value : DbcError?
    } derive(Eq,
    Debug
    )

    DbcBatchItem::accepted

    fn DbcBatchItem::accepted(self : DbcBatchItem) -> Bool

    DbcBatchItem::database

    fn DbcBatchItem::database(self : DbcBatchItem) -> DbcDatabase?

    DbcBatchItem::error

    fn DbcBatchItem::error(self : DbcBatchItem) -> DbcError?

    DbcBatchItem::label

    fn DbcBatchItem::label(self : DbcBatchItem) -> String

    DbcBatchResult

    pub struct DbcBatchResult {
    items_value : Array[DbcBatchItem]
    accepted_value : Int
    rejected_value : Int
    total_input_bytes_value : Int
    total_messages_value : Int
    total_signals_value : Int
    } derive(Eq,
    Debug
    )

    DbcBatchResult::accepted

    fn DbcBatchResult::accepted(self : DbcBatchResult) -> Int

    DbcBatchResult::find

    fn DbcBatchResult::find(self : DbcBatchResult, label : String) -> DbcBatchItem?

    DbcBatchResult::items

    DbcBatchResult::rejected

    fn DbcBatchResult::rejected(self : DbcBatchResult) -> Int

    DbcBatchResult::total_input_bytes

    fn DbcBatchResult::total_input_bytes(self : DbcBatchResult) -> Int

    DbcBatchResult::total_messages

    fn DbcBatchResult::total_messages(self : DbcBatchResult) -> Int

    DbcBatchResult::total_signals

    fn DbcBatchResult::total_signals(self : DbcBatchResult) -> Int

    DbcComparison

    pub struct DbcComparison {
    message_changes_value : Array[MessageChange]
    signal_changes_value : Array[SignalChange]
    breaking_change_count_value : Int
    } derive(Eq,
    Debug
    )

    DbcComparison::breaking_change_count

    fn DbcComparison::breaking_change_count(self : DbcComparison) -> Int

    DbcComparison::is_compatible

    fn DbcComparison::is_compatible(self : DbcComparison) -> Bool

    DbcComparison::message_changes

    fn DbcComparison::message_changes(self : DbcComparison) -> Array[MessageChange]

    DbcComparison::signal_changes

    fn DbcComparison::signal_changes(self : DbcComparison) -> Array[SignalChange]

    DbcDatabase

    pub struct DbcDatabase {
    version_value : String
    nodes_value : Array[DbcNode]
    messages_value : Array[DbcMessage]
    ignored_statement_count_value : Int
    } derive(Eq,
    Debug
    )

    DbcDatabase::find_message_by_id

    fn DbcDatabase::find_message_by_id(self : DbcDatabase, id : Int) -> DbcMessage?

    DbcDatabase::find_message_by_name

    fn DbcDatabase::find_message_by_name(self : DbcDatabase, name : String) -> DbcMessage?

    DbcDatabase::ignored_statement_count

    fn DbcDatabase::ignored_statement_count(self : DbcDatabase) -> Int

    DbcDatabase::message_count

    fn DbcDatabase::message_count(self : DbcDatabase) -> Int

    DbcDatabase::messages

    fn DbcDatabase::messages(self : DbcDatabase) -> Array[DbcMessage]

    DbcDatabase::new

    fn DbcDatabase::new(version : String, nodes : Array[DbcNode], messages : Array[DbcMessage], ignored_statement_count? : Int) -> DbcDatabase

    DbcDatabase::nodes

    fn DbcDatabase::nodes(self : DbcDatabase) -> Array[DbcNode]

    DbcDatabase::version

    fn DbcDatabase::version(self : DbcDatabase) -> String

    DbcError

    pub struct DbcError {
    code_value : String
    message_value : String
    location_value : SourceLocation
    context_value : String
    } derive(Eq,
    Debug
    )

    DbcError::code

    fn DbcError::code(self : DbcError) -> String

    DbcError::context

    fn DbcError::context(self : DbcError) -> String

    DbcError::format

    fn DbcError::format(self : DbcError) -> String

    DbcError::location

    fn DbcError::location(self : DbcError) -> SourceLocation

    DbcError::message

    fn DbcError::message(self : DbcError) -> String

    DbcError::new

    fn DbcError::new(code : DbcErrorCode, message : String, line : Int, column : Int, context? : String) -> DbcError

    DbcErrorCode

    pub(all) enum DbcErrorCode {
    EmptyInput
    InputLimitExceeded
    LineLimitExceeded
    InvalidSyntax
    InvalidInteger
    InvalidNumber
    InvalidIdentifier
    InvalidMessage
    InvalidSignal
    InvalidValueTable
    DuplicateMessageId
    DuplicateMessageName
    DuplicateSignalName
    UnknownMessage
    UnknownSignal
    InvalidBitRange
    InvalidDataLength
    ValueOutOfRange
    OverlappingSignal
    UnsupportedConstruct
    } derive(Eq,
    Debug
    )

    DbcErrorCode::code

    fn DbcErrorCode::code(self : DbcErrorCode) -> String

    DbcMessage

    pub struct DbcMessage {
    id_value : Int
    name_value : String
    size_value : Int
    transmitter_value : String
    signals_value : Array[DbcSignal]
    comment_value : String
    source_line_value : Int
    } derive(Eq,
    Debug
    )

    DbcMessage::comment

    fn DbcMessage::comment(self : DbcMessage) -> String

    DbcMessage::find_signal

    fn DbcMessage::find_signal(self : DbcMessage, name : String) -> DbcSignal?

    DbcMessage::id

    fn DbcMessage::id(self : DbcMessage) -> Int

    DbcMessage::name

    fn DbcMessage::name(self : DbcMessage) -> String

    DbcMessage::new

    fn DbcMessage::new(id : Int, name : String, size : Int, transmitter : String, signals : Array[DbcSignal], source_line? : Int) -> DbcMessage

    DbcMessage::signals

    fn DbcMessage::signals(self : DbcMessage) -> Array[DbcSignal]

    DbcMessage::size

    fn DbcMessage::size(self : DbcMessage) -> Int

    DbcMessage::source_line

    fn DbcMessage::source_line(self : DbcMessage) -> Int

    DbcMessage::transmitter

    fn DbcMessage::transmitter(self : DbcMessage) -> String

    DbcMessage::with_comment

    fn DbcMessage::with_comment(self : DbcMessage, comment : String) -> DbcMessage

    DbcMessage::with_signals

    fn DbcMessage::with_signals(self : DbcMessage, signals : Array[DbcSignal]) -> DbcMessage

    DbcNode

    pub struct DbcNode {
    name_value : String
    } derive(Eq,
    Debug
    )

    DbcNode::name

    fn DbcNode::name(self : DbcNode) -> String

    DbcNode::new

    fn DbcNode::new(name : String) -> DbcNode

    DbcParseLimits

    pub(all) struct DbcParseLimits {
    max_input_bytes : Int
    max_lines : Int
    max_messages : Int
    max_signals_per_message : Int
    max_nodes : Int
    }

    DbcParseLimits::standard

    fn DbcParseLimits::standard() -> DbcParseLimits

    DbcSignal

    pub struct DbcSignal {
    name_value : String
    start_bit_value : Int
    bit_length_value : Int
    byte_order_value : ByteOrder
    value_type_value : SignalValueType
    factor_value : Double
    offset_value : Double
    minimum_value : Double
    maximum_value : Double
    unit_value : String
    receivers_value : Array[String]
    values_value : Array[DbcValueDescription]
    comment_value : String
    source_line_value : Int
    } derive(Eq,
    Debug
    )

    DbcSignal::bit_length

    fn DbcSignal::bit_length(self : DbcSignal) -> Int

    DbcSignal::byte_order

    fn DbcSignal::byte_order(self : DbcSignal) -> ByteOrder

    DbcSignal::comment

    fn DbcSignal::comment(self : DbcSignal) -> String

    DbcSignal::factor

    fn DbcSignal::factor(self : DbcSignal) -> Double

    DbcSignal::maximum

    fn DbcSignal::maximum(self : DbcSignal) -> Double

    DbcSignal::minimum

    fn DbcSignal::minimum(self : DbcSignal) -> Double

    DbcSignal::name

    fn DbcSignal::name(self : DbcSignal) -> String

    DbcSignal::new

    fn DbcSignal::new(name : String, start_bit : Int, bit_length : Int, byte_order : ByteOrder, value_type : SignalValueType, factor : Double, offset : Double, minimum : Double, maximum : Double, unit : String, receivers : Array[String], source_line? : Int) -> DbcSignal

    DbcSignal::offset

    fn DbcSignal::offset(self : DbcSignal) -> Double

    DbcSignal::physical_from_raw

    fn DbcSignal::physical_from_raw(self : DbcSignal, raw : Double) -> Double

    DbcSignal::raw_from_physical

    fn DbcSignal::raw_from_physical(self : DbcSignal, physical : Double) -> Double

    DbcSignal::receivers

    fn DbcSignal::receivers(self : DbcSignal) -> Array[String]

    DbcSignal::source_line

    fn DbcSignal::source_line(self : DbcSignal) -> Int

    DbcSignal::start_bit

    fn DbcSignal::start_bit(self : DbcSignal) -> Int

    DbcSignal::unit

    fn DbcSignal::unit(self : DbcSignal) -> String

    DbcSignal::value_label

    fn DbcSignal::value_label(self : DbcSignal, raw : Int) -> String?

    DbcSignal::value_type

    fn DbcSignal::value_type(self : DbcSignal) -> SignalValueType

    DbcSignal::values

    DbcSignal::with_comment

    fn DbcSignal::with_comment(self : DbcSignal, comment : String) -> DbcSignal

    DbcSignal::with_values

    fn DbcSignal::with_values(self : DbcSignal, values : Array[DbcValueDescription]) -> DbcSignal

    DbcStatistics

    pub struct DbcStatistics {
    node_count_value : Int
    message_count_value : Int
    signal_count_value : Int
    classic_message_count_value : Int
    fd_message_count_value : Int
    intel_signal_count_value : Int
    motorola_signal_count_value : Int
    signed_signal_count_value : Int
    described_value_count_value : Int
    payload_bytes_value : Int
    node_traffic_value : Array[NodeTraffic]
    } derive(Eq,
    Debug
    )

    DbcStatistics::classic_message_count

    fn DbcStatistics::classic_message_count(self : DbcStatistics) -> Int

    DbcStatistics::described_value_count

    fn DbcStatistics::described_value_count(self : DbcStatistics) -> Int

    DbcStatistics::fd_message_count

    fn DbcStatistics::fd_message_count(self : DbcStatistics) -> Int

    DbcStatistics::find_node

    fn DbcStatistics::find_node(self : DbcStatistics, node : String) -> NodeTraffic?

    DbcStatistics::intel_signal_count

    fn DbcStatistics::intel_signal_count(self : DbcStatistics) -> Int

    DbcStatistics::message_count

    fn DbcStatistics::message_count(self : DbcStatistics) -> Int

    DbcStatistics::motorola_signal_count

    fn DbcStatistics::motorola_signal_count(self : DbcStatistics) -> Int

    DbcStatistics::node_count

    fn DbcStatistics::node_count(self : DbcStatistics) -> Int

    DbcStatistics::node_traffic

    fn DbcStatistics::node_traffic(self : DbcStatistics) -> Array[NodeTraffic]

    DbcStatistics::payload_bytes

    fn DbcStatistics::payload_bytes(self : DbcStatistics) -> Int

    DbcStatistics::signal_count

    fn DbcStatistics::signal_count(self : DbcStatistics) -> Int

    DbcStatistics::signed_signal_count

    fn DbcStatistics::signed_signal_count(self : DbcStatistics) -> Int

    DbcValidationIssue

    pub struct DbcValidationIssue {
    severity_value : ValidationSeverity
    code_value : String
    message_value : String
    message_id_value : Int?
    signal_name_value : String?
    source_line_value : Int
    } derive(Eq,
    Debug
    )

    DbcValidationIssue::code

    fn DbcValidationIssue::code(self : DbcValidationIssue) -> String

    DbcValidationIssue::message

    fn DbcValidationIssue::message(self : DbcValidationIssue) -> String

    DbcValidationIssue::message_id

    fn DbcValidationIssue::message_id(self : DbcValidationIssue) -> Int?

    DbcValidationIssue::severity

    DbcValidationIssue::signal_name

    fn DbcValidationIssue::signal_name(self : DbcValidationIssue) -> String?

    DbcValidationIssue::source_line

    fn DbcValidationIssue::source_line(self : DbcValidationIssue) -> Int

    DbcValidationPolicy

    pub(all) struct DbcValidationPolicy {
    allow_extended_ids : Bool
    allow_can_fd : Bool
    require_known_nodes : Bool
    detect_signal_overlap : Bool
    warn_empty_units : Bool
    }

    DbcValidationPolicy::can_fd

    DbcValidationPolicy::strict_classic_can

    fn DbcValidationPolicy::strict_classic_can() -> DbcValidationPolicy

    DbcValidationResult

    pub struct DbcValidationResult {
    issues_value : Array[DbcValidationIssue]
    error_count_value : Int
    warning_count_value : Int
    } derive(Eq,
    Debug
    )

    DbcValidationResult::error_count

    fn DbcValidationResult::error_count(self : DbcValidationResult) -> Int

    DbcValidationResult::is_valid

    fn DbcValidationResult::is_valid(self : DbcValidationResult) -> Bool

    DbcValidationResult::issues

    DbcValidationResult::warning_count

    fn DbcValidationResult::warning_count(self : DbcValidationResult) -> Int

    DbcValueDescription

    pub struct DbcValueDescription {
    raw_value : Int
    label_value : String
    } derive(Eq,
    Debug
    )

    DbcValueDescription::label

    fn DbcValueDescription::label(self : DbcValueDescription) -> String

    DbcValueDescription::new

    fn DbcValueDescription::new(raw : Int, label : String) -> DbcValueDescription

    DbcValueDescription::raw

    DecodedFrame

    pub struct DecodedFrame {
    frame_value : CanFrame
    message_value : DbcMessage
    signals_value : Array[DecodedSignal]
    } derive(Eq,
    Debug
    )

    DecodedFrame::find_signal

    fn DecodedFrame::find_signal(self : DecodedFrame, name : String) -> DecodedSignal?

    DecodedFrame::frame

    fn DecodedFrame::frame(self : DecodedFrame) -> CanFrame

    DecodedFrame::message

    fn DecodedFrame::message(self : DecodedFrame) -> DbcMessage

    DecodedFrame::signals

    DecodedSignal

    pub struct DecodedSignal {
    name_value : String
    raw_bits_value : UInt64
    signed_raw_value : Int64
    physical_value : Double
    label_value : String?
    } derive(Eq,
    Debug
    )

    DecodedSignal::label

    fn DecodedSignal::label(self : DecodedSignal) -> String?

    DecodedSignal::name

    fn DecodedSignal::name(self : DecodedSignal) -> String

    DecodedSignal::physical

    fn DecodedSignal::physical(self : DecodedSignal) -> Double

    DecodedSignal::raw_bits

    fn DecodedSignal::raw_bits(self : DecodedSignal) -> UInt64

    DecodedSignal::signed_raw

    fn DecodedSignal::signed_raw(self : DecodedSignal) -> Int64

    FrameBatchItem

    pub struct FrameBatchItem {
    index_value : Int
    frame_value : CanFrame
    decoded_value : DecodedFrame?
    error_value : DbcError?
    } derive(Eq,
    Debug
    )

    FrameBatchItem::accepted

    fn FrameBatchItem::accepted(self : FrameBatchItem) -> Bool

    FrameBatchItem::decoded

    FrameBatchItem::error

    fn FrameBatchItem::error(self : FrameBatchItem) -> DbcError?

    FrameBatchItem::frame

    FrameBatchItem::index

    fn FrameBatchItem::index(self : FrameBatchItem) -> Int

    FrameBatchResult

    pub struct FrameBatchResult {
    items_value : Array[FrameBatchItem]
    accepted_value : Int
    rejected_value : Int
    total_data_bytes_value : Int
    message_counts_value : Array[MessageFrameCount]
    } derive(Eq,
    Debug
    )

    FrameBatchResult::acceptance_ratio

    fn FrameBatchResult::acceptance_ratio(self : FrameBatchResult) -> Double

    FrameBatchResult::accepted

    fn FrameBatchResult::accepted(self : FrameBatchResult) -> Int

    FrameBatchResult::find_item

    fn FrameBatchResult::find_item(self : FrameBatchResult, index : Int) -> FrameBatchItem?

    FrameBatchResult::find_message_count

    fn FrameBatchResult::find_message_count(self : FrameBatchResult, message_id : Int) -> MessageFrameCount?

    FrameBatchResult::items

    FrameBatchResult::message_counts

    FrameBatchResult::rejected

    fn FrameBatchResult::rejected(self : FrameBatchResult) -> Int

    FrameBatchResult::total_data_bytes

    fn FrameBatchResult::total_data_bytes(self : FrameBatchResult) -> Int

    MessageChange

    pub struct MessageChange {
    kind_value : ChangeKind
    message_id_value : Int
    message_name_value : String
    detail_value : String
    breaking_value : Bool
    } derive(Eq,
    Debug
    )

    MessageChange::detail

    fn MessageChange::detail(self : MessageChange) -> String

    MessageChange::is_breaking

    fn MessageChange::is_breaking(self : MessageChange) -> Bool

    MessageChange::kind

    MessageChange::message_id

    fn MessageChange::message_id(self : MessageChange) -> Int

    MessageChange::message_name

    fn MessageChange::message_name(self : MessageChange) -> String

    MessageFilter

    pub(all) struct MessageFilter {
    transmitter : String?
    receiver : String?
    name_contains : String?
    minimum_size : Int?
    maximum_size : Int?
    }

    MessageFilter::all

    MessageFrameCount

    pub struct MessageFrameCount {
    message_id_value : Int
    message_name_value : String
    count_value : Int
    } derive(Eq,
    Debug
    )

    MessageFrameCount::count

    fn MessageFrameCount::count(self : MessageFrameCount) -> Int

    MessageFrameCount::message_id

    fn MessageFrameCount::message_id(self : MessageFrameCount) -> Int

    MessageFrameCount::message_name

    fn MessageFrameCount::message_name(self : MessageFrameCount) -> String

    NodeTraffic

    pub struct NodeTraffic {
    node_value : String
    transmitted_messages_value : Int
    received_messages_value : Int
    received_signals_value : Int
    } derive(Eq,
    Debug
    )

    NodeTraffic::node

    fn NodeTraffic::node(self : NodeTraffic) -> String

    NodeTraffic::received_messages

    fn NodeTraffic::received_messages(self : NodeTraffic) -> Int

    NodeTraffic::received_signals

    fn NodeTraffic::received_signals(self : NodeTraffic) -> Int

    NodeTraffic::transmitted_messages

    fn NodeTraffic::transmitted_messages(self : NodeTraffic) -> Int

    SignalAssignment

    pub struct SignalAssignment {
    name_value : String
    physical_value : Double
    } derive(Eq,
    Debug
    )

    SignalAssignment::name

    fn SignalAssignment::name(self : SignalAssignment) -> String

    SignalAssignment::new

    fn SignalAssignment::new(name : String, physical : Double) -> SignalAssignment

    SignalAssignment::physical

    fn SignalAssignment::physical(self : SignalAssignment) -> Double

    SignalChange

    pub struct SignalChange {
    kind_value : ChangeKind
    message_id_value : Int
    signal_name_value : String
    detail_value : String
    breaking_value : Bool
    } derive(Eq,
    Debug
    )

    SignalChange::detail

    fn SignalChange::detail(self : SignalChange) -> String

    SignalChange::is_breaking

    fn SignalChange::is_breaking(self : SignalChange) -> Bool

    SignalChange::kind

    SignalChange::message_id

    fn SignalChange::message_id(self : SignalChange) -> Int

    SignalChange::signal_name

    fn SignalChange::signal_name(self : SignalChange) -> String

    SignalReference

    pub struct SignalReference {
    message_id_value : Int
    message_name_value : String
    signal_value : DbcSignal
    } derive(Eq,
    Debug
    )

    SignalReference::message_id

    fn SignalReference::message_id(self : SignalReference) -> Int

    SignalReference::message_name

    fn SignalReference::message_name(self : SignalReference) -> String

    SignalReference::signal

    SignalValueType

    pub(all) enum SignalValueType {
    Unsigned
    Signed
    } derive(Eq,
    Debug
    )

    SourceLocation

    pub(all) struct SourceLocation {
    line_value : Int
    column_value : Int
    } derive(Eq,
    Debug
    )

    SourceLocation::column

    fn SourceLocation::column(self : SourceLocation) -> Int

    SourceLocation::line

    fn SourceLocation::line(self : SourceLocation) -> Int

    SourceLocation::new

    fn SourceLocation::new(line : Int, column : Int) -> SourceLocation

    ValidationSeverity

    pub(all) enum ValidationSeverity {
    Error
    Warning
    } derive(Eq,
    Debug
    )

    analyze_dbc

    fn analyze_dbc(database : DbcDatabase) -> DbcStatistics

    audit_dbc

    fn audit_dbc(text : String, limits? : DbcParseLimits, policy? : DbcValidationPolicy) -> Result[DbcAudit, DbcError]

    compare_dbc

    fn compare_dbc(before : DbcDatabase, after : DbcDatabase) -> DbcComparison

    database_content_equal

    fn database_content_equal(left : DbcDatabase, right : DbcDatabase) -> Bool

    decode_frame

    fn decode_frame(database : DbcDatabase, frame : CanFrame) -> Result[DecodedFrame, DbcError]

    decode_frame_batch

    fn decode_frame_batch(database : DbcDatabase, frames : Array[CanFrame], max_frames? : Int, max_total_data_bytes? : Int) -> Result[FrameBatchResult, DbcError]

    decode_frame_hex

    fn decode_frame_hex(database : DbcDatabase, message_id : Int, hex_data : String) -> Result[DecodedFrame, DbcError]

    decode_message

    fn decode_message(message : DbcMessage, data : Bytes) -> Result[Array[DecodedSignal], DbcError]

    decode_signal

    fn decode_signal(message : DbcMessage, signal : DbcSignal, data : Bytes) -> Result[DecodedSignal, DbcError]

    encode_frame

    fn encode_frame(database : DbcDatabase, message_id : Int, assignments : Array[SignalAssignment]) -> Result[CanFrame, DbcError]

    encode_message

    fn encode_message(message : DbcMessage, assignments : Array[SignalAssignment]) -> Result[Bytes, DbcError]

    encode_physical_signal

    fn encode_physical_signal(message : DbcMessage, signal : DbcSignal, physical : Double, data : Array[Byte], tolerance? : Double) -> Result[Unit, DbcError]

    encode_signed_raw_signal

    fn encode_signed_raw_signal(message : DbcMessage, signal : DbcSignal, raw : Int64, data : Array[Byte]) -> Result[Unit, DbcError]

    encode_unsigned_raw_signal

    fn encode_unsigned_raw_signal(message : DbcMessage, signal : DbcSignal, raw : UInt64, data : Array[Byte]) -> Result[Unit, DbcError]

    find_signals_by_name

    fn find_signals_by_name(database : DbcDatabase, query : String) -> Array[SignalReference]

    merge_databases

    fn merge_databases(left : DbcDatabase, right : DbcDatabase) -> Result[DbcDatabase, DbcError]

    messages_received_by

    fn messages_received_by(database : DbcDatabase, node : String) -> Array[DbcMessage]

    messages_transmitted_by

    fn messages_transmitted_by(database : DbcDatabase, node : String) -> Array[DbcMessage]

    parse_dbc

    fn parse_dbc(text : String, limits? : DbcParseLimits) -> Result[DbcDatabase, DbcError]

    parse_dbc_batch

    fn parse_dbc_batch(inputs : Array[DbcBatchInput], max_items? : Int, max_total_bytes? : Int, limits? : DbcParseLimits) -> Result[DbcBatchResult, DbcError]

    parse_frame_hex

    fn parse_frame_hex(id : Int, text : String) -> Result[CanFrame, DbcError]

    rename_message

    fn rename_message(database : DbcDatabase, id : Int, after : String) -> Result[DbcDatabase, DbcError]

    rename_node

    fn rename_node(database : DbcDatabase, before : String, after : String) -> Result[DbcDatabase, DbcError]

    rename_signal

    fn rename_signal(database : DbcDatabase, message_id : Int, before : String, after : String) -> Result[DbcDatabase, DbcError]

    render_audit_json

    fn render_audit_json(audit : DbcAudit) -> String

    render_audit_text

    fn render_audit_text(audit : DbcAudit) -> String

    render_comparison_json

    fn render_comparison_json(comparison : DbcComparison) -> String

    render_comparison_text

    fn render_comparison_text(comparison : DbcComparison) -> String

    render_decoded_json

    fn render_decoded_json(message : DbcMessage, decoded : Array[DecodedSignal]) -> String

    render_decoded_text

    fn render_decoded_text(message : DbcMessage, decoded : Array[DecodedSignal]) -> String

    render_frame_batch_json

    fn render_frame_batch_json(result : FrameBatchResult) -> String

    render_frame_batch_text

    fn render_frame_batch_text(result : FrameBatchResult) -> String

    render_frame_hex

    fn render_frame_hex(frame : CanFrame) -> String

    render_statistics_json

    fn render_statistics_json(statistics : DbcStatistics) -> String

    render_statistics_text

    fn render_statistics_text(statistics : DbcStatistics) -> String

    render_validation_json

    fn render_validation_json(result : DbcValidationResult) -> String

    render_validation_text

    fn render_validation_text(result : DbcValidationResult) -> String

    select_database_messages

    fn select_database_messages(database : DbcDatabase, ids : Array[Int]) -> Result[DbcDatabase, DbcError]

    select_messages

    fn select_messages(database : DbcDatabase, filter : MessageFilter) -> Array[DbcMessage]

    serialize_dbc

    fn serialize_dbc(database : DbcDatabase) -> Result[String, DbcError]

    validate_dbc

    fn validate_dbc(database : DbcDatabase, policy? : DbcValidationPolicy) -> DbcValidationResult