#include "Light.h" #include "LightTimer.h" #include "Pelican.h" #include "Screen.h" #include Light::Light(std::string name, int x, int y, int color) : x(x), y(y), c(color), name(name), flashOn(false) { myTimer = new LightTimer(*this, &Light::flashLight); } Light::~Light() { std::cout << "Deleting light (" << name << ", " << x << ", " << y << ", " << c << ")" << "\n"; } void Light::set(LightState newState) { state = newState; if (state == FLASH) { flashOn = true; flashLight(); } else Screen::write(name.c_str(), x, y, state == OFF ? 0 : c); // No need to worry about flashing here } Light::LightState Light::get(void) { return state; } void Light::flashLight() { if (state == FLASH) // If we haven't left the FLASH state { Screen::write(name.c_str(), x, y, flashOn ? c : 0); // Display flashOn = !flashOn; // Toggle myTimer->timeoutRequest(FLASH_PERIOD); // Have another go } }