Piccolo aiuto su logica in una funzione

Ciao Ragazzi, ho scritto questa funzionetta per un progetto di domotica:

void switchAction(boolean action, boolean switching) {

if ((action==1) && (switching==1)) { accenzione(); } // RIGHT-VERSE pin action ON
if ((action==1) && (switching==0)) { spegnimento(); } // RIGHT-VERSE pin action OFF
if ((action==0) && (switching==1)) { spegnimento(); } // REVERSE pin action OFF
if ((action==0) && (switching==0)) { accenzione(); } // REVERSE pin action ON
 
}

Come vedete è entrambi i valori sono uguali l'interruttore si accende, altrimenti si spegne.

Funziona tutto bene, ma (nelle mie reminescenze di c++ di tanti anni fa) sono sicuro che è possibile scriverla in modo più semplificato. Qualcuno può darmi una dritta?

ciao...per ridurre le righe si potrebbe fare:

if(action^switching){spegnimento()};
else{accensione()};

;

Anche

if(action == switching){accensione()};
else{spegnimento()};

funziona.
Uwe