// ************************************************************************** //
//                                                                            //
//    eses                   eses                                             //
//   eses                     eses                                            //
//  eses    eseses  esesese    eses   Embedded Systems Group                  //
//  ese    ese  ese ese         ese                                           //
//  ese    eseseses eseseses    ese   Department of Computer Science          //
//  eses   eses          ese   eses                                           //
//   eses   eseses  eseseses  eses    University of Kaiserslautern            //
//    eses                   eses                                             //
//                                                                            //
// ************************************************************************** //

package DiningPhilosophers;

module Fork (event bool ?take_fork, event bool ?release_fork)
{
    loop {

/*        do {
            pause;
            assert (!release_fork);
        } while (!take_fork);*/

        free: await(take_fork); // state: free
        
/*        do {
            pause;
            assert (!take_fork);
        } while (!release_fork);*/
        
        occupied: await(release_fork);  // state: occupied

    }
}