Switching a relay on and off using "millis()" without interfering with the runtime of the other piece of code

Gah. I didn't fix my source from the first time you saw this error. Pls change RLY_OFF to RLY_IDLE and ensure that bRelay = false; occurs in RLY_HOLD, just before stateRelay = RLY_IDLE, like this:

void relay( void ) 
{
    uint8_t
        stateRelay = RLY_IDLE;
    static uint32_t
        timeRelay;
    uint32_t
        timeNow = millis();
        
    switch( stateRelay )
    {
        case    RLY_IDLE:
            //waiting for flag to indicate relay sequence
            if( bRelay == true )
            {                
                timeRelay = timeNow;
                stateRelay = RLY_ON;
                
            }//if
            
        break;

        case    RLY_DELAY:
            //delay before turning the relay on
            if( millis() - timeRelay >= K_RELAY_DELAY_TIME )
            {
                digitalWrite( relay2, LOW );   //relay on 
                timeRelay = timeNow;
                stateRelay = RLY_HOLD;
                    
            }//if
            
        break;

        case    RLY_HOLD:
            //relay on-timing
            if( millis() - timeRelay >= K_RELAY_HOLD_TIME )
            {
                digitalWrite( relay2, HIGH );    
                bRelay = false;
                stateRelay = RLY_IDLE;
                    
            }//if
        
        break;
                
    }//switch

}//relay