You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

84 lines
2.5 KiB
C

#include "kraftsensor.h"
#include "avrIOhelper/io-helper.h"
#include <stdint.h>
#include <stdio.h>
#include "notaus.h"
uint8_t notaus_state = POWER_OFF;
void do_notaus(){
if(!read_Input(IN_NOTAUS_ANLAGE, LEVEL) || read_Input(IN_NOTAUS_SCHRANK, LEVEL) || read_Input(IN_NOTAUS_DISPLAY, LEVEL)){
/* at least one pressed */
notaus_state = POWER_OFF;
ioHelperSetBit(outStates, AMPEL_ROT, 1);
ioHelperSetBit(outStates, AMPEL_GELB, 0);
ioHelperSetBit(outStates, AMPEL_GRUEN, 0);
set_Output(LED_GRN_NOTAUS_SCHRANK, OFF);
set_Output(LED_GRN_NOTAUS_ANLAGE, OFF);
set_Output(LED_GRN_NOTAUS_DISPLAY, OFF);
if(!read_Input(IN_NOTAUS_ANLAGE, LEVEL)){
set_Output(LED_ROT_NOTAUS_ANLAGE, BLINK);
set_Output(LED_ROT_NOTAUS_SCHRANK, ON);
set_Output(LED_ROT_NOTAUS_DISPLAY, ON);
}
if(read_Input(IN_NOTAUS_SCHRANK, LEVEL)){
set_Output(LED_ROT_NOTAUS_ANLAGE, ON);
set_Output(LED_ROT_NOTAUS_SCHRANK, BLINK);
set_Output(LED_ROT_NOTAUS_DISPLAY, ON);
}
if(read_Input(IN_NOTAUS_DISPLAY, LEVEL)){
set_Output(LED_ROT_NOTAUS_ANLAGE, ON);
set_Output(LED_ROT_NOTAUS_SCHRANK, ON);
set_Output(LED_ROT_NOTAUS_DISPLAY, BLINK);
}
}
else if(!read_Input(IN_ANLAGE_EIN, LEVEL)){
/* nothing pressed, but power not on */
notaus_state = ARMED;
ioHelperSetBit(outStates, AMPEL_ROT, 0);
ioHelperSetBit(outStates, AMPEL_GELB, 1);
ioHelperSetBit(outStates, AMPEL_GRUEN, 0);
set_Output(LED_ROT_NOTAUS_ANLAGE, ON);
set_Output(LED_ROT_NOTAUS_SCHRANK, ON);
set_Output(LED_ROT_NOTAUS_DISPLAY, ON);
set_Output(LED_GRN_NOTAUS_SCHRANK, ON);
set_Output(LED_GRN_NOTAUS_ANLAGE, ON);
set_Output(LED_GRN_NOTAUS_DISPLAY, ON);
}
else{
/* powered on */
notaus_state = POWER_ON;
ioHelperSetBit(outStates, AMPEL_ROT, 0);
ioHelperSetBit(outStates, AMPEL_GELB, 0);
ioHelperSetBit(outStates, AMPEL_GRUEN, 1);
set_Output(LED_GRN_NOTAUS_SCHRANK, ON);
set_Output(LED_GRN_NOTAUS_ANLAGE, ON);
set_Output(LED_GRN_NOTAUS_DISPLAY, ON);
set_Output(LED_ROT_NOTAUS_ANLAGE, OFF);
set_Output(LED_ROT_NOTAUS_SCHRANK, OFF);
set_Output(LED_ROT_NOTAUS_DISPLAY, OFF);
}
if(!kraftsensor_valid)
{
set_Output(LED_FEHLER, ON);
}
else
set_Output(LED_FEHLER, OFF);
}