This CLSID determines if adjustments are being made to the fuel flow to the cylinders, and why.
Fuel system status
Read, shareable or exclusive
Type: | VT_UI4 (array of 4 bytes stored as an unsigned long) |
The following table shows possible enumerations.
Fuel system status |
Value |
Description |
VIOFUELSYSTEM_NOT_ PRESENT |
0 | Fuel system x not present. |
VIOFUELSYSTEM_OPENLOOP_ NOT_READY_YET |
1 | The fuel system is not being regulated because the engine sensors are not yet ready. |
VIOFUELSYSTEM_OPENLOOP_ DRIVING_CONDITIONS |
2 | The fuel system is not being regulated by the engine sensors because of driving conditions — for example, heavy throttle is causing enrichment. |
VIOFUELSYSTEM_OPENLOOP_ SYSTEM_FAULT |
3 | The fuel system is not being regulated because of a system fault. |
VIOFUELSYSTEM_ CLOSEDLOOP_USING_O2S |
4 | The fuel system is being regulated by means of input from a oxygen sensor. |
VIOFUELSYSTEM_ CLOSEDLOOP_FAULT_FROM_ O2S |
5 | The fuel system is being regulated by means of input from a oxygen sensor, but there is a fault in at least one oxygen sensor. |
Byte |
Status |
Byte 0 | Fuel system 1 status |
Byte 1 | Fuel system 2 status |
Byte 2 | Fuel system 3 status |
Byte 3 | Fuel system 4 status |
None
Type: | VT_UI4 (array of 4 bytes stored as an unsigned long) |
Measurement: | VIOMEASUREMENT_ENUM |
Units: | VIOUNITS_ENUM |
API device objects expect the following data types and sizes when sending data to and from the mini-drivers:
None
Type: | ULONG * |
Size: | 4 bytes |
Description: | Array of 4 VIOFUELSYSTEM_* values. Each is represented in 1 byte for each available fuel system. |
HRESULT hr;
IVIO_Device *pFuelSystemStatus;
VARIANT vDeviceData;
WORD wStatus_1_2;
BYTE bFuelSystemStatus;
ULONG ulStatusBytes;
//Create an instance of the fuel system status device and get its
//IVIO_Device interface.
hr = CoCreateInstance(CLSID_VIO_FUEL_SYSTEM_STATUS, NULL,
CLSCTX_INPROC_SERVER, IID_VIODEVICE,
&pFuelSystemStatus);
//Ask the device for the status of the fuel system.
pFuelSystemStatus->GetData(&vDeviceData, 3000);
//Use the HIWORD, LOWORD, HIBYTE, LOBYTE macros because different //processors may have different byte orderings. Get the status of fuel //systems 1 and 2 from the VARIANT.
wStatus_1_2 = LOWORD(vDeviceData.ulVal);
//Get the status of fuel system 1.
bFuel SystemStatus = LOBYTE(wStatus_1_2);
//Release the reference to the interface.
pFuelSystemStatus->Release();