Whilst the current set-up does work, it's not great and is very hard to communicate between modules. There's got to be a better way
Potential Rebuild Plan
Each piece of physical hardware should be represented by a service that models it's functionality. i.e 'CameraService' would interface with the camera, 'BuzzerService' with the buzzer, 'InputService' for buttons/switches, etc.
Each software function will be represented by a module that will provide functionality. These may consume one or more hardware services
This functionality will be accessible via an API, or through using the onboard inputs to change between controllers
Whilst the current set-up does work, it's not great and is very hard to communicate between modules. There's got to be a better way
Potential Rebuild Plan