void Pause::task() { /* * The system is paused for */ BitVector<NUM_WORK_ITEMS> pending = taskWork; unsigned index; while (pending.clearFirst(index)) { taskWork.atomicClear(index); switch (index) { case ButtonPress: onButtonChange(); break; case ButtonHold: monitorButtonHold(); break; case BluetoothPairing: mainLoop(ModeBluetoothPairing); break; case LowBattery: mainLoop(ModeLowBattery); break; } } }