/** * Periodic callback in thread context. * We use this here purely to safely issue a disconnect operation after a pairing operation is complete. */ void MicroBitBLEManager::idleTick() { if (ble) ble->disconnect(pairingHandle, Gap::REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF); fiber_remove_idle_component(this); }
/** * Disables the radio for use as a multipoint sender/receiver. * * @return MICROBIT_OK on success, MICROBIT_NOT_SUPPORTED if the BLE stack is running. */ int MicroBitRadio::disable() { // Only attempt to enable.disable the radio if the protocol is alreayd running. if (ble_running()) return MICROBIT_NOT_SUPPORTED; if (!(status & MICROBIT_RADIO_STATUS_INITIALISED)) return MICROBIT_OK; // Disable interrupts and STOP any ongoing packet reception. NVIC_DisableIRQ(RADIO_IRQn); NRF_RADIO->EVENTS_DISABLED = 0; NRF_RADIO->TASKS_DISABLE = 1; while(NRF_RADIO->EVENTS_DISABLED == 0); // deregister ourselves from the callback event used to empty the receive queue. fiber_remove_idle_component(this); // record that the radio is now disabled status &= ~MICROBIT_RADIO_STATUS_INITIALISED; return MICROBIT_OK; }
/** * Destructor for MicroBitAccelerometer, where we deregister from the array of fiber components. */ MicroBitAccelerometer::~MicroBitAccelerometer() { fiber_remove_idle_component(this); }
/** * Destructor for MicroBitMessageBus, where we deregister this instance from the array of fiber components. */ MicroBitMessageBus::~MicroBitMessageBus() { fiber_remove_idle_component(this); }