We can't have 3 calls to isPersistentAlarmTriggered() on same alarm. If the first call starts the timer and the second or third call is good, it will reset the timer to 0 again. Suggest creating a BOOL variable to have all three conditions or with each other and call isPersistentAlarmTriggered() only once.
I noticed you are using a U32 as a boolean without typecasting. I know a boolean is an unsigned integer behind the scenes but to be specific we should explicitly typecast.