We shouldn't require something to be defined to do the right thing. We should require something to be defined to do the wrong thing (i.e. this should say #ifndef _BAD_MSG_CRC_ALARM_DISABLED_) And then, we don't need a TODO. These #defines are only possible in DEBUG builds. A RELEASE build will never allow thing build flags to disable things.
Should not change states in a signal function. Should set a request flag that gets looked at in dry self-tests state handler function which would return install state if the flag is set.