<?xml version="1.0" encoding="utf-8"?>
<!--
  VasfEFI-S2 - RealDash CAN XML
  File: VasfEFI_S2_CAN_Dashboard_v1_0x600_0x606.xml

  Matches VasfEFI CAN Dashboard v1 firmware broadcast:
    CAN: Classic CAN 2.0A
    Bitrate: 500 kbit/s
    IDs: standard 11-bit
    Endianess: little endian
    Frames: 0x600 - 0x606

  Current firmware source:
    vasf_can_dashboard.cpp

  IMPORTANT:
    In VasfEFI GUI:
      CanBus/Secondary Serial IO interface:
        Enable Internal Canbus = Enable

      CAN Broadcasting Menu:
        CAN Broadcast Protocol = VasfEFI Dashboard v1

    If RealDash CAN Monitor shows 0x600-0x606 but gauges do not move,
    make sure this XML is selected as the RealDash CAN description file.
-->
<RealDashCAN version="2">
  <frames>

    <!-- 0x600 ECU_FAST_1, every 20 ms
      bytes 0-1: RPM uint16 rpm
      bytes 2-3: MAP uint16 kPa*10
      bytes 4-5: TPS uint16 percent*10
      bytes 6-7: CLT int16 degC*10
    -->
    <frame id="0x600" endianess="little">
      <value targetId="37" name="VasfEFI RPM" units="RPM" offset="0" length="2" conversion="V" rangeMin="0" rangeMax="12000"></value>
      <value targetId="31" name="VasfEFI MAP" units="kPa" offset="2" length="2" conversion="V/10" rangeMin="0" rangeMax="300"></value>
      <value targetId="42" name="VasfEFI Throttle Position" units="%" offset="4" length="2" conversion="V/10" rangeMin="0" rangeMax="100"></value>
      <value targetId="14" name="VasfEFI Coolant Temperature" units="C" offset="6" length="2" signed="true" conversion="V/10" rangeMin="-40" rangeMax="150"></value>

      <value name="VasfEFI 0x600 raw RPM" offset="0" length="2"></value>
      <value name="VasfEFI 0x600 raw MAPx10" offset="2" length="2"></value>
      <value name="VasfEFI 0x600 raw TPSx10" offset="4" length="2"></value>
      <value name="VasfEFI 0x600 raw CLTx10" offset="6" length="2" signed="true"></value>
    </frame>

    <!-- 0x601 ECU_FAST_2, every 20 ms
      bytes 0-1: AFR uint16 AFR*100
      bytes 2-3: Lambda uint16 lambda*1000
      bytes 4-5: Ignition advance int16 deg*10
      bytes 6-7: Battery uint16 V*100
    -->
    <frame id="0x601" endianess="little">
      <value targetId="0" name="VasfEFI AFR" units="AFR" offset="0" length="2" conversion="V/100" rangeMin="7" rangeMax="22"></value>
      <value name="VasfEFI Lambda" units="lambda" offset="2" length="2" conversion="V/1000" rangeMin="0.5" rangeMax="1.5"></value>
      <value targetId="38" name="VasfEFI Ignition Advance" units="deg" offset="4" length="2" signed="true" conversion="V/10" rangeMin="-20" rangeMax="60"></value>
      <value targetId="12" name="VasfEFI Battery Voltage" units="V" offset="6" length="2" conversion="V/100" rangeMin="6" rangeMax="18"></value>

      <value name="VasfEFI 0x601 raw AFRx100" offset="0" length="2"></value>
      <value name="VasfEFI 0x601 raw Lambdax1000" offset="2" length="2"></value>
      <value name="VasfEFI 0x601 raw Ignx10" offset="4" length="2" signed="true"></value>
      <value name="VasfEFI 0x601 raw Battx100" offset="6" length="2"></value>
    </frame>

    <!-- 0x602 ECU_SENSORS_1, every 100 ms
      bytes 0-1: IAT int16 degC*10
      bytes 2-3: Fuel temp int16 degC*10, 0x7FFF if unavailable
      bytes 4-5: Oil pressure uint16 bar*100, 0xFFFF if unavailable
      bytes 6-7: Fuel pressure uint16 bar*100, 0xFFFF if unavailable
    -->
    <frame id="0x602" endianess="little">
      <value targetId="27" name="VasfEFI Intake Air Temperature" units="C" offset="0" length="2" signed="true" conversion="V/10" rangeMin="-40" rangeMax="150"></value>
      <value name="VasfEFI Fuel Temperature" units="C" offset="2" length="2" signed="true" conversion="V/10" rangeMin="-40" rangeMax="150"></value>
      <value targetId="151" name="VasfEFI Oil Pressure" units="bar" offset="4" length="2" conversion="V/100" rangeMin="0" rangeMax="10"></value>
      <value targetId="105" name="VasfEFI Fuel Pressure" units="bar" offset="6" length="2" conversion="V/100" rangeMin="0" rangeMax="10"></value>

      <value name="VasfEFI 0x602 raw IATx10" offset="0" length="2" signed="true"></value>
      <value name="VasfEFI 0x602 raw FuelTempx10" offset="2" length="2" signed="true"></value>
      <value name="VasfEFI 0x602 raw OilPressx100" offset="4" length="2"></value>
      <value name="VasfEFI 0x602 raw FuelPressx100" offset="6" length="2"></value>
    </frame>

    <!-- 0x603 ECU_STATUS, every 100 ms -->
    <frame id="0x603" endianess="little">
      <value name="VasfEFI Engine State" offset="0" length="1" rangeMin="0" rangeMax="4"></value>
      <value name="VasfEFI Sync Flags" offset="1" length="1"></value>
      <value name="VasfEFI Active Feature Flags" offset="2" length="1"></value>
      <value name="VasfEFI Warning Flags" offset="3" length="1"></value>
      <value name="VasfEFI Error Bitmask" offset="4" length="2"></value>
    </frame>

    <!-- 0x604 ECU_OUTPUTS, every 100 ms -->
    <frame id="0x604" endianess="little">
      <value name="VasfEFI Injector Duty 1" units="%" offset="0" length="1" rangeMin="0" rangeMax="100"></value>
      <value name="VasfEFI Injector Duty 2" units="%" offset="1" length="1" rangeMin="0" rangeMax="100"></value>
      <value name="VasfEFI Ignition Dwell" units="ms" offset="2" length="1" conversion="V/10" rangeMin="0" rangeMax="10"></value>
      <value name="VasfEFI Boost Duty" units="%" offset="3" length="1" rangeMin="0" rangeMax="100"></value>
      <value targetId="153" name="VasfEFI Fan State Duty" units="%" offset="4" length="1" rangeMin="0" rangeMax="100"></value>
      <value name="VasfEFI Idle Duty" units="%" offset="5" length="1" rangeMin="0" rangeMax="100"></value>
      <value name="VasfEFI Fuel Pump State" offset="6" length="1" rangeMin="0" rangeMax="1"></value>
    </frame>

    <!-- 0x605 ECU_ERRORS, every 500 ms -->
    <frame id="0x605" endianess="little">
      <value name="VasfEFI Sensor Fault Bits" offset="0" length="2"></value>
      <value name="VasfEFI Trigger Fault Bits" offset="2" length="2"></value>
      <value name="VasfEFI Output Fault Bits" offset="4" length="2"></value>
      <value name="VasfEFI System Fault Bits" offset="6" length="2"></value>
    </frame>

    <!-- 0x606 ECU_INFO, every 1000 ms -->
    <frame id="0x606" endianess="little">
      <value name="VasfEFI CAN Protocol Major" offset="0" length="1"></value>
      <value name="VasfEFI CAN Protocol Minor" offset="1" length="1"></value>
      <value name="VasfEFI Firmware Major" offset="2" length="1"></value>
      <value name="VasfEFI Firmware Minor" offset="3" length="1"></value>
      <value name="VasfEFI Board ID" offset="4" length="1"></value>
      <value name="VasfEFI ECU Type" offset="5" length="1"></value>
    </frame>

  </frames>
</RealDashCAN>
