void FSM_trecere(int done, int T, int p_rosu, int p_verde, int m_rosu, int m_galben, int m_verde) { int state = 0; // FSM state: 0 - m_verde, 1 - m_galben, 2 - m_rosu while(1) { read_inputs(); p_rosu = 0; p_verde = 0; m_rosu = 0; m_galben = 0; m_verde = 0; switch(state) { case 0: p_rosu = 1; m_verde = 1; T = 50; if(done == 1) state = 1; else state = 0; break; case 1: p_rosu = 1; m_galben = 1; T = 10; if(done == 1) state = 2; else state = 1; break; case 2: p_verde = 1; m_rosu = 1; T = 30; if(done == 1) state = 0; else state = 2; break; } }