|  | .. _can_isotp: | 
|  |  | 
|  | ISO-TP Transport Protocol | 
|  | ######################### | 
|  |  | 
|  | .. contents:: | 
|  | :local: | 
|  | :depth: 2 | 
|  |  | 
|  | Overview | 
|  | ******** | 
|  |  | 
|  | ISO-TP is a transport protocol defined in the ISO-Standard ISO15765-2 Road | 
|  | vehicles - Diagnostic communication over Controller Area Network (DoCAN). | 
|  | Part2: Transport protocol and network layer services. As its name already | 
|  | implies, it is originally designed, and still used in road vehicle diagnostic | 
|  | over Controller Area Networks. Nevertheless, it's not limited to applications in | 
|  | road vehicles or the automotive domain. | 
|  |  | 
|  | This transport protocol extends the limited payload data size for classical | 
|  | CAN (8 bytes) and CAN FD (64 bytes) to theoretically four gigabytes. | 
|  | Additionally, it adds a flow control mechanism to influence the sender's | 
|  | behavior. ISO-TP segments packets into small fragments depending on the payload | 
|  | size of the CAN frame. The header of those segments is called Protocol Control | 
|  | Information (PCI). | 
|  |  | 
|  | Packets smaller or equal to seven bytes on Classical CAN are called | 
|  | single-frames (SF). They don't need to fragment and do not have any flow-control. | 
|  |  | 
|  | Packets larger than that are segmented into a first-frame (FF) and as many | 
|  | consecutive-frames (CF) as required. The FF contains information about the length of | 
|  | the entire payload data and additionally, the first few bytes of payload data. | 
|  | The receiving peer sends back a flow-control-frame (FC) to either deny, | 
|  | postpone, or accept the following consecutive frames. | 
|  | The FC also defines the conditions of sending, namely the block-size (BS) and | 
|  | the minimum separation time between frames (STmin). The block size defines how | 
|  | many CF the sender is allowed to send, before he has to wait for another FC. | 
|  |  | 
|  | .. image:: isotp_sequence.svg | 
|  | :width: 20% | 
|  | :align: center | 
|  | :alt: ISO-TP Sequence | 
|  |  | 
|  | API Reference | 
|  | ************* | 
|  |  | 
|  | .. doxygengroup:: can_isotp |