struct State {
};
{{ GENERATED_CODE }}
void evaluate(Context ctx)
{
if (!isInputDirty<input_UPD>(ctx))
return;
const uint8_t port = getValue<input_PORT>(ctx);
if (isValidAnalogPort(port))
{
::pinMode(port, INPUT);
Number val = :::analogRead(port) / 1023.;
if (getValue<input_PULL>(ctx))
emitValue<output_DUTY>(ctx, val);
else
emitValue<output_DUTY>(ctx, 1.0-val);
emitValue<output_DONE>(ctx, 1);
}
else
emitValue<output_ERR>(ctx, 1);
}