Source code for the Curilights Controller. See http://www.saccade.com/writing/projects/CuriController/ for details.
Dependencies: FatFileSystem mbed
This is the source code for the Curilights controller. This lets you interactively control a string of Curilights. It provides a simple click-wheel user interface for changing colors, brightness and behavior. It responds to movement and lighting.
Finished Controller
System Block Diagram
Diff: SettingsMenu.cpp
- Revision:
- 3:0ac64c4ca40f
- Parent:
- 1:d1da77023e6a
- Child:
- 4:cfef06d8bb96
--- a/SettingsMenu.cpp Sun Jan 15 09:07:04 2012 +0000 +++ b/SettingsMenu.cpp Tue Jan 17 13:45:17 2012 +0000 @@ -1,45 +1,83 @@ -// -// Settings menu implementation -// - -#include "SettingsMenu.h" -#include "UserInterface.h" - -/* -class SettingsMenu : public UIMenu -{ -public: - SettingsMenu( CheapLCD * lcd, HomeMenu * parent ); - virtual ~SettingsMenu() {}; - -protected: - virtual void KnobPushed(); - virtual void AttachButton( PushButton * button ) - { button->attach( this, &SettingsMenu::KnobPushed ); } - -private: - HomeMenu * fParent; - CheapLCD * fLCD; -}; -*/ - -SettingsMenu::SettingsMenu( CheapLCD * lcd, HomeMenu * parent ) -: UIMenu( lcd, "Settings" ), - fLCD( lcd ), fParent( parent ) -{ - fLabels.push_back( string( "Light Sensor" ) ); - fLabels.push_back( string( "Motion Sensor" ) ); - fLabels.push_back( string( "Defaults" ) ); - fLabels.push_back( string( "Debug" ) ); - fLabels.push_back( string( "Exit Settings" ) ); -} - -void SettingsMenu::KnobPushed() -{ - switch( SelectedItem() ) - { - case 4: - SwitchTo( fParent ); - break; - } -} +// +// Settings menu implementation +// + +#include "SettingsMenu.h" +#include "UserInterface.h" +#include "SystemState.h" + +/* +class SettingsMenu : public UIMenu +{ +public: + SettingsMenu( CheapLCD * lcd, HomeMenu * parent ); + virtual ~SettingsMenu() {}; + +protected: + virtual void KnobPushed(); + virtual void AttachButton( PushButton * button ) + { button->attach( this, &SettingsMenu::KnobPushed ); } + +private: + HomeMenu * fParent; + CheapLCD * fLCD; +}; +*/ + +SettingsMenu::SettingsMenu( CheapLCD * lcd, HomeMenu * parent ) +: UIMenu( lcd, "Settings" ), + fParent( parent ), fLightSensorMenu( lcd, this ) +{ + fLabels.push_back( string( "Light Sensor" ) ); + fLabels.push_back( string( "Motion Sensor" ) ); + fLabels.push_back( string( "Defaults" ) ); + fLabels.push_back( string( "Debug" ) ); + fLabels.push_back( string( "Exit Settings" ) ); +} + +void SettingsMenu::KnobPushed() +{ + switch( SelectedItem() ) + { + case 0: + SwitchTo( &fLightSensorMenu ); + break; + + case 4: + SwitchTo( fParent ); + break; + } +} + +LightSensorMenu::LightSensorMenu( CheapLCD * lcd, SettingsMenu * parent ) +: UIMenu( lcd ), + fParent( parent ) +{ + fLabels.push_back( string( "Enable" ) ); + fLabels.push_back( string( "Disable" ) ); + fLabels.push_back( string( "Exit" ) ); + fLightState = gSystemState.GetLightSensor(); + fHeader = string( fLightState ? "Lt Sens On" : "Lt Sens Off" ); +} + +void LightSensorMenu::KnobPushed() +{ + switch( SelectedItem() ) + { + case 0: + fLightState = 1; + ChangeHeader( "Lt Sens On" ); + break; + + case 1: + fLightState = 0; + ChangeHeader( "Lt Sens Off" ); + break; + + case 2: + gSystemState.SetLightSensor( fLightState ); + SwitchTo( fParent ); + break; + } +} + \ No newline at end of file