Program Organization

Documentation

Program Organization

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 Resolution 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

 Path Name  Description
S-1 System
S-1-1
Self
Provides System_Initialized state and pulse, which initialize after all other Self signals have initialized.
S-2 Locations
S-2-1
Areas
S-2-2
Rooms
S-2-2-1
Rooms
Discovers Room modules and provides Room data to Rooms-Sources Controller.
S-2-2-*
Room
Provides control of associated Switcher modules to connected controllers.
S-3
Interfaces
S-3.1
Touchscreens
S-3.1.1
Touchscreen
Provides Select Lights or Select Climates menus.
S-3.2
Handheld Remotes
S-3.3
Keypads
S-4
Components
S-4.1
Switchers
S-4.1.1
Headend
S-4.1.*
Local
S-4.2
Sources
S-4.2.1
Sources
Discovers Source modules and provides Source data to Rooms-Sources Controller.
S-4.2.*
Source
S-4.3
Lights
S-4.2.1
Lights
Discovers Lights Keypad modules and provides Lights Keypad data to Devices Controller.
S-4.2.*
Lights Keypad
S-4.4
Shades
S-4.5
Climates
S-4.2.1
Climates
Discovers Climate modules and provides Climate data to Devices Controller.
S-4.2.*
Climate
S-4.6
Other