 // OBJECTS & VARIABLES
 /**
  * Peripherals present on REV7
- * - Pot        Set input to Hi-Z?  +
+ * - Pot        Set input to Hi-Z?
  * - PHT        IO_POWER_UP LOW
  * - Encoder    IO_POWER_UP LOW
  * - LED        Set pin HIGH?
  * - Button     Set to INPUT
- * - H-Bridge   Control pins HIGH, Current sense set to input.  +
- * - SHT21      read() once.        +
- * - RFM23B     ??                  +
+ * - H-Bridge   Control pins HIGH, Current sense set to input.
+ * - TMP112     read() once.
  * - XTAL       Setup and leave running?
  * - UART       Disable
  */

    if(!::OTV0P2BASE::HWTEST::calibrateInternalOscWithExtOsc()) { panic(F("Xtal")); } // Async clock not running or can't tune.
//    if(!::OTV0P2BASE::HWTEST::check32768HzOsc()) { panic(F("xtal")); } // Async clock not running correctly.

    // Initialise the radio, if configured, ASAP because it can suck a lot of power until properly initialised.
    PrimaryRadio.preinit(NULL);
    // Check that the radio is correctly connected; panic if not...
    if(!PrimaryRadio.configure(nPrimaryRadioChannels, RFM23BConfigs) || !PrimaryRadio.begin()) { panic(F("r1")); }

    // Buttons should not be activated DURING boot for user-facing boards; an activated button implies a fault.
    // Check buttons not stuck in the activated position.
    if(fastDigitalRead(BUTTON_MODE_L) == LOW) { panic(F("b")); }

void panic()
{
    // Reset radio and go into low-power mode.
//    PrimaryRadio.panicShutdown();
    // Power down almost everything else...
    OTV0P2BASE::minimisePowerWithoutSleep();
    pinMode(OTV0P2BASE::LED_HEATCALL_L, OUTPUT);
