예제 #1
0
/**
 * 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;
}
예제 #2
0
/*
 * 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;
}
예제 #3
0
/**
 * 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;
}