DCC-EX Simple Throttle
Simple throttle for a DCC-EX CommandStation
|
CActionMenuItem | Extension of the BaseMenuItem class for users to select items that publish an event Each action must generate an event to be published to the AppOrchestrator |
CAppConfiguration | Class to perform all application configuration on startup All interfaces, menus, and other application objects are created within this class |
CAppOrchestrator | This class is for the overall application orchestration to coordinate all the user interactions, screens, displays, connection management, and other application states |
CBaseMenu | Class for maintaining a linked list of menu items to form a menu |
CBaseMenuItem | Base class for all menu item types, and all menu item types must inherit from this. Every menu item has a name, which is what appears on screen for the user to select. Every menu item also needs an index to assist with selecting specific items. All menu items form a linked list associated with a menu |
CButton | |
CCommandStationClient | |
CCommandStationListener | Class to manage broadcasts and responses from the CommandStation |
CCommandStationMenuItem | |
CConnectionManager | Class to manage all WiFi and serial connections used to connect to a CommandStation |
CDisplayInterface | Interface class to abstract construction of what is displayed on screen from the physical implementations All physical display classes must extend this This allows for different display types and resolutions to be used |
CErrorScreen | |
CEvent | Structure for each Event that is published |
CEventData | Structure to enable supporting EventData that has various different types Byte - caters for 8 bit unsigned integer data (uint8_t x) Integer - caters for signed integer data (int y) Loco - caters for a pointer to a DCCEXProtocol Loco object (Loco *loco) None - caters for events that contain no data and are notification only When adding new data types: |
CEventListener | Class to extend for all other classes that need to respond to events For example: Class <MyClass> : public EventListener () {} The recommended approach is to implement a switch/case in the onEvent() implementation to handle valid event types |
▼CEventManager | Class to centrally manage all events for the application Exposes methods to register subscribers that need to respond to events, and to publish events Dynamically manages a linked list of subscribers to be notified when a relevant event is published Subscribers must extend the EventListener class and implement the onEvent() virtual method provided |
CEventSubscriber | EventSubscriber structure to maintain the linked list of subscribers |
CLocoBroadcast | Structure for data from a Loco broadcast |
CLocoMenuItem | Extension of the BaseMenuItem class to allow users to select a Loco |
CMenuManager | |
CMenuScreen | |
CProgressScreen | |
CRotary | |
CRotaryEncoder | Class to implement a physical rotary encoder for user selection activities Clockwise moves down/increases speed, counter clockwise moves up/decreases speed |
CScreenInterface | |
CSelectActionMenu | Menu to allow for extra actions to be performed For future use, not actually enabled yet |
CSelectCommandStationMenu | |
CSelectLocoMenu | |
CStartupScreen | Class to display startup information on screen and respond to user interactions Displays the DCC-EX Simple Throttle header and the current software version No user actions are implemented on this screen as it is static content |
CSwitch | |
CThrottleScreen | |
CU8G2SH1106Display | Class to implement display on an SH1106 based OLED using the U8g2 library |
CUserConfirmationInterface | Interface class to abstract user confirmation actions from physical implementations All physical user confirmation classes must extend this This allows the use of the button on a rotary encoder, other buttons, touch screens, and other user interface methods that can trigger single click, double click, or long press type actions |
CUserSelectionInterface | Interface class to abstract user selection actions from physical implementations All physical user selection classes must extend this This allows for the use of physical buttons, rotary encoders, touch screens, and other user interface methods that can move menu selections up and down, and increase or decrease throttle speeds Note if using a rotary encoder, if up is counter clockwise for menu selections, this will also be a decrease in speed, and vice versa for down with clockwise and an increase in speed |