node {
void evaluate(Context ctx) {
auto mpu = getValue<input_DEV>(ctx);
if (isSettingUp())
emitValue<output_DEVU0027>(ctx, mpu);
if (!isInputDirty<input_UPD>(ctx))
return;
mpu->dmpGetQuaternion(&q, fifoBuffer);
mpu->dmpGetAccel(&aa, fifoBuffer);
mpu->dmpGetGravity(&gravity, &q);
mpu->dmpGetLinearAccel(&aaReal, &aa, &gravity);
emitValue<output_laX>(ctx, aaReal.x);
emitValue<output_laY>(ctx, aaReal.y);
emitValue<output_laZ>(ctx, aaReal.z);
emitValue<output_DONE>(ctx, 1);
}
}