Files
CANveyor/vehicle/komatsu.py
T

68 lines
1.8 KiB
Python

# File: vehicle/komatsu.py
# Copyright (C) 2026 Erick Ahmed
# SPDX-License-Identifier: AGPL-3.0-or-later
from vehicle.base import (
SignalDef, FrameDef, normalize_id, decode_dataframe as _decode_dataframe, plot_signal
)
DECODER_RULES = {
normalize_id("0x011F"): FrameDef(
can_id="0x011F",
description="Engine ECM Main Broadcast",
color="#e41a1c",
signals=[
SignalDef(
name="Engine",
bit_start=0,
bit_length=16,
factor=0.125,
offset=0.0,
is_signed=False,
byte_order="big",
unit="RPM",
),
SignalDef(
name="Pressure / Load",
bit_start=16,
bit_length=16,
factor=0.05,
offset=0,
is_signed=False,
byte_order="little",
unit="%",
),
],
),
normalize_id("0x0CFF3300"): FrameDef(
can_id="0x0CFF3300",
description="Engine temperature block",
color="#0080fe",
signals=[
SignalDef(
name="Engine coolant temp",
bit_start=8,
bit_length=8,
factor=1,
offset=0.0,
is_signed=False,
byte_order="big",
unit="℃",
),
SignalDef(
name="Engine oil temp",
bit_start=40,
bit_length=8,
factor=1,
offset=0.0,
is_signed=False,
byte_order="big",
unit="℃",
),
],
),
}
def decode_dataframe(df, can_id):
return _decode_dataframe(df, can_id, DECODER_RULES)