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
SettingsMenu.cpp@3:0ac64c4ca40f, 2012-01-17 (annotated)
- Committer:
- isonno
- Date:
- Tue Jan 17 13:45:17 2012 +0000
- Revision:
- 3:0ac64c4ca40f
- Parent:
- 1:d1da77023e6a
- Child:
- 4:cfef06d8bb96
LightSensor settings menu; more work (unsuccessful) on serial input from USB.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
isonno |
3:0ac64c4ca40f | 1 | // |
isonno |
3:0ac64c4ca40f | 2 | // Settings menu implementation |
isonno |
3:0ac64c4ca40f | 3 | // |
isonno |
3:0ac64c4ca40f | 4 | |
isonno |
3:0ac64c4ca40f | 5 | #include "SettingsMenu.h" |
isonno |
3:0ac64c4ca40f | 6 | #include "UserInterface.h" |
isonno |
3:0ac64c4ca40f | 7 | #include "SystemState.h" |
isonno |
3:0ac64c4ca40f | 8 | |
isonno |
3:0ac64c4ca40f | 9 | /* |
isonno |
3:0ac64c4ca40f | 10 | class SettingsMenu : public UIMenu |
isonno |
3:0ac64c4ca40f | 11 | { |
isonno |
3:0ac64c4ca40f | 12 | public: |
isonno |
3:0ac64c4ca40f | 13 | SettingsMenu( CheapLCD * lcd, HomeMenu * parent ); |
isonno |
3:0ac64c4ca40f | 14 | virtual ~SettingsMenu() {}; |
isonno |
3:0ac64c4ca40f | 15 | |
isonno |
3:0ac64c4ca40f | 16 | protected: |
isonno |
3:0ac64c4ca40f | 17 | virtual void KnobPushed(); |
isonno |
3:0ac64c4ca40f | 18 | virtual void AttachButton( PushButton * button ) |
isonno |
3:0ac64c4ca40f | 19 | { button->attach( this, &SettingsMenu::KnobPushed ); } |
isonno |
3:0ac64c4ca40f | 20 | |
isonno |
3:0ac64c4ca40f | 21 | private: |
isonno |
3:0ac64c4ca40f | 22 | HomeMenu * fParent; |
isonno |
3:0ac64c4ca40f | 23 | CheapLCD * fLCD; |
isonno |
3:0ac64c4ca40f | 24 | }; |
isonno |
3:0ac64c4ca40f | 25 | */ |
isonno |
3:0ac64c4ca40f | 26 | |
isonno |
3:0ac64c4ca40f | 27 | SettingsMenu::SettingsMenu( CheapLCD * lcd, HomeMenu * parent ) |
isonno |
3:0ac64c4ca40f | 28 | : UIMenu( lcd, "Settings" ), |
isonno |
3:0ac64c4ca40f | 29 | fParent( parent ), fLightSensorMenu( lcd, this ) |
isonno |
3:0ac64c4ca40f | 30 | { |
isonno |
3:0ac64c4ca40f | 31 | fLabels.push_back( string( "Light Sensor" ) ); |
isonno |
3:0ac64c4ca40f | 32 | fLabels.push_back( string( "Motion Sensor" ) ); |
isonno |
3:0ac64c4ca40f | 33 | fLabels.push_back( string( "Defaults" ) ); |
isonno |
3:0ac64c4ca40f | 34 | fLabels.push_back( string( "Debug" ) ); |
isonno |
3:0ac64c4ca40f | 35 | fLabels.push_back( string( "Exit Settings" ) ); |
isonno |
3:0ac64c4ca40f | 36 | } |
isonno |
3:0ac64c4ca40f | 37 | |
isonno |
3:0ac64c4ca40f | 38 | void SettingsMenu::KnobPushed() |
isonno |
3:0ac64c4ca40f | 39 | { |
isonno |
3:0ac64c4ca40f | 40 | switch( SelectedItem() ) |
isonno |
3:0ac64c4ca40f | 41 | { |
isonno |
3:0ac64c4ca40f | 42 | case 0: |
isonno |
3:0ac64c4ca40f | 43 | SwitchTo( &fLightSensorMenu ); |
isonno |
3:0ac64c4ca40f | 44 | break; |
isonno |
3:0ac64c4ca40f | 45 | |
isonno |
3:0ac64c4ca40f | 46 | case 4: |
isonno |
3:0ac64c4ca40f | 47 | SwitchTo( fParent ); |
isonno |
3:0ac64c4ca40f | 48 | break; |
isonno |
3:0ac64c4ca40f | 49 | } |
isonno |
3:0ac64c4ca40f | 50 | } |
isonno |
3:0ac64c4ca40f | 51 | |
isonno |
3:0ac64c4ca40f | 52 | LightSensorMenu::LightSensorMenu( CheapLCD * lcd, SettingsMenu * parent ) |
isonno |
3:0ac64c4ca40f | 53 | : UIMenu( lcd ), |
isonno |
3:0ac64c4ca40f | 54 | fParent( parent ) |
isonno |
3:0ac64c4ca40f | 55 | { |
isonno |
3:0ac64c4ca40f | 56 | fLabels.push_back( string( "Enable" ) ); |
isonno |
3:0ac64c4ca40f | 57 | fLabels.push_back( string( "Disable" ) ); |
isonno |
3:0ac64c4ca40f | 58 | fLabels.push_back( string( "Exit" ) ); |
isonno |
3:0ac64c4ca40f | 59 | fLightState = gSystemState.GetLightSensor(); |
isonno |
3:0ac64c4ca40f | 60 | fHeader = string( fLightState ? "Lt Sens On" : "Lt Sens Off" ); |
isonno |
3:0ac64c4ca40f | 61 | } |
isonno |
3:0ac64c4ca40f | 62 | |
isonno |
3:0ac64c4ca40f | 63 | void LightSensorMenu::KnobPushed() |
isonno |
3:0ac64c4ca40f | 64 | { |
isonno |
3:0ac64c4ca40f | 65 | switch( SelectedItem() ) |
isonno |
3:0ac64c4ca40f | 66 | { |
isonno |
3:0ac64c4ca40f | 67 | case 0: |
isonno |
3:0ac64c4ca40f | 68 | fLightState = 1; |
isonno |
3:0ac64c4ca40f | 69 | ChangeHeader( "Lt Sens On" ); |
isonno |
3:0ac64c4ca40f | 70 | break; |
isonno |
3:0ac64c4ca40f | 71 | |
isonno |
3:0ac64c4ca40f | 72 | case 1: |
isonno |
3:0ac64c4ca40f | 73 | fLightState = 0; |
isonno |
3:0ac64c4ca40f | 74 | ChangeHeader( "Lt Sens Off" ); |
isonno |
3:0ac64c4ca40f | 75 | break; |
isonno |
3:0ac64c4ca40f | 76 | |
isonno |
3:0ac64c4ca40f | 77 | case 2: |
isonno |
3:0ac64c4ca40f | 78 | gSystemState.SetLightSensor( fLightState ); |
isonno |
3:0ac64c4ca40f | 79 | SwitchTo( fParent ); |
isonno |
3:0ac64c4ca40f | 80 | break; |
isonno |
3:0ac64c4ca40f | 81 | } |
isonno |
3:0ac64c4ca40f | 82 | } |
isonno |
3:0ac64c4ca40f | 83 |