Function test Inhabilitación por diagnósticos

Mantenemos StatusCar=3. OUT_HIGHBEAM_LAMP_L y OUT_HIGHBEAM_LAMP_R a 0. IN_LEV_HIGHBEAM_LAMP a 0. IN_LEV_LOWBEAM_LAMP a 1. En las señales de diagnóstico introducimos señales que, sumadas, den una señal cuadrada de 0.5 s de pulso (1 s de periodo). Cada pulso lo debe darlo una señal distinta. La salida tiene que ser una señal cuadrada de 0.5 Duración 20 segundos.
statusCar=3;
IN_LEV_HIGHBEAM_LAMP=FALSE;
OUT_HIGHBEAM_LAMP_L=FALSE;
OUT_HIGHBEAM_LAMP_R=FALSE;
IN_LEV_LOWBEAM_LAMP=TRUE;
// PW_gen - Generador sw basado en ciclo de programa
// Toma un puerto digital y construye sobre él una señal PWM
// arg 1: puerto: BOOL : puerto digital de la señal a construir
// arg 2 : periodo: UI_32 : periodo (en iteraciones del ciclo de programa)
// arg 3 : duty: FL_32 : duty en %
// arg 4 : offset: UI_32 : offset pulso (en iteraciones del ciclo de programa)
PWM_gen(&LOWBEAM_LAMP_R_DGN, (5000/PROG_CYCLE_MS), 10.0,0);
PWM_gen(&LOWBEAM_LAMP_L_DGN, (5000/PROG_CYCLE_MS), 10.0,(1000/PROG_CYCLE_MS));
PWM_gen(&diagPsOvervolt, (5000/PROG_CYCLE_MS), 10.0,(2000/PROG_CYCLE_MS));
PWM_gen(&diagPsUndervolt, (5000/PROG_CYCLE_MS), 10.0,(3000/PROG_CYCLE_MS));
PWM_gen(&diagPsOvercurrent, (5000/PROG_CYCLE_MS), 10.0,(4000/PROG_CYCLE_MS));
(OUT_LOWBEAM_LAMP_L==!(LOWBEAM_LAMP_L_DGN || LOWBEAM_LAMP_L_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt)) &&
(OUT_LOWBEAM_LAMP_R==!(LOWBEAM_LAMP_L_DGN || LOWBEAM_LAMP_L_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt)) &&
((canLowBeam==CAN_LOW_BEAM_ON)==!(LOWBEAM_LAMP_L_DGN || LOWBEAM_LAMP_L_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt))
4