To be honest what I did was to get the core of that app. The CodeReader::transmitReadCodes() and CodeReader::receiveReadCodes() functions from "dtc.cpp". Everything else was boilerplate code to me.
The results with my emulator are the same, it gets the codes of the different three states.
When tested in a car, I don't get anything but I didn't have, by the moment, any problems with my car (DTCs).
And with the message that you get, I think that it is a little bit deceptive because clearly you are getting that when the ignition is on, but also there is no way (with a function) to know if the ignition is on. What many people do is just send a message to the CAN and check for a response, if there isn't a response, you assume that the engine is off.