Jo fast nur dass [out0_ptr+1] halt doch mal auf das letzte Element zeigen kann und mit +1 wäre das dann undefinierter Speicher, also lieber vorher prüfen z.B. so:
Code:
while (out0_ptr < in0_ptr)
{
    uint8_t i = ++out0_ptr;
    if (uart0_buffer[i++]== brake_pads_msg[0])
    {
        if (i >= UART_BUF_SIZE)
			i = 0;
        if (uart0_buffer[i++]== brake_pads_msg[1])
        {
			if (i >= UART_BUF_SIZE)
				i = 0;
            if (uart0_buffer[i++]== brake_pads_msg[2])
            {
				if (i >= UART_BUF_SIZE)
					i = 0;
                if (uart0_buffer[i++] == brake_pads_msg[3])
                {
                    printf("BrakePads gefunden\n");
                }
            }
        }
    }
}

Blöde Frage aber kann das überhaupt funktionieren mit dem Ringpuffer bei
(out0_ptr < in0_ptr), wenn out0_ptr z.B. knapp UART_BUF_SIZE ist und in0_ptr z.B. 0 oder 1 ist? Nach der ISR oben is das zumindest möglich.

Grüsse, Stefan