 }
 
 
-
-//========================================
-// FUNCTIONS
-//========================================
-/////////  CONTROL
-
-// Call this to do an I/O poll if needed; returns true if something useful definitely happened.
-// This call should typically take << 1ms at 1MHz CPU.
-// Does not change CPU clock speeds, mess with interrupts (other than possible brief blocking), or sleep.
-// Should also do nothing that interacts with Serial.
-// Limits actual poll rate to something like once every 8ms, unless force is true.
-//   * force if true then force full poll on every call (ie do not internally rate-limit)
-// Note that radio poll() can be for TX as well as RX activity.
-// Not thread-safe, eg not to be called from within an ISR.
-// FIXME trying to move into utils (for the time being.)
-bool pollIO(const bool force) {
-    static volatile uint8_t _pO_lastPoll;
-    // Poll RX at most about every ~8ms.
-    const uint8_t sct = OTV0P2BASE::getSubCycleTime();
-    if(force || (sct != _pO_lastPoll)) {
-        _pO_lastPoll = sct;
-        // Poll for inbound frames.
-        // If RX is not interrupt-driven then
-        // there will usually be little time to do this
-        // before getting an RX overrun or dropped frame.
-        PrimaryRadio.poll();
-    }
-    return(false);
-}
-
-// Run tasks needed at the end of each day (nominal midnight).
-// Should be run once at a fixed slot in the last minute of the last hour of each day.
-// Will be run after all stats for the current hour have been updated.
-static void endOfDayTasks() {
-    // Count down the setback lockout if not finished...  (TODO-786, TODO-906)
-    OTRadValve::countDownSetbackLockout();
-}
-
-////////// SENSORS
-
-// Update sensors with historic/trailing statistics information where needed.
-// Should be called at least hourly after all stats have been updated,
-// but can also be called whenever the user adjusts settings for example.
-void updateSensorsFromStats() {
-    // Update with rolling stats to adapt to sensors and local environment...
-    // ...and prevailing bias, so may take a while to adjust.
-    AmbLight.setTypMinMax(
-          eeStats.getByHourStatRTC(OTV0P2BASE::NVByHourByteStatsBase::STATS_SET_AMBLIGHT_BY_HOUR_SMOOTHED),
-          eeStats.getMinByHourStat(OTV0P2BASE::NVByHourByteStatsBase::STATS_SET_AMBLIGHT_BY_HOUR_SMOOTHED),
-          eeStats.getMaxByHourStat(OTV0P2BASE::NVByHourByteStatsBase::STATS_SET_AMBLIGHT_BY_HOUR_SMOOTHED),
-          !tempControl.hasEcoBias());
-}
-
-
-
-///////// CLI
+////// UI
 
 // Dump some brief CLI usage instructions to serial TX, which must be up and running.
 // If this gets too big there is a risk of overrunning and missing the next tick...

}



//========================================
// SETUP
//========================================

// Setup routine: runs once after reset.
// Does some limited board self-test and will panic() if anything is obviously broken.

// Ambient/room temperature sensor, usually on main board.
OTV0P2BASE::RoomTemperatureC16_SHT21 TemperatureC16; // SHT21 impl.


////// ACTUATORS

// DORM1/REV7 direct drive actuator.
// Singleton implementation/instance.
