Brief About Automotive Fault Codes

All cars and light trucks built for sale in the United States after 1996 are required to be OBD-II compliant. The European Union adopted (directive 98/69/EC) a similar law in 2001 for gasoline powered vehicles, and in 2003 for cars with diesel engines.
OBD II mandates a standard scan tool (SAE J 1978) with a single standard plug for all vehicles manufactured in U.S.A.
The Universal interface (SAE J 2201) requirements for Scan Tool (SAE J 1978), Data Communication Network Interface (SAE J 1850), (SAE J 1850), Interface connector (SAE J 1962) requirements, Test Modes (SAE J 1979), and Diagnostic Trouble codes (SAE J 2012), and Enhanced test modes (SAE J 2190), are described in detail in the standard. General characteristics, electrical and mechanical characteristics are also described in the HS-3000 standard. EPA regulation is that SAE J 1978 must have the capability to perform bi-directional diagnostic control. Vehicle manufacturers will use manufacturer specific messages to perform these functions, and later use SAE J 2205, (Expanded Scan Tool protocol) to enable these functions with SAE J 1978 automotive Scan tool.

SAE J2012 (Diagnostic Trouble Codes1) defines a set of diagnostic trouble codes (DTCs) where industry uniformity has been achieved.
The medium of communication is the serial data link described in SAE J 1850.
OBD II mandates that all trouble codes are logged when they are set and are retrieved by auto diagnostic scanner when commanded. And the diagnostic data must be made available when requested by the auto diagnostic scan tool. So the auto diagnostic scan Tool is to collect diagnostic messages from the vehicle. Which consists:
Analog inputs and outputs
Digital inputs and outputs
System status information
Calculated values

Important Note:
Only one Code must be stored in OBD II for each fault detected.
DTCs consist of an alpha character followed by four characters.
Pxxxx is reserved for powertrain DTCs
Bxxxx is reserved for body DTCs
Cxxxx is reserved for chassis DTCs
Uxxxx is reserved for network DTCs (UART the body electronics like door and roof control, air conditioning, and lightning, as well as for the entertainment control).

The second character designates whether the DTCs and a generic SAE DTC or a manufacturer specific DTC.
Powertrain codes
P0xxx – Generic
P1xxx – Manufacturer-specific
P2xxx – Generic
P30xx-P33xx – Manufacturer-specific
P34xx-P39xx Generic
Body codes
B0xxx – Generic
B1xxx – Manufacturer-specific
B2xxx – Manufacturer-specific
B3xxx – Generic
Chassis codes
C0xxx – Generic
C1xxx – Manufacturer-specific
C2xxx – Manufacturer-specific
C3xxx – Generic
Network Communication codes
U0xxx Generic
U1xxx – Manufacturer-specific
U2xxx – Manufacturer-specific
U3xxx Generic

The remaining characters designate the system associated with the fault. The characters are hex and can range from 0 F.
The third digit defines the specific system or sub-system within the car where the problem is located:
1.Fuel and Air Metering
2.Fuel and Air Metering (injector circuit malfunction only)
3.Ignition System or Misfire
4.Auxiliary Emission Control System
5.Vehicle Speed Control and Idle Control System
6.Computer Output Circuits
9.Control Modules, input and output signals