Titty-Twister
Du musst schon selbst wissen, wie du es haben willst.
Klar, man kann alles, was gewünscht ist, recht einfach in Code umsetzen.
Ob dies in der Funktion setRelayState() oder in deren Aufruf erfolgen soll, ist perspektivisch zu betrachten - beides ist möglich, nur nicht zugleich. Letzteres täte sich gegenseitig aufheben.
Ich nehme hierfür bspw. mal den Aufruf.
setRelayState(!(switch_status[0] && switch_status[1]));
Alternativ gelingt dies auch per Boolescher Algebra mit einer ODER Verknüpfung:
setRelayState(!switch_status[0] || !switch_status[1]);
Die Boolesche Algebra gehört zu den tiefsten Grundlagen der IT. 
Manchmal gewinne ich den Eindruck, dass Grundlagenkenntnisse nicht mehr angemessen geschätzt werden. Vielleicht sehe ich dies als "IT Dinosaurier" so. Die "moderne " KI gibt mir nicht zuletzt unter meiner Perspektive erheblich zu denken, als alter Knabe. Ich werde die Folgen aber nicht mehr ertragen müssen. Meine Kinder und Enkel werden unter den Fehlleistungen aktueller Politik leiden. Die Sprücheklopfer aus jedweder Richtung sind dafür verantwortlich, ohne sich als Schneeflocke für eine Lawine selbst zu erkennen. Nimm mir bitte meine Gedanken nicht übel! 