Crescendo Docs

The Anatomy of a Project
From Head to Toe

Crescendo is already organized and stays organized even as it is extended.

Code Organization

One of the great challenges of software development is code organization. Yet "organization" seems like a dull task, the purview of bookkeepers, clerks, and secretaries, far from a great challenge—but it is. It is a challenge of execution rather than conception. Like a New Year's Resulution to exercise more, the concept of keeping code organized is easy, but the execution is difficult.

The anti-pattern of good code is spaghetti code. SIMPL signals and slots naturally become spaghetti. SIMPL modules are the first, best solution to SIMPL spaghetti. Nevertheless, many experienced SIMPL programmers are reluctant to modularize because modules make debugging and extending code difficult.

Project Hierarchy

PathNameDescription
S-1System
S-1-1SelfProvides System_Initialized state and pulse, which initialize after all other Self signals have initialized.
S-2Locations
S-2-1Areas
S-2-2Rooms
S-2-2-1RoomsDiscovers Room modules and provides Room data to Rooms-Sources Controller.
S-2-2-*RoomProvides control of associated Switcher modules to connected controllers.
S-3Interfaces
S-3.1Touchscreens
S-3.1.1TouchscreenProvides control of Room, Source, and Device modules to two-way graphical interfaces.
S-3.1.2Rooms-Sources ControllerProvides the Move Rooms, Watch Source, Listen to Source, and Share Source menus.
S-3.1.*Devices ControllerProvides Select Lights or Select Climates menus.
S-3.2Handheld Remotes
S-3.3Keypads
S-4Components
S-4.1Switchers
S-4.1.1Headend
S-4.1.*Local
S-4.2Sources
S-4.2.1SourcesDiscovers Source modules and provides Source data to Rooms-Sources Controller.
S-4.2.* Source
S-4.3Lights
S-4.2.1LightsDiscovers Lights Keypad modules and provides Lights Keypad data to Devices Controller.
S-4.2.* Lights Keypad
S-4.4Shades
S-4.5Climates
S-4.2.1ClimatesDiscovers Climate modules and provides Climate data to Devices Controller.
S-4.2.* Climate
S-4.6 Other