struct State {
};
{{ GENERATED_CODE }}
void evaluate(Context ctx)
{
if (!isInputDirty<input_UPD>(ctx))
return;
const uint8_t port = getValue<input_PORT>(ctx);
if (isValidDigitalPort(port))
{
if (getValue<input_PullUp>(ctx))
::pinMode(port, INPUT_PULLUP);
else
::pinMode(port, INPUT);
bool val = ::digitalRead(port);
if (getValue<input_PULL>(ctx))
emitValue<output_SIG>(ctx, val);
else
emitValue<output_SIG>(ctx, !val);
emitValue<output_DONE>(ctx, 1);
}
else
emitValue<output_ERR>(ctx, 1);
}