Hallo,

die Bumper Variablen sind soweit ich mich erinnere NICHT unbedingt einfach nur 0 oder 1 (für den linken schon, für den rechten nicht s.u. ). Da wird nur das jeweilige Portbit gesetzt damits eine möglichst kurze routine bleibt.
Für logische Abfragen und Operatoren wie ! kein problem da alles was >0 ist in C als logisch wahr betrachtet wird. Für Zuweisungen allerdings kanns komische Resultate geben da muss man dann entsprechend konvertieren.
Entweder so wie Du das schon gemacht hast oder als inline if abfrage

statusLEDs.LED2 = bumper_right ? 1 : 0;

Schau Dir den Bumper Code in der RP6 Library an da sieht man das.
( uint8_t tmp = PINC & SL3;
für Bumper right --> SL3 ist (1 << PINC6) )

MfG,
SlyD