// ************************************************************************** // // // // 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 // // // // ************************************************************************** // // The following implements a simple counter that can increment and decrement // // its current value. Note that write conflicts that would occur by // // incrementing and decrementing at the same time are elegantly solved by this// // module. // // ************************************************************************** // package IslandTrafficControl; macro MaxCars = 5; module Counter(event ?inc,?dec,nat{MaxCars+1} v) { loop { if(inc & !dec) next(v) = v+1; else if(!inc & dec) next(v) = v-1; pause; } }