| ThermalControllers and FanControllers are derived objects from a common PID |
| Controller object. The design implemented in this structure is a facsimile of |
| what was published in the Chrome OS source. |
| |
| One has any number of ThermalControllers that run through a PID step to |
| generate a set-point RPM to reach its thermal set-point. The maximum output |
| from the set of ThermalControllers is taken as the input to all the |
| FanController PID loops. |
| |
| Each group of these controllers is managed within a zone. A PIDZone object |
| helps manage them by providing a sensor value cache and overall execution. |