Function test On Board Diagnostics Disabling

Mantenemos StatusCar=3. Pal_luz_larga a 1. Pal_luz_corta a 1. Pal_luz_posicion 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=TRUE;
IN_LEV_LOWBEAM_LAMP=TRUE;
IN_LEV_PARK_LAMP=TRUE;
diagPsOvervolt=FALSE;
diagPsUndervolt=FALSE;
diagPsOvercurrent=FALSE;
// 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(&PARKING_LAMP_1_DGN, (5000/PROG_CYCLE_MS), 10.0,0);
PWM_gen(&PARKING_LAMP_2_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_PARKING_LAMP_1==!(PARKING_LAMP_1_DGN || PARKING_LAMP_2_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt)) &&
(OUT_PARKING_LAMP_2==(PARKING_LAMP_1_DGN || PARKING_LAMP_2_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt)) &&
((canParkLights==CAN_PARK_LIGHTS_ON)==(PARKING_LAMP_1_DGN || PARKING_LAMP_2_DGN || diagPSOvervolt || diagPSOvervolt || diagPSOvervolt))
3