diff --git a/hal/src/main/java/edu/wpi/first/hal/DMAJNI.java b/hal/src/main/java/edu/wpi/first/hal/DMAJNI.java
deleted file mode 100644
index 77eebf014ff..00000000000
--- a/hal/src/main/java/edu/wpi/first/hal/DMAJNI.java
+++ /dev/null
@@ -1,251 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.hal;
-
-/**
- * DMA HAL JNI functions.
- *
- * @see "hal/DHA.h"
- */
-public class DMAJNI extends JNIWrapper {
- /**
- * Initializes an object for performing DMA transfers.
- *
- * @return the created dma handle
- * @see "HAL_InitializeDMA"
- */
- public static native int initialize();
-
- /**
- * Frees a DMA object.
- *
- * @param handle the dma handle
- * @see "HAL_FreeDMA"
- */
- public static native void free(int handle);
-
- /**
- * Pauses or unpauses a DMA transfer.
- *
- *
This can only be called while DMA is running.
- *
- * @param handle the dma handle
- * @param pause true to pause transfers, false to resume.
- * @see "HAL_SetDMAPause"
- */
- public static native void setPause(int handle, boolean pause);
-
- /**
- * Sets DMA transfers to occur at a specific timed interval.
- *
- *
This will remove any external triggers. Only timed or external is supported.
- *
- *
Only 1 timed period is supported.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param periodSeconds the period to trigger in seconds
- * @see "HAL_SetDMATimedTrigger"
- */
- public static native void setTimedTrigger(int handle, double periodSeconds);
-
- /**
- * Sets DMA transfers to occur at a specific timed interval in FPGA cycles.
- *
- *
This will remove any external triggers. Only timed or external is supported.
- *
- *
Only 1 timed period is supported
- *
- *
The FPGA currently runs at 40 MHz, but this can change.
- * HAL_GetSystemClockTicksPerMicrosecond can be used to get a computable value for this.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param cycles the period to trigger in FPGA cycles
- * @see "HAL_SetDMATimedTriggerCycles"
- */
- public static native void setTimedTriggerCycles(int handle, int cycles);
-
- /**
- * Adds position data for an encoder to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param encoderHandle the encoder to add
- * @see "HAL_AddDMAEncoder"
- */
- public static native void addEncoder(int handle, int encoderHandle);
-
- /**
- * Adds timer data for an encoder to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param encoderHandle the encoder to add
- * @see "HAL_AddDMAEncoderPeriod"
- */
- public static native void addEncoderPeriod(int handle, int encoderHandle);
-
- /**
- * Adds position data for an counter to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param counterHandle the counter to add
- * @see "HAL_AddDMACounter"
- */
- public static native void addCounter(int handle, int counterHandle);
-
- /**
- * Adds timer data for an counter to be collected by DMA.
- *
- * @param handle the dma handle
- * @param counterHandle the counter to add
- * @see "HAL_AddDMACounterPeriod"
- */
- public static native void addCounterPeriod(int handle, int counterHandle);
-
- /**
- * Adds a digital source to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param digitalSourceHandle the digital source to add
- * @see "HAL_AddDMADigitalSource"
- */
- public static native void addDigitalSource(int handle, int digitalSourceHandle);
-
- /**
- * Adds a duty cycle input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param dutyCycleHandle the duty cycle input to add
- * @see "HAL_AddDMADutyCycle"
- */
- public static native void addDutyCycle(int handle, int dutyCycleHandle);
-
- /**
- * Adds an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param analogInputHandle the analog input to add
- * @see "HAL_AddDMAAnalogInput"
- */
- public static native void addAnalogInput(int handle, int analogInputHandle);
-
- /**
- * Adds averaged data of an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param analogInputHandle the analog input to add
- * @see "HAL_AddDMAAveragedAnalogInput"
- */
- public static native void addAveragedAnalogInput(int handle, int analogInputHandle);
-
- /**
- * Adds accumulator data of an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param analogInputHandle the analog input to add
- * @see "HAL_AddDMAAnalogAccumulator"
- */
- public static native void addAnalogAccumulator(int handle, int analogInputHandle);
-
- /**
- * Sets DMA transfers to occur on an external trigger.
- *
- *
This will remove any timed trigger set. Only timed or external is supported.
- *
- *
Up to 8 external triggers are currently supported.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @param digitalSourceHandle the digital source handle (either a HAL_AnalogTriggerHandle or a
- * HAL_DigitalHandle)
- * @param analogTriggerType the analog trigger type if the source is an analog trigger
- * @param rising true to trigger on rising edge
- * @param falling true to trigger on falling edge
- * @return the index of the trigger
- * @see "HAL_SetDMAExternalTrigger"
- */
- public static native int setExternalTrigger(
- int handle, int digitalSourceHandle, int analogTriggerType, boolean rising, boolean falling);
-
- /**
- * Clear all sensors from the DMA collection list.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @see "HAL_ClearDMASensors"
- */
- public static native void clearSensors(int handle);
-
- /**
- * Clear all external triggers from the DMA trigger list.
- *
- *
This can only be called if DMA is not started.
- *
- * @param handle the dma handle
- * @see "HAL_ClearDMAExternalTriggers"
- */
- public static native void clearExternalTriggers(int handle);
-
- /**
- * Starts DMA Collection.
- *
- * @param handle the dma handle
- * @param queueDepth the number of objects to be able to queue
- * @see "HAL_StartDMA"
- */
- public static native void startDMA(int handle, int queueDepth);
-
- /**
- * Stops DMA Collection.
- *
- * @param handle the dma handle
- * @see "HAL_StopDMA"
- */
- public static native void stopDMA(int handle);
-
- /**
- * Reads a DMA sample from the queue.
- *
- * @param handle the dma handle
- * @param timeoutSeconds the time to wait for data to be queued before timing out
- * @param buffer the sample object to place data into
- * @param sampleStore index 0-21 channelOffsets, index 22: capture size, index 23: triggerChannels
- * (bitflags), index 24: remaining, index 25: read status
- * @return timestamp of the DMA Sample
- */
- public static native long readDMA(
- int handle, double timeoutSeconds, int[] buffer, int[] sampleStore);
-
- /**
- * Get the sensor DMA sample.
- *
- * @param handle the dma handle
- * @return The DMA sample
- */
- public static native DMAJNISample.BaseStore getSensorReadData(int handle);
-
- /** Utility class. */
- private DMAJNI() {}
-}
diff --git a/hal/src/main/java/edu/wpi/first/hal/DMAJNISample.java b/hal/src/main/java/edu/wpi/first/hal/DMAJNISample.java
deleted file mode 100644
index 50631ff2785..00000000000
--- a/hal/src/main/java/edu/wpi/first/hal/DMAJNISample.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.hal;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class DMAJNISample {
- private static final int kEnable_Accumulator0 = 8;
- private static final int kEnable_Accumulator1 = 9;
-
- static class BaseStore {
- public final int m_valueType;
- public final int m_index;
-
- BaseStore(int valueType, int index) {
- this.m_valueType = valueType;
- this.m_index = index;
- }
- }
-
- private final int[] m_dataBuffer = new int[100];
- private final int[] m_storage = new int[100];
- private long m_timeStamp;
- private Map m_propertyMap = new HashMap<>();
-
- /** Default constructor. */
- public DMAJNISample() {}
-
- public int update(int dmaHandle, double timeoutSeconds) {
- m_timeStamp = DMAJNI.readDMA(dmaHandle, timeoutSeconds, m_dataBuffer, m_storage);
- return m_storage[25];
- }
-
- public int getCaptureSize() {
- return m_storage[22];
- }
-
- public int getTriggerChannels() {
- return m_storage[23];
- }
-
- public int getRemaining() {
- return m_storage[24];
- }
-
- public long getTime() {
- return m_timeStamp;
- }
-
- private BaseStore addSensorInternal(int handle) {
- BaseStore sensorData = DMAJNI.getSensorReadData(handle);
- m_propertyMap.put(handle, sensorData);
- return sensorData;
- }
-
- public void addSensor(int handle) {
- addSensorInternal(handle);
- }
-
- private int readValue(int valueType, int index) {
- int offset = m_storage[valueType];
- if (offset == -1) {
- throw new RuntimeException("Resource not found in DMA capture");
- }
- return m_dataBuffer[offset + index];
- }
-
- public int getEncoder(int encoderHandle) {
- BaseStore data = m_propertyMap.get(encoderHandle);
- if (data == null) {
- data = addSensorInternal(encoderHandle);
- }
- return readValue(data.m_valueType, data.m_index);
- }
-
- public int getEncoderPeriod(int encoderHandle) {
- BaseStore data = m_propertyMap.get(encoderHandle);
- if (data == null) {
- data = addSensorInternal(encoderHandle);
- }
- // + 2 Hack, but needed to not have to call into JNI
- return readValue(data.m_valueType + 2, data.m_index);
- }
-
- public int getCounter(int counterHandle) {
- BaseStore data = m_propertyMap.get(counterHandle);
- if (data == null) {
- data = addSensorInternal(counterHandle);
- }
- return readValue(data.m_valueType, data.m_index);
- }
-
- public int getCounterPeriod(int counterHandle) {
- BaseStore data = m_propertyMap.get(counterHandle);
- if (data == null) {
- data = addSensorInternal(counterHandle);
- }
- // Hack, but needed to not have to call into JNI
- return readValue(data.m_valueType + 2, data.m_index);
- }
-
- public boolean getDigitalSource(int digitalSourceHandle) {
- BaseStore data = m_propertyMap.get(digitalSourceHandle);
- if (data == null) {
- data = addSensorInternal(digitalSourceHandle);
- }
-
- int value = readValue(data.m_valueType, 0);
-
- return ((value >> data.m_index) & 0x1) != 0;
- }
-
- public int getAnalogInput(int analogInputHandle) {
- BaseStore data = m_propertyMap.get(analogInputHandle);
- if (data == null) {
- data = addSensorInternal(analogInputHandle);
- }
-
- int value = readValue(data.m_valueType, data.m_index / 2);
- if ((data.m_index % 2) != 0) {
- return (value >>> 16) & 0xFFFF;
- } else {
- return value & 0xFFFF;
- }
- }
-
- public int getAnalogInputAveraged(int analogInputHandle) {
- BaseStore data = m_propertyMap.get(analogInputHandle);
- if (data == null) {
- data = addSensorInternal(analogInputHandle);
- }
-
- // + 2 Hack, but needed to not have to call into JNI
- return readValue(data.m_valueType + 2, data.m_index);
- }
-
- public int getDutyCycleOutput(int dutyCycleHandle) {
- BaseStore data = m_propertyMap.get(dutyCycleHandle);
- if (data == null) {
- data = addSensorInternal(dutyCycleHandle);
- }
- return readValue(data.m_valueType, data.m_index);
- }
-}
diff --git a/hal/src/main/native/cpp/jni/DMAJNI.cpp b/hal/src/main/native/cpp/jni/DMAJNI.cpp
deleted file mode 100644
index 77900e304ab..00000000000
--- a/hal/src/main/native/cpp/jni/DMAJNI.cpp
+++ /dev/null
@@ -1,418 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#include
-#include
-
-#include
-
-#include "HALUtil.h"
-#include "edu_wpi_first_hal_DMAJNI.h"
-#include "hal/DMA.h"
-#include "hal/handles/HandlesInternal.h"
-
-using namespace hal;
-using namespace wpi::java;
-
-namespace hal {
-bool GetEncoderBaseHandle(HAL_EncoderHandle handle,
- HAL_FPGAEncoderHandle* fpgaEncoderHandle,
- HAL_CounterHandle* counterHandle);
-} // namespace hal
-
-extern "C" {
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: initialize
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL
-Java_edu_wpi_first_hal_DMAJNI_initialize
- (JNIEnv* env, jclass)
-{
- int32_t status = 0;
- auto handle = HAL_InitializeDMA(&status);
- CheckStatusForceThrow(env, status);
- return handle;
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: free
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_free
- (JNIEnv* env, jclass, jint handle)
-{
- if (handle != HAL_kInvalidHandle) {
- HAL_FreeDMA(handle);
- }
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: setPause
- * Signature: (IZ)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_setPause
- (JNIEnv* env, jclass, jint handle, jboolean pause)
-{
- int32_t status = 0;
- HAL_SetDMAPause(handle, pause, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: setTimedTrigger
- * Signature: (ID)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_setTimedTrigger
- (JNIEnv* env, jclass, jint handle, jdouble seconds)
-{
- int32_t status = 0;
- HAL_SetDMATimedTrigger(handle, seconds, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: setTimedTriggerCycles
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_setTimedTriggerCycles
- (JNIEnv* env, jclass, jint handle, jint cycles)
-{
- int32_t status = 0;
- HAL_SetDMATimedTriggerCycles(handle, static_cast(cycles), &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addEncoder
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addEncoder
- (JNIEnv* env, jclass, jint handle, jint encoderHandle)
-{
- int32_t status = 0;
- HAL_AddDMAEncoder(handle, encoderHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addEncoderPeriod
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addEncoderPeriod
- (JNIEnv* env, jclass, jint handle, jint encoderHandle)
-{
- int32_t status = 0;
- HAL_AddDMAEncoderPeriod(handle, encoderHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addCounter
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addCounter
- (JNIEnv* env, jclass, jint handle, jint counterHandle)
-{
- int32_t status = 0;
- HAL_AddDMACounter(handle, counterHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addCounterPeriod
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addCounterPeriod
- (JNIEnv* env, jclass, jint handle, jint counterHandle)
-{
- int32_t status = 0;
- HAL_AddDMACounterPeriod(handle, counterHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addDutyCycle
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addDutyCycle
- (JNIEnv* env, jclass, jint handle, jint dutyCycleHandle)
-{
- int32_t status = 0;
- HAL_AddDMADutyCycle(handle, dutyCycleHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addDigitalSource
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addDigitalSource
- (JNIEnv* env, jclass, jint handle, jint digitalSourceHandle)
-{
- int32_t status = 0;
- HAL_AddDMADigitalSource(handle, digitalSourceHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addAnalogInput
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addAnalogInput
- (JNIEnv* env, jclass, jint handle, jint analogInputHandle)
-{
- int32_t status = 0;
- HAL_AddDMAAnalogInput(handle, analogInputHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addAveragedAnalogInput
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addAveragedAnalogInput
- (JNIEnv* env, jclass, jint handle, jint analogInputHandle)
-{
- int32_t status = 0;
- HAL_AddDMAAveragedAnalogInput(handle, analogInputHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: addAnalogAccumulator
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_addAnalogAccumulator
- (JNIEnv* env, jclass, jint handle, jint analogInputHandle)
-{
- int32_t status = 0;
- HAL_AddDMAAnalogAccumulator(handle, analogInputHandle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: setExternalTrigger
- * Signature: (IIIZZ)I
- */
-JNIEXPORT jint JNICALL
-Java_edu_wpi_first_hal_DMAJNI_setExternalTrigger
- (JNIEnv* env, jclass, jint handle, jint digitalSourceHandle,
- jint analogTriggerType, jboolean rising, jboolean falling)
-{
- int32_t status = 0;
- int32_t idx = HAL_SetDMAExternalTrigger(
- handle, digitalSourceHandle,
- static_cast(analogTriggerType), rising, falling,
- &status);
- CheckStatus(env, status);
- return idx;
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: clearSensors
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_clearSensors
- (JNIEnv* env, jclass, jint handle)
-{
- int32_t status = 0;
- HAL_ClearDMASensors(handle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: clearExternalTriggers
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_clearExternalTriggers
- (JNIEnv* env, jclass, jint handle)
-{
- int32_t status = 0;
- HAL_ClearDMAExternalTriggers(handle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: startDMA
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_startDMA
- (JNIEnv* env, jclass, jint handle, jint queueDepth)
-{
- int32_t status = 0;
- HAL_StartDMA(handle, queueDepth, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: stopDMA
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL
-Java_edu_wpi_first_hal_DMAJNI_stopDMA
- (JNIEnv* env, jclass, jint handle)
-{
- int32_t status = 0;
- HAL_StopDMA(handle, &status);
- CheckStatus(env, status);
-}
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: readDMA
- * Signature: (ID[I[I)J
- */
-JNIEXPORT jlong JNICALL
-Java_edu_wpi_first_hal_DMAJNI_readDMA
- (JNIEnv* env, jclass, jint handle, jdouble timeoutSeconds, jintArray buf,
- jintArray store)
-{
- int32_t status = 0;
- HAL_DMASample dmaSample;
- std::memset(&dmaSample, 0, sizeof(dmaSample));
- int32_t remaining = 0;
- HAL_DMAReadStatus readStatus =
- HAL_ReadDMA(handle, &dmaSample, timeoutSeconds, &remaining, &status);
- CheckStatus(env, status);
-
- static_assert(sizeof(uint32_t) == sizeof(jint), "Java ints must be 32 bits");
-
- env->SetIntArrayRegion(buf, 0, dmaSample.captureSize,
- reinterpret_cast(dmaSample.readBuffer));
-
- CriticalJSpan nativeArr{env, store};
-
- std::copy_n(
- dmaSample.channelOffsets,
- sizeof(dmaSample.channelOffsets) / sizeof(dmaSample.channelOffsets[0]),
- nativeArr.data());
- nativeArr[22] = static_cast(dmaSample.captureSize);
- nativeArr[23] = static_cast(dmaSample.triggerChannels);
- nativeArr[24] = remaining;
- nativeArr[25] = readStatus;
-
- return dmaSample.timeStamp;
-}
-
-// TODO sync these up
-enum DMAOffsetConstants {
- kEnable_AI0_Low = 0,
- kEnable_AI0_High = 1,
- kEnable_AIAveraged0_Low = 2,
- kEnable_AIAveraged0_High = 3,
- kEnable_AI1_Low = 4,
- kEnable_AI1_High = 5,
- kEnable_AIAveraged1_Low = 6,
- kEnable_AIAveraged1_High = 7,
- kEnable_Accumulator0 = 8,
- kEnable_Accumulator1 = 9,
- kEnable_DI = 10,
- kEnable_AnalogTriggers = 11,
- kEnable_Counters_Low = 12,
- kEnable_Counters_High = 13,
- kEnable_CounterTimers_Low = 14,
- kEnable_CounterTimers_High = 15,
- kEnable_Encoders_Low = 16,
- kEnable_Encoders_High = 17,
- kEnable_EncoderTimers_Low = 18,
- kEnable_EncoderTimers_High = 19,
- kEnable_DutyCycle_Low = 20,
- kEnable_DutyCycle_High = 21,
-};
-
-/*
- * Class: edu_wpi_first_hal_DMAJNI
- * Method: getSensorReadData
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL
-Java_edu_wpi_first_hal_DMAJNI_getSensorReadData
- (JNIEnv* env, jclass, jint handle)
-{
- HAL_Handle halHandle = static_cast(handle);
-
- // Check for encoder/counter handle
- HAL_FPGAEncoderHandle fpgaEncoderHandle = 0;
- HAL_CounterHandle counterHandle = 0;
- bool validEncoderHandle =
- hal::GetEncoderBaseHandle(halHandle, &fpgaEncoderHandle, &counterHandle);
-
- if (validEncoderHandle) {
- if (counterHandle != HAL_kInvalidHandle) {
- int32_t cindex = getHandleIndex(counterHandle);
- if (cindex < 4) {
- return CreateDMABaseStore(env, kEnable_Counters_Low, cindex);
- } else {
- return CreateDMABaseStore(env, kEnable_Counters_High, cindex - 4);
- }
- } else {
- int32_t cindex = getHandleIndex(fpgaEncoderHandle);
- if (cindex < 4) {
- return CreateDMABaseStore(env, kEnable_Encoders_Low, cindex);
- } else {
- return CreateDMABaseStore(env, kEnable_Encoders_High, cindex - 4);
- }
- }
- }
-
- HAL_HandleEnum handleType = getHandleType(halHandle);
- int32_t index = getHandleIndex(halHandle);
- if (handleType == HAL_HandleEnum::DIO) {
- return CreateDMABaseStore(env, kEnable_DI, index);
- } else if (handleType == HAL_HandleEnum::AnalogTrigger) {
- return CreateDMABaseStore(env, kEnable_AnalogTriggers, index);
- } else if (handleType == HAL_HandleEnum::AnalogInput) {
- if (index < 4) {
- return CreateDMABaseStore(env, kEnable_AI0_Low, index);
- } else {
- return CreateDMABaseStore(env, kEnable_AI0_High, index - 4);
- }
- } else if (handleType == HAL_HandleEnum::DutyCycle) {
- if (index < 4) {
- return CreateDMABaseStore(env, kEnable_DutyCycle_Low, index);
- } else {
- return CreateDMABaseStore(env, kEnable_DutyCycle_High, index - 4);
- }
- } else {
- return nullptr;
- }
-}
-
-} // extern "C"
diff --git a/hal/src/main/native/cpp/jni/HALUtil.cpp b/hal/src/main/native/cpp/jni/HALUtil.cpp
index 8afd008a130..192ea1dfee6 100644
--- a/hal/src/main/native/cpp/jni/HALUtil.cpp
+++ b/hal/src/main/native/cpp/jni/HALUtil.cpp
@@ -54,7 +54,6 @@ static JClass matchInfoDataCls;
static JClass canDataCls;
static JClass canStreamMessageCls;
static JClass halValueCls;
-static JClass baseStoreCls;
static JClass revPHVersionCls;
static JClass canStreamOverflowExCls;
@@ -67,7 +66,6 @@ static const JClassInit classes[] = {
{"edu/wpi/first/hal/CANData", &canDataCls},
{"edu/wpi/first/hal/CANStreamMessage", &canStreamMessageCls},
{"edu/wpi/first/hal/HALValue", &halValueCls},
- {"edu/wpi/first/hal/DMAJNISample$BaseStore", &baseStoreCls},
{"edu/wpi/first/hal/REVPHVersion", &revPHVersionCls},
{"edu/wpi/first/hal/can/CANStreamOverflowException",
&canStreamOverflowExCls}};
@@ -353,11 +351,6 @@ jobject CreateHALValue(JNIEnv* env, const HAL_Value& value) {
halValueCls, fromNative, static_cast(value.type), value1, value2);
}
-jobject CreateDMABaseStore(JNIEnv* env, jint valueType, jint index) {
- static jmethodID ctor = env->GetMethodID(baseStoreCls, "", "(II)V");
- return env->NewObject(baseStoreCls, ctor, valueType, index);
-}
-
jobject CreatePowerDistributionVersion(JNIEnv* env, uint32_t firmwareMajor,
uint32_t firmwareMinor,
uint32_t firmwareFix,
diff --git a/hal/src/main/native/cpp/jni/HALUtil.h b/hal/src/main/native/cpp/jni/HALUtil.h
index ca4bd959f03..739e786491a 100644
--- a/hal/src/main/native/cpp/jni/HALUtil.h
+++ b/hal/src/main/native/cpp/jni/HALUtil.h
@@ -84,8 +84,6 @@ jbyteArray SetCANStreamObject(JNIEnv* env, jobject canStreamData,
jobject CreateHALValue(JNIEnv* env, const HAL_Value& value);
-jobject CreateDMABaseStore(JNIEnv* env, jint valueType, jint index);
-
jobject CreatePowerDistributionVersion(JNIEnv* env, uint32_t firmwareMajor,
uint32_t firmwareMinor,
uint32_t firmwareFix,
diff --git a/hal/src/main/native/include/hal/DMA.h b/hal/src/main/native/include/hal/DMA.h
deleted file mode 100644
index 2d570a40320..00000000000
--- a/hal/src/main/native/include/hal/DMA.h
+++ /dev/null
@@ -1,458 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#pragma once
-
-#include "hal/AnalogTrigger.h"
-#include "hal/Types.h"
-
-/**
- * @defgroup hal_dma DMA Functions
- * @ingroup hal_capi
- * @{
- */
-
-/**
- * The DMA Read Status.
- */
-HAL_ENUM(HAL_DMAReadStatus) {
- HAL_DMA_OK = 1,
- HAL_DMA_TIMEOUT = 2,
- HAL_DMA_ERROR = 3,
-};
-
-/**
- * Buffer for containing all DMA data for a specific sample.
- */
-struct HAL_DMASample {
- uint32_t readBuffer[74];
- int32_t channelOffsets[22];
- uint64_t timeStamp;
- uint32_t captureSize;
- uint8_t triggerChannels;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Initializes an object for performing DMA transfers.
- *
- * @param[out] status Error status variable. 0 on success.
- * @return the created dma handle
- */
-HAL_DMAHandle HAL_InitializeDMA(int32_t* status);
-
-/**
- * Frees a DMA object.
- *
- * @param handle the dma handle
- */
-void HAL_FreeDMA(HAL_DMAHandle handle);
-
-/**
- * Pauses or unpauses a DMA transfer.
- *
- * This can only be called while DMA is running.
- *
- * @param[in] handle the dma handle
- * @param[in] pause true to pause transfers, false to resume.
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_SetDMAPause(HAL_DMAHandle handle, HAL_Bool pause, int32_t* status);
-
-/**
- * Sets DMA transfers to occur at a specific timed interval.
- *
- * This will remove any external triggers. Only timed or external is supported.
- *
- * Only 1 timed period is supported.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] periodSeconds the period to trigger in seconds
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_SetDMATimedTrigger(HAL_DMAHandle handle, double periodSeconds,
- int32_t* status);
-
-/**
- * Sets DMA transfers to occur at a specific timed interval in FPGA cycles.
- *
- * This will remove any external triggers. Only timed or external is supported.
- *
- * Only 1 timed period is supported
- *
- * The FPGA currently runs at 40 MHz, but this can change.
- * HAL_GetSystemClockTicksPerMicrosecond can be used to get a computable value
- * for this.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] cycles the period to trigger in FPGA cycles
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_SetDMATimedTriggerCycles(HAL_DMAHandle handle, uint32_t cycles,
- int32_t* status);
-
-/**
- * Adds position data for an encoder to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] encoderHandle the encoder to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMAEncoder(HAL_DMAHandle handle, HAL_EncoderHandle encoderHandle,
- int32_t* status);
-
-/**
- * Adds timer data for an encoder to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] encoderHandle the encoder to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMAEncoderPeriod(HAL_DMAHandle handle,
- HAL_EncoderHandle encoderHandle, int32_t* status);
-
-/**
- * Adds position data for an counter to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] counterHandle the counter to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMACounter(HAL_DMAHandle handle, HAL_CounterHandle counterHandle,
- int32_t* status);
-
-/**
- * Adds timer data for an counter to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] counterHandle the counter to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMACounterPeriod(HAL_DMAHandle handle,
- HAL_CounterHandle counterHandle, int32_t* status);
-
-/**
- * Adds a digital source to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] digitalSourceHandle the digital source to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMADigitalSource(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle, int32_t* status);
-
-/**
- * Adds an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] aInHandle the analog input to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMAAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle, int32_t* status);
-
-/**
- * Adds averaged data of an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] aInHandle the analog input to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMAAveragedAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status);
-
-/**
- * Adds accumulator data of an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] aInHandle the analog input to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMAAnalogAccumulator(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status);
-
-/**
- * Adds a duty cycle input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] dutyCycleHandle the duty cycle input to add
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_AddDMADutyCycle(HAL_DMAHandle handle,
- HAL_DutyCycleHandle dutyCycleHandle, int32_t* status);
-
-/**
- * Sets DMA transfers to occur on an external trigger.
- *
- * This will remove any timed trigger set. Only timed or external is supported.
- *
- * Up to 8 external triggers are currently supported.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[in] digitalSourceHandle the digital source handle (either a
- * HAL_AnalogTriggerHandle or a
- * HAL_DigitalHandle)
- * @param[in] analogTriggerType the analog trigger type if the source is an
- * analog trigger
- * @param[in] rising true to trigger on rising edge
- * @param[in] falling true to trigger on falling edge
- * @param[out] status Error status variable. 0 on success.
- * @return the index of the trigger
- */
-int32_t HAL_SetDMAExternalTrigger(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle,
- HAL_AnalogTriggerType analogTriggerType,
- HAL_Bool rising, HAL_Bool falling,
- int32_t* status);
-
-/**
- * Clear all sensors from the DMA collection list.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_ClearDMASensors(HAL_DMAHandle handle, int32_t* status);
-
-/**
- * Clear all external triggers from the DMA trigger list.
- *
- * This can only be called if DMA is not started.
- *
- * @param[in] handle the dma handle
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_ClearDMAExternalTriggers(HAL_DMAHandle handle, int32_t* status);
-
-/**
- * Starts DMA Collection.
- *
- * @param[in] handle the dma handle
- * @param[in] queueDepth the number of objects to be able to queue
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_StartDMA(HAL_DMAHandle handle, int32_t queueDepth, int32_t* status);
-
-/**
- * Stops DMA Collection.
- *
- * @param[in] handle the dma handle
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_StopDMA(HAL_DMAHandle handle, int32_t* status);
-
-/**
- * Gets the direct pointer to the DMA object.
- *
- * This is only to be used if absolute maximum performance is required. This
- * will only be valid until the handle is freed.
- *
- * @param handle the dma handle
- */
-void* HAL_GetDMADirectPointer(HAL_DMAHandle handle);
-
-/**
- * Reads a DMA sample using a direct DMA pointer.
- *
- * See HAL_ReadDMA for full documentation.
- *
- * @param[in] dmaPointer direct DMA pointer
- * @param[in] dmaSample the sample object to place data into
- * @param[in] timeoutSeconds the time to wait for data to be queued before
- * timing out
- * @param[in] remainingOut the number of samples remaining in the queue
- * @param[out] status Error status variable. 0 on success.
- */
-enum HAL_DMAReadStatus HAL_ReadDMADirect(void* dmaPointer,
- HAL_DMASample* dmaSample,
- double timeoutSeconds,
- int32_t* remainingOut,
- int32_t* status);
-
-/**
- * Reads a DMA sample from the queue.
- *
- *
- * @param[in] handle the dma handle
- * @param[in] dmaSample the sample object to place data into
- * @param[in] timeoutSeconds the time to wait for data to be queued before
- * timing out
- * @param[in] remainingOut the number of samples remaining in the queue
- * @param[out] status Error status variable. 0 on success.
- * @return the success result of the sample read
- */
-enum HAL_DMAReadStatus HAL_ReadDMA(HAL_DMAHandle handle,
- HAL_DMASample* dmaSample,
- double timeoutSeconds, int32_t* remainingOut,
- int32_t* status);
-
-// The following are helper functions for reading data from samples
-
-/**
- * Returns the timestamp of the sample.
- * This is in the same time domain as HAL_GetFPGATime().
- *
- * @param[in] dmaSample the sample to read from
- * @param[out] status Error status variable. 0 on success.
- * @return timestamp in microseconds since FPGA Initialization
- */
-uint64_t HAL_GetDMASampleTime(const HAL_DMASample* dmaSample, int32_t* status);
-
-/**
- * Returns the raw distance data for an encoder from the sample.
- *
- * This can be scaled with DistancePerPulse and DecodingScaleFactor to match the
- * result of GetDistance()
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] encoderHandle the encoder handle
- * @param[out] status Error status variable. 0 on success.
- * @return raw encoder ticks
- */
-int32_t HAL_GetDMASampleEncoderRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status);
-
-/**
- * Returns the distance data for an counter from the sample.
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] counterHandle the counter handle
- * @param[out] status Error status variable. 0 on success.
- * @return counter ticks
- */
-int32_t HAL_GetDMASampleCounter(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status);
-
-/**
- * Returns the raw period data for an encoder from the sample.
- *
- * This can be scaled with DistancePerPulse and DecodingScaleFactor to match the
- * result of GetRate()
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] encoderHandle the encoder handle
- * @param[out] status Error status variable. 0 on success.
- * @return raw encoder period
- */
-int32_t HAL_GetDMASampleEncoderPeriodRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status);
-
-/**
- * Returns the period data for an counter from the sample.
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] counterHandle the counter handle
- * @param[out] status Error status variable. 0 on success.
- * @return counter period
- */
-int32_t HAL_GetDMASampleCounterPeriod(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status);
-
-/**
- * Returns the state of a digital source from the sample.
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] dSourceHandle the digital source handle
- * @param[out] status Error status variable. 0 on success.
- * @return digital source state
- */
-HAL_Bool HAL_GetDMASampleDigitalSource(const HAL_DMASample* dmaSample,
- HAL_Handle dSourceHandle,
- int32_t* status);
-
-/**
- * Returns the raw analog data for an analog input from the sample.
- *
- * This can be scaled with HAL_GetAnalogValueToVolts to match GetVoltage().
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] aInHandle the analog input handle
- * @param[out] status Error status variable. 0 on success.
- * @return raw analog data
- */
-int32_t HAL_GetDMASampleAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status);
-
-/**
- * Returns the raw averaged analog data for an analog input from the sample.
- *
- * This can be scaled with HAL_GetAnalogValueToVolts to match
- * GetAveragedVoltage().
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] aInHandle the analog input handle
- * @param[out] status Error status variable. 0 on success.
- * @return raw averaged analog data
- */
-int32_t HAL_GetDMASampleAveragedAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status);
-
-/**
- * Returns the analog accumulator data for an analog input from the sample.
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] aInHandle the analog input handle
- * @param[in] count the accumulator count
- * @param[in] value the accumulator value
- * @param[out] status Error status variable. 0 on success.
- */
-void HAL_GetDMASampleAnalogAccumulator(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int64_t* count, int64_t* value,
- int32_t* status);
-
-/**
- * Returns the raw duty cycle input ratio data from the sample.
- *
- * Use HAL_GetDutyCycleOutputScaleFactor to scale this to a percentage.
- *
- * @param[in] dmaSample the sample to read from
- * @param[in] dutyCycleHandle the duty cycle handle
- * @param[out] status Error status variable. 0 on success.
- * @return raw duty cycle input data
- */
-int32_t HAL_GetDMASampleDutyCycleOutputRaw(const HAL_DMASample* dmaSample,
- HAL_DutyCycleHandle dutyCycleHandle,
- int32_t* status);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-/** @} */
diff --git a/hal/src/main/native/sim/DMA.cpp b/hal/src/main/native/sim/DMA.cpp
deleted file mode 100644
index c000ac53024..00000000000
--- a/hal/src/main/native/sim/DMA.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#include "hal/DMA.h"
-
-extern "C" {
-HAL_DMAHandle HAL_InitializeDMA(int32_t* status) {
- return HAL_kInvalidHandle;
-}
-void HAL_FreeDMA(HAL_DMAHandle handle) {}
-
-void HAL_SetDMAPause(HAL_DMAHandle handle, HAL_Bool pause, int32_t* status) {}
-void HAL_SetDMATimedTrigger(HAL_DMAHandle handle, double periodSeconds,
- int32_t* status) {}
-void HAL_SetDMATimedTriggerCycles(HAL_DMAHandle handle, uint32_t cycles,
- int32_t* status) {}
-
-void HAL_AddDMAEncoder(HAL_DMAHandle handle, HAL_EncoderHandle encoderHandle,
- int32_t* status) {}
-void HAL_AddDMAEncoderPeriod(HAL_DMAHandle handle,
- HAL_EncoderHandle encoderHandle, int32_t* status) {
-}
-void HAL_AddDMACounter(HAL_DMAHandle handle, HAL_CounterHandle counterHandle,
- int32_t* status) {}
-void HAL_AddDMACounterPeriod(HAL_DMAHandle handle,
- HAL_CounterHandle counterHandle, int32_t* status) {
-}
-void HAL_AddDMADigitalSource(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle, int32_t* status) {}
-void HAL_AddDMAAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle, int32_t* status) {}
-
-void HAL_AddDMAAveragedAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {}
-
-void HAL_AddDMAAnalogAccumulator(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {}
-
-void HAL_AddDMADutyCycle(HAL_DMAHandle handle,
- HAL_DutyCycleHandle dutyCycleHandle, int32_t* status) {
-}
-
-int32_t HAL_SetDMAExternalTrigger(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle,
- HAL_AnalogTriggerType analogTriggerType,
- HAL_Bool rising, HAL_Bool falling,
- int32_t* status) {
- return 0;
-}
-
-void HAL_ClearDMASensors(HAL_DMAHandle handle, int32_t* status) {}
-void HAL_ClearDMAExternalTriggers(HAL_DMAHandle handle, int32_t* status) {}
-
-void HAL_StartDMA(HAL_DMAHandle handle, int32_t queueDepth, int32_t* status) {}
-void HAL_StopDMA(HAL_DMAHandle handle, int32_t* status) {}
-
-void* HAL_GetDMADirectPointer(HAL_DMAHandle handle) {
- return nullptr;
-}
-
-enum HAL_DMAReadStatus HAL_ReadDMADirect(void* dmaPointer,
- HAL_DMASample* dmaSample,
- double timeoutSeconds,
- int32_t* remainingOut,
- int32_t* status) {
- return HAL_DMA_ERROR;
-}
-
-enum HAL_DMAReadStatus HAL_ReadDMA(HAL_DMAHandle handle,
- HAL_DMASample* dmaSample,
- double timeoutSeconds, int32_t* remainingOut,
- int32_t* status) {
- return HAL_DMA_ERROR;
-}
-
-// Sampling Code
-uint64_t HAL_GetDMASampleTime(const HAL_DMASample* dmaSample, int32_t* status) {
- return 0;
-}
-
-int32_t HAL_GetDMASampleEncoderRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status) {
- return 0;
-}
-
-int32_t HAL_GetDMASampleCounter(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status) {
- return 0;
-}
-
-int32_t HAL_GetDMASampleEncoderPeriodRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status) {
- return 0;
-}
-
-int32_t HAL_GetDMASampleCounterPeriod(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status) {
- return 0;
-}
-HAL_Bool HAL_GetDMASampleDigitalSource(const HAL_DMASample* dmaSample,
- HAL_Handle dSourceHandle,
- int32_t* status) {
- return 0;
-}
-int32_t HAL_GetDMASampleAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- return 0;
-}
-
-int32_t HAL_GetDMASampleAveragedAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- return 0;
-}
-
-void HAL_GetDMASampleAnalogAccumulator(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int64_t* count, int64_t* value,
- int32_t* status) {}
-
-int32_t HAL_GetDMASampleDutyCycleOutputRaw(const HAL_DMASample* dmaSample,
- HAL_DutyCycleHandle dutyCycleHandle,
- int32_t* status) {
- return 0;
-}
-} // extern "C"
diff --git a/hal/src/main/native/systemcore/DMA.cpp b/hal/src/main/native/systemcore/DMA.cpp
deleted file mode 100644
index 653b40e0217..00000000000
--- a/hal/src/main/native/systemcore/DMA.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#include "hal/DMA.h"
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include "PortsInternal.h"
-#include "hal/AnalogInput.h"
-#include "hal/Errors.h"
-#include "hal/HALBase.h"
-#include "hal/handles/HandlesInternal.h"
-#include "hal/handles/LimitedHandleResource.h"
-#include "hal/handles/UnlimitedHandleResource.h"
-
-using namespace hal;
-
-static_assert(std::is_standard_layout_v,
- "HAL_DMASample must have standard layout");
-
-namespace hal::init {
-void InitializeDMA() {}
-} // namespace hal::init
-
-extern "C" {
-
-HAL_DMAHandle HAL_InitializeDMA(int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return HAL_kInvalidHandle;
-}
-
-void HAL_FreeDMA(HAL_DMAHandle handle) {}
-
-void HAL_SetDMAPause(HAL_DMAHandle handle, HAL_Bool pause, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_SetDMATimedTrigger(HAL_DMAHandle handle, double seconds,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_SetDMATimedTriggerCycles(HAL_DMAHandle handle, uint32_t cycles,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMAEncoder(HAL_DMAHandle handle, HAL_EncoderHandle encoderHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMAEncoderPeriod(HAL_DMAHandle handle,
- HAL_EncoderHandle encoderHandle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMACounter(HAL_DMAHandle handle, HAL_CounterHandle counterHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMACounterPeriod(HAL_DMAHandle handle,
- HAL_CounterHandle counterHandle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMADigitalSource(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMAAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMADutyCycle(HAL_DMAHandle handle,
- HAL_DutyCycleHandle dutyCycleHandle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMAAveragedAnalogInput(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_AddDMAAnalogAccumulator(HAL_DMAHandle handle,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-int32_t HAL_SetDMAExternalTrigger(HAL_DMAHandle handle,
- HAL_Handle digitalSourceHandle,
- HAL_AnalogTriggerType analogTriggerType,
- HAL_Bool rising, HAL_Bool falling,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-void HAL_ClearDMASensors(HAL_DMAHandle handle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_ClearDMAExternalTriggers(HAL_DMAHandle handle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_StartDMA(HAL_DMAHandle handle, int32_t queueDepth, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void HAL_StopDMA(HAL_DMAHandle handle, int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-void* HAL_GetDMADirectPointer(HAL_DMAHandle handle) {
- return nullptr;
-}
-
-enum HAL_DMAReadStatus HAL_ReadDMADirect(void* dmaPointer,
- HAL_DMASample* dmaSample,
- double timeoutSeconds,
- int32_t* remainingOut,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return HAL_DMAReadStatus::HAL_DMA_ERROR;
-}
-
-enum HAL_DMAReadStatus HAL_ReadDMA(HAL_DMAHandle handle,
- HAL_DMASample* dmaSample,
- double timeoutSeconds, int32_t* remainingOut,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return HAL_DMAReadStatus::HAL_DMA_ERROR;
-}
-
-uint64_t HAL_GetDMASampleTime(const HAL_DMASample* dmaSample, int32_t* status) {
- return dmaSample->timeStamp;
-}
-
-int32_t HAL_GetDMASampleEncoderRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-int32_t HAL_GetDMASampleEncoderPeriodRaw(const HAL_DMASample* dmaSample,
- HAL_EncoderHandle encoderHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-int32_t HAL_GetDMASampleCounter(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-int32_t HAL_GetDMASampleCounterPeriod(const HAL_DMASample* dmaSample,
- HAL_CounterHandle counterHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-HAL_Bool HAL_GetDMASampleDigitalSource(const HAL_DMASample* dmaSample,
- HAL_Handle dSourceHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return false;
-}
-int32_t HAL_GetDMASampleAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-int32_t HAL_GetDMASampleAveragedAnalogInputRaw(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-
-void HAL_GetDMASampleAnalogAccumulator(const HAL_DMASample* dmaSample,
- HAL_AnalogInputHandle aInHandle,
- int64_t* count, int64_t* value,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return;
-}
-
-int32_t HAL_GetDMASampleDutyCycleOutputRaw(const HAL_DMASample* dmaSample,
- HAL_DutyCycleHandle dutyCycleHandle,
- int32_t* status) {
- *status = HAL_HANDLE_ERROR;
- return 0;
-}
-} // extern "C"
diff --git a/hal/src/main/native/systemcore/HAL.cpp b/hal/src/main/native/systemcore/HAL.cpp
index 4afdf94d3b9..2f7ccd5af53 100644
--- a/hal/src/main/native/systemcore/HAL.cpp
+++ b/hal/src/main/native/systemcore/HAL.cpp
@@ -57,7 +57,6 @@ void InitializeHAL() {
InitializeConstants();
InitializeCounter();
InitializeDIO();
- InitializeDMA();
InitializeDutyCycle();
InitializeEncoder();
InitializeFRCDriverStation();
diff --git a/hal/src/main/native/systemcore/HALInitializer.h b/hal/src/main/native/systemcore/HALInitializer.h
index 848ef0e84a9..5fb929bc4c0 100644
--- a/hal/src/main/native/systemcore/HALInitializer.h
+++ b/hal/src/main/native/systemcore/HALInitializer.h
@@ -29,7 +29,6 @@ extern void InitializeConstants();
extern void InitializeCounter();
extern void InitializeDigitalInternal();
extern void InitializeDIO();
-extern void InitializeDMA();
extern void InitializeDutyCycle();
extern void InitializeEncoder();
extern void InitializeFPGAEncoder();
diff --git a/shared/examplecheck.gradle b/shared/examplecheck.gradle
index 719c43bbac8..32869257323 100644
--- a/shared/examplecheck.gradle
+++ b/shared/examplecheck.gradle
@@ -72,7 +72,7 @@ def tagList = [
"LQR", "Pose Estimator",
/* --- Hardware --- */
- "Analog", "Ultrasonic", "Gyro", "Pneumatics", "I2C", "Duty Cycle", "PDP", "DMA",
+ "Analog", "Ultrasonic", "Gyro", "Pneumatics", "I2C", "Duty Cycle", "PDP",
"AddressableLEDs", "HAL", "Encoder", "Smart Motor Controller", "Digital Input",
"Digital Output",
diff --git a/wpilibc/src/main/native/cpp/DMA.cpp b/wpilibc/src/main/native/cpp/DMA.cpp
deleted file mode 100644
index 5661af28820..00000000000
--- a/wpilibc/src/main/native/cpp/DMA.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#include "frc/DMA.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include "frc/Errors.h"
-
-using namespace frc;
-
-DMA::DMA() {
- int32_t status = 0;
- dmaHandle = HAL_InitializeDMA(&status);
- FRC_CheckErrorStatus(status, "InitializeDMA");
-}
-
-void DMA::SetPause(bool pause) {
- int32_t status = 0;
- HAL_SetDMAPause(dmaHandle, pause, &status);
- FRC_CheckErrorStatus(status, "SetPause");
-}
-
-void DMA::SetTimedTrigger(units::second_t period) {
- int32_t status = 0;
- HAL_SetDMATimedTrigger(dmaHandle, period.value(), &status);
- FRC_CheckErrorStatus(status, "SetTimedTrigger");
-}
-
-void DMA::SetTimedTriggerCycles(int cycles) {
- int32_t status = 0;
- HAL_SetDMATimedTriggerCycles(dmaHandle, cycles, &status);
- FRC_CheckErrorStatus(status, "SetTimedTriggerCycles");
-}
-
-void DMA::AddEncoder(const Encoder* encoder) {
- int32_t status = 0;
- HAL_AddDMAEncoder(dmaHandle, encoder->m_encoder, &status);
- FRC_CheckErrorStatus(status, "AddEncoder");
-}
-
-void DMA::AddEncoderPeriod(const Encoder* encoder) {
- int32_t status = 0;
- HAL_AddDMAEncoderPeriod(dmaHandle, encoder->m_encoder, &status);
- FRC_CheckErrorStatus(status, "AddEncoderPeriod");
-}
-
-void DMA::AddCounter(const Counter* counter) {
- int32_t status = 0;
- HAL_AddDMACounter(dmaHandle, counter->m_counter, &status);
- FRC_CheckErrorStatus(status, "AddCounter");
-}
-
-void DMA::AddCounterPeriod(const Counter* counter) {
- int32_t status = 0;
- HAL_AddDMACounterPeriod(dmaHandle, counter->m_counter, &status);
- FRC_CheckErrorStatus(status, "AddCounterPeriod");
-}
-
-void DMA::AddDigitalSource(const DigitalSource* digitalSource) {
- int32_t status = 0;
- HAL_AddDMADigitalSource(dmaHandle, digitalSource->GetPortHandleForRouting(),
- &status);
- FRC_CheckErrorStatus(status, "AddDigitalSource");
-}
-
-void DMA::AddDutyCycle(const DutyCycle* dutyCycle) {
- int32_t status = 0;
- HAL_AddDMADutyCycle(dmaHandle, dutyCycle->m_handle, &status);
- FRC_CheckErrorStatus(status, "AddDutyCycle");
-}
-
-void DMA::AddAnalogInput(const AnalogInput* analogInput) {
- int32_t status = 0;
- HAL_AddDMAAnalogInput(dmaHandle, analogInput->m_port, &status);
- FRC_CheckErrorStatus(status, "AddAnalogInput");
-}
-
-void DMA::AddAveragedAnalogInput(const AnalogInput* analogInput) {
- int32_t status = 0;
- HAL_AddDMAAveragedAnalogInput(dmaHandle, analogInput->m_port, &status);
- FRC_CheckErrorStatus(status, "AddAveragedAnalogInput");
-}
-
-void DMA::AddAnalogAccumulator(const AnalogInput* analogInput) {
- int32_t status = 0;
- HAL_AddDMAAnalogAccumulator(dmaHandle, analogInput->m_port, &status);
- FRC_CheckErrorStatus(status, "AddAnalogAccumulator");
-}
-
-int DMA::SetExternalTrigger(DigitalSource* source, bool rising, bool falling) {
- int32_t status = 0;
- int32_t idx =
- HAL_SetDMAExternalTrigger(dmaHandle, source->GetPortHandleForRouting(),
- static_cast(
- source->GetAnalogTriggerTypeForRouting()),
- rising, falling, &status);
- FRC_CheckErrorStatus(status, "SetExternalTrigger");
- return idx;
-}
-
-int DMA::SetPwmEdgeTrigger(PWMMotorController* source, bool rising,
- bool falling) {
- int32_t status = 0;
- int32_t idx = HAL_SetDMAExternalTrigger(
- dmaHandle, source->GetPwm()->m_handle,
- HAL_AnalogTriggerType::HAL_Trigger_kInWindow, rising, falling, &status);
- FRC_CheckErrorStatus(status, "SetPWmEdgeTrigger");
- return idx;
-}
-
-int DMA::SetPwmEdgeTrigger(PWM* source, bool rising, bool falling) {
- int32_t status = 0;
- int32_t idx = HAL_SetDMAExternalTrigger(
- dmaHandle, source->m_handle, HAL_AnalogTriggerType::HAL_Trigger_kInWindow,
- rising, falling, &status);
- FRC_CheckErrorStatus(status, "SetPWmEdgeTrigger");
- return idx;
-}
-
-void DMA::ClearSensors() {
- int32_t status = 0;
- HAL_ClearDMASensors(dmaHandle, &status);
- FRC_CheckErrorStatus(status, "ClearSensors");
-}
-
-void DMA::ClearExternalTriggers() {
- int32_t status = 0;
- HAL_ClearDMAExternalTriggers(dmaHandle, &status);
- FRC_CheckErrorStatus(status, "ClearExternalTriggers");
-}
-
-void DMA::Start(int queueDepth) {
- int32_t status = 0;
- HAL_StartDMA(dmaHandle, queueDepth, &status);
- FRC_CheckErrorStatus(status, "Start");
-}
-
-void DMA::Stop() {
- int32_t status = 0;
- HAL_StopDMA(dmaHandle, &status);
- FRC_CheckErrorStatus(status, "Stop");
-}
diff --git a/wpilibc/src/main/native/include/frc/AnalogInput.h b/wpilibc/src/main/native/include/frc/AnalogInput.h
index 237f26d6550..401226036b5 100644
--- a/wpilibc/src/main/native/include/frc/AnalogInput.h
+++ b/wpilibc/src/main/native/include/frc/AnalogInput.h
@@ -13,9 +13,6 @@
namespace frc {
-class DMA;
-class DMASample;
-
/**
* Analog input class.
*
@@ -31,8 +28,6 @@ class DMASample;
class AnalogInput : public wpi::Sendable,
public wpi::SendableHelper {
friend class AnalogTrigger;
- friend class DMA;
- friend class DMASample;
public:
/**
diff --git a/wpilibc/src/main/native/include/frc/Counter.h b/wpilibc/src/main/native/include/frc/Counter.h
index eb8fe8835b9..85175cb9ed9 100644
--- a/wpilibc/src/main/native/include/frc/Counter.h
+++ b/wpilibc/src/main/native/include/frc/Counter.h
@@ -18,8 +18,6 @@
namespace frc {
class DigitalGlitchFilter;
-class DMA;
-class DMASample;
/**
* Class for counting the number of ticks on a digital input channel.
@@ -34,9 +32,6 @@ class DMASample;
class Counter : public CounterBase,
public wpi::Sendable,
public wpi::SendableHelper {
- friend class DMA;
- friend class DMASample;
-
public:
enum Mode {
kTwoPulse = 0,
diff --git a/wpilibc/src/main/native/include/frc/DMA.h b/wpilibc/src/main/native/include/frc/DMA.h
deleted file mode 100644
index d3d46ed8c9e..00000000000
--- a/wpilibc/src/main/native/include/frc/DMA.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#pragma once
-
-#include
-#include
-
-namespace frc {
-class Encoder;
-class Counter;
-class DigitalSource;
-class DutyCycle;
-class AnalogInput;
-class DMASample;
-class PWM;
-class PWMMotorController;
-
-/**
- * Class for configuring Direct Memory Access (DMA) of FPGA inputs.
- */
-class DMA {
- friend class DMASample;
-
- public:
- DMA();
-
- DMA& operator=(DMA&& other) = default;
- DMA(DMA&& other) = default;
-
- /**
- * Sets whether DMA is paused.
- *
- * @param pause True pauses DMA.
- */
- void SetPause(bool pause);
-
- /**
- * Sets DMA to trigger at an interval.
- *
- * @param period Period at which to trigger DMA.
- */
- void SetTimedTrigger(units::second_t period);
-
- /**
- * Sets number of DMA cycles to trigger.
- *
- * @param cycles Number of cycles.
- */
- void SetTimedTriggerCycles(int cycles);
-
- /**
- * Adds position data for an encoder to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param encoder Encoder to add to DMA.
- */
- void AddEncoder(const Encoder* encoder);
-
- /**
- * Adds timer data for an encoder to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param encoder Encoder to add to DMA.
- */
- void AddEncoderPeriod(const Encoder* encoder);
-
- /**
- * Adds position data for an counter to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param counter Counter to add to DMA.
- */
- void AddCounter(const Counter* counter);
-
- /**
- * Adds timer data for an counter to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param counter Counter to add to DMA.
- */
- void AddCounterPeriod(const Counter* counter);
-
- /**
- * Adds a digital source to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param digitalSource DigitalSource to add to DMA.
- */
- void AddDigitalSource(const DigitalSource* digitalSource);
-
- /**
- * Adds a digital source to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param digitalSource DigitalSource to add to DMA.
- */
- void AddDutyCycle(const DutyCycle* digitalSource);
-
- /**
- * Adds an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- void AddAnalogInput(const AnalogInput* analogInput);
-
- /**
- * Adds averaged data of an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- void AddAveragedAnalogInput(const AnalogInput* analogInput);
-
- /**
- * Adds accumulator data of an analog input to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- void AddAnalogAccumulator(const AnalogInput* analogInput);
-
- /**
- * Sets an external DMA trigger.
- *
- * @param source the source to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- int SetExternalTrigger(DigitalSource* source, bool rising, bool falling);
-
- /**
- * Sets a DMA PWM edge trigger.
- *
- * @param pwm the PWM to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- int SetPwmEdgeTrigger(PWM* pwm, bool rising, bool falling);
-
- /**
- * Sets a DMA PWMMotorController edge trigger.
- *
- * @param pwm the PWMMotorController to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- int SetPwmEdgeTrigger(PWMMotorController* pwm, bool rising, bool falling);
-
- /**
- * Clear all sensors from the DMA collection list.
- *
- * This can only be called if DMA is not started.
- */
- void ClearSensors();
-
- /**
- * Clear all external triggers from the DMA trigger list.
- *
- * This can only be called if DMA is not started.
- */
- void ClearExternalTriggers();
-
- /**
- * Starts DMA Collection.
- *
- * @param queueDepth The number of objects to be able to queue.
- */
- void Start(int queueDepth);
-
- /**
- * Stops DMA Collection.
- */
- void Stop();
-
- private:
- hal::Handle dmaHandle;
-};
-} // namespace frc
diff --git a/wpilibc/src/main/native/include/frc/DMASample.h b/wpilibc/src/main/native/include/frc/DMASample.h
deleted file mode 100644
index b2bed41fc75..00000000000
--- a/wpilibc/src/main/native/include/frc/DMASample.h
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#pragma once
-
-#include
-
-#include
-#include
-#include
-
-#include "frc/AnalogInput.h"
-#include "frc/Counter.h"
-#include "frc/DMA.h"
-#include "frc/DutyCycle.h"
-#include "frc/Encoder.h"
-
-namespace frc {
-/**
- * DMA sample.
- */
-class DMASample : public HAL_DMASample {
- public:
- /**
- * DMA read status.
- */
- enum class DMAReadStatus {
- /// OK status.
- kOk = HAL_DMA_OK,
- /// Timeout status.
- kTimeout = HAL_DMA_TIMEOUT,
- /// Error status.
- kError = HAL_DMA_ERROR
- };
-
- /**
- * Retrieves a new DMA sample.
- *
- * @param dma DMA object.
- * @param timeout Timeout for retrieval.
- * @param remaining Number of remaining samples.
- * @param status DMA read status.
- */
- DMAReadStatus Update(const DMA* dma, units::second_t timeout,
- int32_t* remaining, int32_t* status) {
- return static_cast(
- HAL_ReadDMA(dma->dmaHandle, this, timeout.value(), remaining, status));
- }
-
- /**
- * Returns the DMA sample time in microseconds.
- *
- * @return The DMA sample time in microseconds.
- */
- uint64_t GetTime() const { return timeStamp; }
-
- /**
- * Returns the DMA sample timestamp.
- *
- * @return The DMA sample timestamp.
- */
- units::second_t GetTimeStamp() const {
- return units::second_t{static_cast(GetTime()) * 1.0e-6};
- }
-
- /**
- * Returns raw encoder value from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @param status DMA read status.
- * @return Raw encoder value from DMA.
- */
- int32_t GetEncoderRaw(const Encoder* encoder, int32_t* status) const {
- return HAL_GetDMASampleEncoderRaw(this, encoder->m_encoder, status);
- }
-
- /**
- * Returns encoder distance from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @param status DMA read status.
- * @return Encoder distance from DMA.
- */
- double GetEncoderDistance(const Encoder* encoder, int32_t* status) const {
- double val = GetEncoderRaw(encoder, status);
- val *= encoder->DecodingScaleFactor();
- val *= encoder->GetDistancePerPulse();
- return val;
- }
-
- /**
- * Returns raw encoder period from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @param status DMA read status.
- * @return Raw encoder period from DMA.
- */
- int32_t GetEncoderPeriodRaw(const Encoder* encoder, int32_t* status) const {
- return HAL_GetDMASampleEncoderPeriodRaw(this, encoder->m_encoder, status);
- }
-
- /**
- * Returns counter value from DMA.
- *
- * @param counter Counter used for DMA.
- * @param status DMA read status.
- * @return Counter value from DMA.
- */
- int32_t GetCounter(const Counter* counter, int32_t* status) const {
- return HAL_GetDMASampleCounter(this, counter->m_counter, status);
- }
-
- /**
- * Returns counter period from DMA.
- *
- * @param counter Counter used for DMA.
- * @param status DMA read status.
- * @return Counter period from DMA.
- */
- int32_t GetCounterPeriod(const Counter* counter, int32_t* status) const {
- return HAL_GetDMASampleCounterPeriod(this, counter->m_counter, status);
- }
-
- /**
- * Returns digital source value from DMA.
- *
- * @param digitalSource DigitalSource used for DMA.
- * @param status DMA read status.
- * @return DigitalSource value from DMA.
- */
- bool GetDigitalSource(const DigitalSource* digitalSource,
- int32_t* status) const {
- return HAL_GetDMASampleDigitalSource(
- this, digitalSource->GetPortHandleForRouting(), status);
- }
-
- /**
- * Returns raw analog input value from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @param status DMA read status.
- * @return Raw analog input value from DMA.
- */
- int32_t GetAnalogInputRaw(const AnalogInput* analogInput,
- int32_t* status) const {
- return HAL_GetDMASampleAnalogInputRaw(this, analogInput->m_port, status);
- }
-
- /**
- * Returns analog input voltage from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @param status DMA read status.
- * @return Analog input voltage from DMA.
- */
- double GetAnalogInputVoltage(const AnalogInput* analogInput,
- int32_t* status) {
- return HAL_GetAnalogValueToVolts(
- analogInput->m_port, GetAnalogInputRaw(analogInput, status), status);
- }
-
- /**
- * Returns averaged analog input raw value from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @param status DMA read status.
- * @return Averaged analog input raw value from DMA.
- */
- int32_t GetAveragedAnalogInputRaw(const AnalogInput* analogInput,
- int32_t* status) const {
- return HAL_GetDMASampleAveragedAnalogInputRaw(this, analogInput->m_port,
- status);
- }
-
- /**
- * Returns averaged analog input voltage from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @param status DMA read status.
- * @return Averaged analog input voltage from DMA.
- */
- double GetAveragedAnalogInputVoltage(const AnalogInput* analogInput,
- int32_t* status) {
- return HAL_GetAnalogValueToVolts(
- analogInput->m_port, GetAveragedAnalogInputRaw(analogInput, status),
- status);
- }
-
- /**
- * Returns analog accumulator value from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @param count Accumulator sample count.
- * @param value Accumulator value.
- * @param status DMA read status.
- */
- void GetAnalogAccumulator(const AnalogInput* analogInput, int64_t* count,
- int64_t* value, int32_t* status) const {
- return HAL_GetDMASampleAnalogAccumulator(this, analogInput->m_port, count,
- value, status);
- }
-
- /**
- * Returns raw duty cycle output from DMA.
- *
- * @param dutyCycle DutyCycle used for DMA.
- * @param status DMA read status.
- * @return Raw duty cycle output from DMA.
- */
- int32_t GetDutyCycleOutputRaw(const DutyCycle* dutyCycle,
- int32_t* status) const {
- return HAL_GetDMASampleDutyCycleOutputRaw(this, dutyCycle->m_handle,
- status);
- }
-
- /**
- * Returns duty cycle output (0-1) from DMA.
- *
- * @param dutyCycle DutyCycle used for DMA.
- * @param status DMA read status.
- * @return Duty cycle output (0-1) from DMA.
- */
- double GetDutyCycleOutput(const DutyCycle* dutyCycle, int32_t* status) {
- return GetDutyCycleOutputRaw(dutyCycle, status) /
- static_cast(dutyCycle->GetOutputScaleFactor());
- }
-};
-
-static_assert(std::is_standard_layout_v,
- "frc::DMASample must have standard layout");
-} // namespace frc
diff --git a/wpilibc/src/main/native/include/frc/DutyCycle.h b/wpilibc/src/main/native/include/frc/DutyCycle.h
index 5404030ed80..5733b8df06a 100644
--- a/wpilibc/src/main/native/include/frc/DutyCycle.h
+++ b/wpilibc/src/main/native/include/frc/DutyCycle.h
@@ -15,8 +15,6 @@
namespace frc {
class DigitalSource;
class AnalogTrigger;
-class DMA;
-class DMASample;
/**
* Class to read a duty cycle PWM input.
@@ -31,8 +29,6 @@ class DMASample;
*/
class DutyCycle : public wpi::Sendable, public wpi::SendableHelper {
friend class AnalogTrigger;
- friend class DMA;
- friend class DMASample;
public:
/**
diff --git a/wpilibc/src/main/native/include/frc/Encoder.h b/wpilibc/src/main/native/include/frc/Encoder.h
index 9d3ceb4c996..82d7d3409d1 100644
--- a/wpilibc/src/main/native/include/frc/Encoder.h
+++ b/wpilibc/src/main/native/include/frc/Encoder.h
@@ -18,8 +18,6 @@ namespace frc {
class DigitalSource;
class DigitalGlitchFilter;
-class DMA;
-class DMASample;
/**
* Class to read quad encoders.
@@ -39,9 +37,6 @@ class DMASample;
class Encoder : public CounterBase,
public wpi::Sendable,
public wpi::SendableHelper {
- friend class DMA;
- friend class DMASample;
-
public:
/**
* Encoder indexing types.
diff --git a/wpilibc/src/main/native/include/frc/PWM.h b/wpilibc/src/main/native/include/frc/PWM.h
index 2c49060693c..cb9647dcc06 100644
--- a/wpilibc/src/main/native/include/frc/PWM.h
+++ b/wpilibc/src/main/native/include/frc/PWM.h
@@ -14,7 +14,6 @@
namespace frc {
class AddressableLED;
-class DMA;
/**
* Class implements the PWM generation in the FPGA.
@@ -27,7 +26,6 @@ class DMA;
class PWM : public wpi::Sendable, public wpi::SendableHelper {
public:
friend class AddressableLED;
- friend class DMA;
/**
* Represents the amount to multiply the minimum servo-pulse pwm period by.
*/
diff --git a/wpilibc/src/main/native/include/frc/motorcontrol/PWMMotorController.h b/wpilibc/src/main/native/include/frc/motorcontrol/PWMMotorController.h
index 593d8aa858c..49ad52bca83 100644
--- a/wpilibc/src/main/native/include/frc/motorcontrol/PWMMotorController.h
+++ b/wpilibc/src/main/native/include/frc/motorcontrol/PWMMotorController.h
@@ -22,7 +22,6 @@
#include "frc/motorcontrol/MotorController.h"
namespace frc {
-class DMA;
WPI_IGNORE_DEPRECATED
@@ -34,8 +33,6 @@ class PWMMotorController : public MotorController,
public wpi::Sendable,
public wpi::SendableHelper {
public:
- friend class DMA;
-
PWMMotorController(PWMMotorController&&) = default;
PWMMotorController& operator=(PWMMotorController&&) = default;
diff --git a/wpilibcExamples/src/main/cpp/examples/DMA/cpp/Robot.cpp b/wpilibcExamples/src/main/cpp/examples/DMA/cpp/Robot.cpp
deleted file mode 100644
index e5f47278731..00000000000
--- a/wpilibcExamples/src/main/cpp/examples/DMA/cpp/Robot.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-class Robot : public frc::TimedRobot {
- frc::DMA m_dma; // DMA object
-
- // DMA needs a trigger, can use an output as trigger.
- // 8 Triggers exist per DMA object, can be triggered on any
- // DigitalSource.
- frc::DigitalOutput m_dmaTrigger{2};
-
- // Analog input to read with DMA
- frc::AnalogInput m_analogInput{0};
-
- // Encoder to read with DMA
- frc::Encoder m_encoder{0, 1};
-
- public:
- Robot() {
- // Trigger on falling edge of dma trigger output
- m_dma.SetExternalTrigger(&m_dmaTrigger, false, true);
-
- // Add inputs we want to read via DMA
- m_dma.AddAnalogInput(&m_analogInput);
- m_dma.AddEncoder(&m_encoder);
- m_dma.AddEncoderPeriod(&m_encoder);
-
- // Make sure trigger is set to off.
- m_dmaTrigger.Set(true);
-
- // Start DMA. No triggers or inputs can be added after this call
- // unless DMA is stopped.
- m_dma.Start(1024);
- }
-
- void RobotPeriodic() override {
- // Manually Trigger DMA read
- m_dmaTrigger.Set(false);
-
- // Need to create a sample.
- frc::DMASample sample;
- int32_t remaining = 0;
- int32_t status = 0;
- // Update our sample. remaining is the number of samples remaining in the
- // buffer status is more specific error messages if readStatus is not OK.
- // Wait 1ms if buffer is empty
- frc::DMASample::DMAReadStatus readStatus =
- sample.Update(&m_dma, 1_ms, &remaining, &status);
-
- // Unset trigger
- m_dmaTrigger.Set(true);
-
- if (readStatus == frc::DMASample::DMAReadStatus::kOk) {
- // Status value in all these reads should be checked, a non 0 value means
- // value could not be read
-
- // If DMA is good, values exist
- auto encoderDistance = sample.GetEncoderDistance(&m_encoder, &status);
- // Period is not scaled, and is a raw value
- auto encoderPeriod = sample.GetEncoderPeriodRaw(&m_encoder, &status);
- auto analogVoltage =
- sample.GetAnalogInputVoltage(&m_analogInput, &status);
-
- frc::SmartDashboard::PutNumber("Distance", encoderDistance);
- frc::SmartDashboard::PutNumber("Period", encoderPeriod);
- frc::SmartDashboard::PutNumber("Input", analogVoltage);
- }
- }
-};
-
-#ifndef RUNNING_FRC_TESTS
-int main() {
- return frc::StartRobot();
-}
-#endif
diff --git a/wpilibcExamples/src/main/cpp/examples/examples.json b/wpilibcExamples/src/main/cpp/examples/examples.json
index 3857c37fdef..c20ec3d1a45 100644
--- a/wpilibcExamples/src/main/cpp/examples/examples.json
+++ b/wpilibcExamples/src/main/cpp/examples/examples.json
@@ -503,18 +503,6 @@
"gradlebase": "cpp",
"commandversion": 2
},
- {
- "name": "DMA",
- "description": "Read various sensors using DMA.",
- "tags": [
- "Hardware",
- "DMA",
- "SmartDashboard"
- ],
- "foldername": "DMA",
- "gradlebase": "cpp",
- "commandversion": 2
- },
{
"name": "MecanumControllerCommand",
"description": "Follow a pre-generated trajectory with a mecanum drive using MecanumControllerCommand.",
diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMA.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMA.java
deleted file mode 100644
index bd26a7bf5de..00000000000
--- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMA.java
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.wpilibj;
-
-import edu.wpi.first.hal.DMAJNI;
-import edu.wpi.first.wpilibj.motorcontrol.PWMMotorController;
-
-/** Class for configuring Direct Memory Access (DMA) of FPGA inputs. */
-public class DMA implements AutoCloseable {
- final int m_dmaHandle;
-
- /** Default constructor. */
- public DMA() {
- m_dmaHandle = DMAJNI.initialize();
- }
-
- @Override
- public void close() {
- DMAJNI.free(m_dmaHandle);
- }
-
- /**
- * Sets whether DMA is paused.
- *
- * @param pause True pauses DMA.
- */
- public void setPause(boolean pause) {
- DMAJNI.setPause(m_dmaHandle, pause);
- }
-
- /**
- * Sets DMA to trigger at an interval.
- *
- * @param periodSeconds Period at which to trigger DMA in seconds.
- */
- public void setTimedTrigger(double periodSeconds) {
- DMAJNI.setTimedTrigger(m_dmaHandle, periodSeconds);
- }
-
- /**
- * Sets number of DMA cycles to trigger.
- *
- * @param cycles Number of cycles.
- */
- public void setTimedTriggerCycles(int cycles) {
- DMAJNI.setTimedTriggerCycles(m_dmaHandle, cycles);
- }
-
- /**
- * Adds position data for an encoder to be collected by DMA.
- *
- * This can only be called if DMA is not started.
- *
- * @param encoder Encoder to add to DMA.
- */
- public void addEncoder(Encoder encoder) {
- DMAJNI.addEncoder(m_dmaHandle, encoder.m_encoder);
- }
-
- /**
- * Adds timer data for an encoder to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param encoder Encoder to add to DMA.
- */
- public void addEncoderPeriod(Encoder encoder) {
- DMAJNI.addEncoderPeriod(m_dmaHandle, encoder.m_encoder);
- }
-
- /**
- * Adds position data for an counter to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param counter Counter to add to DMA.
- */
- public void addCounter(Counter counter) {
- DMAJNI.addCounter(m_dmaHandle, counter.m_counter);
- }
-
- /**
- * Adds timer data for an counter to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param counter Counter to add to DMA.
- */
- public void addCounterPeriod(Counter counter) {
- DMAJNI.addCounterPeriod(m_dmaHandle, counter.m_counter);
- }
-
- /**
- * Adds a digital source to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param digitalSource DigitalSource to add to DMA.
- */
- public void addDigitalSource(DigitalSource digitalSource) {
- DMAJNI.addDigitalSource(m_dmaHandle, digitalSource.getPortHandleForRouting());
- }
-
- /**
- * Adds a duty cycle input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param dutyCycle DutyCycle to add to DMA.
- */
- public void addDutyCycle(DutyCycle dutyCycle) {
- DMAJNI.addDutyCycle(m_dmaHandle, dutyCycle.m_handle);
- }
-
- /**
- * Adds an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- public void addAnalogInput(AnalogInput analogInput) {
- DMAJNI.addAnalogInput(m_dmaHandle, analogInput.m_port);
- }
-
- /**
- * Adds averaged data of an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- public void addAveragedAnalogInput(AnalogInput analogInput) {
- DMAJNI.addAveragedAnalogInput(m_dmaHandle, analogInput.m_port);
- }
-
- /**
- * Adds accumulator data of an analog input to be collected by DMA.
- *
- *
This can only be called if DMA is not started.
- *
- * @param analogInput AnalogInput to add to DMA.
- */
- public void addAnalogAccumulator(AnalogInput analogInput) {
- DMAJNI.addAnalogAccumulator(m_dmaHandle, analogInput.m_port);
- }
-
- /**
- * Sets an external DMA trigger.
- *
- * @param source the source to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- public int setExternalTrigger(DigitalSource source, boolean rising, boolean falling) {
- return DMAJNI.setExternalTrigger(
- m_dmaHandle,
- source.getPortHandleForRouting(),
- source.getAnalogTriggerTypeForRouting(),
- rising,
- falling);
- }
-
- /**
- * Sets a DMA PWM edge trigger.
- *
- * @param pwm the PWM to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- public int setPwmEdgeTrigger(PWM pwm, boolean rising, boolean falling) {
- return DMAJNI.setExternalTrigger(m_dmaHandle, pwm.getHandle(), 0, rising, falling);
- }
-
- /**
- * Sets a DMA PWMMotorController edge trigger.
- *
- * @param pwm the PWMMotorController to trigger from.
- * @param rising trigger on rising edge.
- * @param falling trigger on falling edge.
- * @return the index of the trigger
- */
- public int setPwmEdgeTrigger(PWMMotorController pwm, boolean rising, boolean falling) {
- return DMAJNI.setExternalTrigger(m_dmaHandle, pwm.getPwmHandle(), 0, rising, falling);
- }
-
- /**
- * Clear all sensors from the DMA collection list.
- *
- *
This can only be called if DMA is not started.
- */
- public void clearSensors() {
- DMAJNI.clearSensors(m_dmaHandle);
- }
-
- /**
- * Clear all external triggers from the DMA trigger list.
- *
- *
This can only be called if DMA is not started.
- */
- public void clearExternalTriggers() {
- DMAJNI.clearExternalTriggers(m_dmaHandle);
- }
-
- /**
- * Starts DMA Collection.
- *
- * @param queueDepth The number of objects to be able to queue.
- */
- public void start(int queueDepth) {
- DMAJNI.startDMA(m_dmaHandle, queueDepth);
- }
-
- /** Stops DMA Collection. */
- public void stop() {
- DMAJNI.stopDMA(m_dmaHandle);
- }
-}
diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMASample.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMASample.java
deleted file mode 100644
index 1435cd36d9d..00000000000
--- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DMASample.java
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.wpilibj;
-
-import edu.wpi.first.hal.AnalogJNI;
-import edu.wpi.first.hal.DMAJNISample;
-
-/** DMA sample. */
-public class DMASample {
- /** DMA read status. */
- public enum DMAReadStatus {
- /** OK status. */
- kOk(1),
- /** Timeout status. */
- kTimeout(2),
- /** Error status. */
- kError(3);
-
- private final int value;
-
- DMAReadStatus(int value) {
- this.value = value;
- }
-
- /**
- * Returns the DMAReadStatus value.
- *
- * @return The DMAReadStatus value.
- */
- public int getValue() {
- return value;
- }
-
- /**
- * Constructs a DMAReadStatus from a raw value.
- *
- * @param value raw value
- * @return enum value
- */
- public static DMAReadStatus getValue(int value) {
- if (value == 1) {
- return kOk;
- } else if (value == 2) {
- return kTimeout;
- }
- return kError;
- }
- }
-
- private final DMAJNISample m_dmaSample = new DMAJNISample();
-
- /** Default constructor. */
- public DMASample() {}
-
- /**
- * Retrieves a new DMA sample.
- *
- * @param dma DMA object.
- * @param timeoutSeconds Timeout in seconds for retrieval.
- * @return DMA read status.
- */
- public DMAReadStatus update(DMA dma, double timeoutSeconds) {
- return DMAReadStatus.getValue(m_dmaSample.update(dma.m_dmaHandle, timeoutSeconds));
- }
-
- /**
- * Returns the DMA sample time in microseconds.
- *
- * @return The DMA sample time in microseconds.
- */
- public long getTime() {
- return m_dmaSample.getTime();
- }
-
- /**
- * Returns the DMA sample timestamp in seconds.
- *
- * @return The DMA sample timestamp in seconds.
- */
- public double getTimeStamp() {
- return getTime() * 1.0e-6;
- }
-
- /**
- * Returns the DMA sample capture size.
- *
- * @return The DMA sample capture size.
- */
- public int getCaptureSize() {
- return m_dmaSample.getCaptureSize();
- }
-
- /**
- * Returns the number of DMA trigger channels.
- *
- * @return The number of DMA trigger channels.
- */
- public int getTriggerChannels() {
- return m_dmaSample.getTriggerChannels();
- }
-
- /**
- * Returns the number of remaining samples.
- *
- * @return The number of remaining samples.
- */
- public int getRemaining() {
- return m_dmaSample.getRemaining();
- }
-
- /**
- * Returns raw encoder value from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @return Raw encoder value from DMA.
- */
- public int getEncoderRaw(Encoder encoder) {
- return m_dmaSample.getEncoder(encoder.m_encoder);
- }
-
- /**
- * Returns encoder distance from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @return Encoder distance from DMA.
- */
- public double getEncoderDistance(Encoder encoder) {
- double val = getEncoderRaw(encoder);
- val *= encoder.getDecodingScaleFactor();
- val *= encoder.getDistancePerPulse();
- return val;
- }
-
- /**
- * Returns raw encoder period from DMA.
- *
- * @param encoder Encoder used for DMA.
- * @return Raw encoder period from DMA.
- */
- public int getEncoderPeriodRaw(Encoder encoder) {
- return m_dmaSample.getEncoderPeriod(encoder.m_encoder);
- }
-
- /**
- * Returns counter value from DMA.
- *
- * @param counter Counter used for DMA.
- * @return Counter value from DMA.
- */
- public int getCounter(Counter counter) {
- return m_dmaSample.getCounter(counter.m_counter);
- }
-
- /**
- * Returns counter period from DMA.
- *
- * @param counter Counter used for DMA.
- * @return Counter period from DMA.
- */
- public int getCounterPeriod(Counter counter) {
- return m_dmaSample.getCounterPeriod(counter.m_counter);
- }
-
- /**
- * Returns digital source value from DMA.
- *
- * @param digitalSource DigitalSource used for DMA.
- * @return DigitalSource value from DMA.
- */
- public boolean getDigitalSource(DigitalSource digitalSource) {
- return m_dmaSample.getDigitalSource(digitalSource.getPortHandleForRouting());
- }
-
- /**
- * Returns raw analog input value from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @return Raw analog input value from DMA.
- */
- public int getAnalogInputRaw(AnalogInput analogInput) {
- return m_dmaSample.getAnalogInput(analogInput.m_port);
- }
-
- /**
- * Returns analog input voltage from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @return Analog input voltage from DMA.
- */
- public double getAnalogInputVoltage(AnalogInput analogInput) {
- return AnalogJNI.getAnalogValueToVolts(analogInput.m_port, getAnalogInputRaw(analogInput));
- }
-
- /**
- * Returns averaged raw analog input value from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @return Averaged raw analog input value from DMA.
- */
- public int getAveragedAnalogInputRaw(AnalogInput analogInput) {
- return m_dmaSample.getAnalogInputAveraged(analogInput.m_port);
- }
-
- /**
- * Returns averaged analog input voltage from DMA.
- *
- * @param analogInput AnalogInput used for DMA.
- * @return Averaged analog input voltage from DMA.
- */
- public double getAveragedAnalogInputVoltage(AnalogInput analogInput) {
- return AnalogJNI.getAnalogValueToVolts(
- analogInput.m_port, getAveragedAnalogInputRaw(analogInput));
- }
-
- /**
- * Returns raw duty cycle output from DMA.
- *
- * @param dutyCycle DutyCycle used for DMA.
- * @return Raw duty cycle output from DMA.
- */
- public int getDutyCycleOutputRaw(DutyCycle dutyCycle) {
- return m_dmaSample.getDutyCycleOutput(dutyCycle.m_handle);
- }
-
- /**
- * Returns duty cycle output (0-1) from DMA.
- *
- * @param dutyCycle DutyCycle used for DMA.
- * @return Duty cycle output (0-1) from DMA.
- */
- public double getDutyCycleOutput(DutyCycle dutyCycle) {
- return m_dmaSample.getDutyCycleOutput(dutyCycle.m_handle)
- / (double) dutyCycle.getOutputScaleFactor();
- }
-}
diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Main.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Main.java
deleted file mode 100644
index 97f67d1de29..00000000000
--- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Main.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.wpilibj.examples.dma;
-
-import edu.wpi.first.wpilibj.RobotBase;
-
-/**
- * Do NOT add any static variables to this class, or any initialization at all. Unless you know what
- * you are doing, do not modify this file except to change the parameter class to the startRobot
- * call.
- */
-public final class Main {
- private Main() {}
-
- /**
- * Main initialization function. Do not perform any initialization here.
- *
- *
If you change your main robot class, change the parameter type.
- */
- public static void main(String... args) {
- RobotBase.startRobot(Robot::new);
- }
-}
diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Robot.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Robot.java
deleted file mode 100644
index fb918ff15e6..00000000000
--- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/dma/Robot.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) FIRST and other WPILib contributors.
-// Open Source Software; you can modify and/or share it under the terms of
-// the WPILib BSD license file in the root directory of this project.
-
-package edu.wpi.first.wpilibj.examples.dma;
-
-import edu.wpi.first.math.util.Units;
-import edu.wpi.first.wpilibj.AnalogInput;
-import edu.wpi.first.wpilibj.DMA;
-import edu.wpi.first.wpilibj.DMASample;
-import edu.wpi.first.wpilibj.DigitalOutput;
-import edu.wpi.first.wpilibj.Encoder;
-import edu.wpi.first.wpilibj.TimedRobot;
-import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
-
-/** This is a sample program showing how to to use DMA to read a sensor. */
-public class Robot extends TimedRobot {
- private final DMA m_dma;
- private final DMASample m_dmaSample;
-
- // DMA needs a trigger, can use an output as trigger.
- // 8 Triggers exist per DMA object, can be triggered on any
- // DigitalSource.
- private final DigitalOutput m_dmaTrigger;
-
- // Analog input to read with DMA
- private final AnalogInput m_analogInput;
-
- // Encoder to read with DMA
- private final Encoder m_encoder;
-
- /** Called once at the beginning of the robot program. */
- public Robot() {
- m_dma = new DMA();
- m_dmaSample = new DMASample();
- m_dmaTrigger = new DigitalOutput(2);
- m_analogInput = new AnalogInput(0);
- m_encoder = new Encoder(0, 1);
-
- // Trigger on falling edge of dma trigger output
- m_dma.setExternalTrigger(m_dmaTrigger, false, true);
-
- // Add inputs we want to read via DMA
- m_dma.addAnalogInput(m_analogInput);
- m_dma.addEncoder(m_encoder);
- m_dma.addEncoderPeriod(m_encoder);
-
- // Make sure trigger is set to off.
- m_dmaTrigger.set(true);
-
- // Start DMA. No triggers or inputs can be added after this call
- // unless DMA is stopped.
- m_dma.start(1024);
- }
-
- @Override
- public void robotPeriodic() {
- // Manually Trigger DMA read
- m_dmaTrigger.set(false);
-
- // Update our sample. remaining is the number of samples remaining in the
- // buffer status is more specific error messages if readStatus is not OK.
- // Wait 1ms if buffer is empty
- DMASample.DMAReadStatus readStatus = m_dmaSample.update(m_dma, Units.millisecondsToSeconds(1));
-
- // Unset trigger
- m_dmaTrigger.set(true);
-
- if (readStatus == DMASample.DMAReadStatus.kOk) {
- // Status value in all these reads should be checked, a non 0 value means
- // value could not be read
-
- // If DMA is good, values exist
- double encoderDistance = m_dmaSample.getEncoderDistance(m_encoder);
- // Period is not scaled, and is a raw value
- int encoderPeriod = m_dmaSample.getEncoderPeriodRaw(m_encoder);
- double analogVoltage = m_dmaSample.getAnalogInputVoltage(m_analogInput);
-
- SmartDashboard.putNumber("Distance", encoderDistance);
- SmartDashboard.putNumber("Period", encoderPeriod);
- SmartDashboard.putNumber("Input", analogVoltage);
- SmartDashboard.putNumber("Timestamp", m_dmaSample.getTimeStamp());
- }
- }
-}
diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json
index 8bb03fbccad..5fab0669611 100644
--- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json
+++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json
@@ -506,19 +506,6 @@
"mainclass": "Main",
"commandversion": 2
},
- {
- "name": "DMA",
- "description": "Read various sensors using DMA.",
- "tags": [
- "Hardware",
- "DMA",
- "SmartDashboard"
- ],
- "foldername": "dma",
- "gradlebase": "java",
- "mainclass": "Main",
- "commandversion": 2
- },
{
"name": "DriveDistanceOffboard",
"description": "Drive a differential drivetrain a set distance using TrapezoidProfileCommand and smart motor controller PID.",