# 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)