AnalogTriggerOutput::~AnalogTriggerOutput() { if (m_interrupt != HAL_INVALID_HANDLE) { int32_t status = 0; cleanInterrupts(m_interrupt, &status); // ignore status, as an invalid handle just needs to be ignored. m_interrupt = HAL_INVALID_HANDLE; } }
/** * Cancel interrupts on this device. * This deallocates all the chipobject structures and disables any interrupts. */ void InterruptableSensorBase::CancelInterrupts() { if (StatusIsFatal()) return; wpi_assert(m_interrupt != nullptr); int32_t status = 0; cleanInterrupts(m_interrupt, &status); wpi_setErrorWithContext(status, getHALErrorMessage(status)); m_interrupt = nullptr; m_interrupts->Free(m_interruptIndex); }
/* * Class: edu_wpi_first_wpilibj_hal_InterruptJNI * Method: cleanInterrupts * Signature: (J)V */ JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_InterruptJNI_cleanInterrupts (JNIEnv * env, jclass, jlong interrupt_pointer) { INTERRUPTJNI_LOG(logDEBUG) << "Calling INTERRUPTJNI cleanInterrupts"; INTERRUPTJNI_LOG(logDEBUG) << "Interrupt Ptr = " << (void*)interrupt_pointer; int32_t status = 0; cleanInterrupts((void*)interrupt_pointer, &status); INTERRUPTJNI_LOG(logDEBUG) << "Status = " << status; CheckStatus(env, status); }
/** * Free resources associated with the Digital Input class. */ DigitalInput::~DigitalInput() { if (StatusIsFatal()) return; if (m_interrupt != NULL) { int32_t status = 0; cleanInterrupts(m_interrupt, &status); wpi_setErrorWithContext(status, getHALErrorMessage(status)); m_interrupt = NULL; m_interrupts->Free(m_interruptIndex); } int32_t status = 0; freeDIO(m_digital_ports[m_channel], &status); wpi_setErrorWithContext(status, getHALErrorMessage(status)); }