when you are in menuState your loop is still stuck in the case menuState of
switch (currentState)
{
case alarmState:
triggeredAlarm();
break;
case menuState:
mainMenuDraw();
drawCursor();
operateMainMenu();
break;
}
in which you call operateMainMenu() which has an infinite wait on a button press
void operateMainMenu() {
int activeButton = 0;
while (activeButton == 0) {
state machine should be non blocking
May be this small introduction to the topic of state machines could help: Yet another Finite State Machine introduction