/** * Is the channel attached to an accumulator. * * @return The analog input is attached to an accumulator. */ bool AnalogInput::IsAccumulatorChannel() const { if (StatusIsFatal()) return false; int32_t status = 0; bool isAccum = isAccumulatorChannel(m_port, &status); wpi_setErrorWithContext(status, getHALErrorMessage(status)); return isAccum; }
/* * Class: edu_wpi_first_wpilibj_hal_AnalogJNI * Method: isAccumulatorChannel * Signature: (Ljava/nio/ByteBuffer;Ljava/nio/IntBuffer;)B */ JNIEXPORT jbyte JNICALL Java_edu_wpi_first_wpilibj_hal_AnalogJNI_isAccumulatorChannel (JNIEnv * env, jclass, jobject id, jobject status) { ANALOGJNI_LOG(logDEBUG) << "isAccumulatorChannel"; void ** javaId = (void**)env->GetDirectBufferAddress(id); ANALOGJNI_LOG(logDEBUG) << "Analog Ptr = " << *javaId; jint * statusPtr = (jint*)env->GetDirectBufferAddress(status); // isAccumulaotrChanel returns a boolean char vOut = isAccumulatorChannel(*javaId, statusPtr) ? 1 : 0; //The C++ equivalent of a jbyte is a char jbyte returnValue = vOut; ANALOGJNI_LOG(logDEBUG) << "Status = " << *statusPtr; ANALOGJNI_LOG(logDEBUG) << "AnalogOffset = " << returnValue; return returnValue; }
/** * Initialize the analog input port using the given port object. */ void* initializeAnalogInputPort(void* port_pointer, int32_t *status) { initializeAnalog(status); Port* port = (Port*) port_pointer; // Initialize port structure AnalogPort* analog_port = new AnalogPort(); analog_port->port = *port; if (isAccumulatorChannel(analog_port, status)) { analog_port->accumulator = tAccumulator::create(port->pin, status); } else analog_port->accumulator = NULL; // Set default configuration analogInputSystem->writeScanList(port->pin, port->pin, status); setAnalogAverageBits(analog_port, kDefaultAverageBits, status); setAnalogOversampleBits(analog_port, kDefaultOversampleBits, status); return analog_port; }