68 lines
1.8 KiB
Python
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)
|