// ************************************************************************** // // // // 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 // // // // ************************************************************************** // // Service Lamp determines "lampBrightness" and "LampCfg" // // ************************************************************************** // package LightControl; macro LAMP_Dimming = 2; macro LAMP_Switching = 1; macro LAMP_Off = 0; module Lamp( bool ?hasDimmerValue, bool ?lightOnOff, nat{3} !lampBrightness, event nat{3} !LampCfg) { LampCfg = LAMP_Off; loop { pause; case // ----------------------------------------------------------------------- // switch to mode LAMP_Dimming // ----------------------------------------------------------------------- (hasDimmerValue & lightOnOff) do { LampCfg = LAMP_Dimming; next(lampBrightness) = LAMP_Dimming; } // ----------------------------------------------------------------------- // switch to mode LAMP_Switching // ----------------------------------------------------------------------- (lightOnOff) do { LampCfg = LAMP_Switching; next(lampBrightness) = LAMP_Switching; } // ----------------------------------------------------------------------- // switch to mode LAMP_Off // ----------------------------------------------------------------------- default { LampCfg = LAMP_Off; next(lampBrightness) = LAMP_Off; } } }