Files
allwpilib/hal/src/main/native/cpp/jni/EncoderJNI.cpp

380 lines
9.6 KiB
C++
Raw Normal View History

/*----------------------------------------------------------------------------*/
2019-09-06 18:42:40 -07:00
/* Copyright (c) 2016-2019 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#include <jni.h>
2014-01-06 09:27:51 -05:00
2018-05-13 17:09:56 -07:00
#include <cassert>
2014-01-06 09:27:51 -05:00
#include "HALUtil.h"
#include "edu_wpi_first_hal_EncoderJNI.h"
#include "hal/Encoder.h"
#include "hal/Errors.h"
2014-01-06 09:27:51 -05:00
using namespace frc;
extern "C" {
2014-01-06 09:27:51 -05:00
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: initializeEncoder
* Signature: (IIIIZI)I
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_initializeEncoder
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint digitalSourceHandleA, jint analogTriggerTypeA,
jint digitalSourceHandleB, jint analogTriggerTypeB,
jboolean reverseDirection, jint encodingType)
{
int32_t status = 0;
auto encoder = HAL_InitializeEncoder(
2018-05-13 17:09:56 -07:00
(HAL_Handle)digitalSourceHandleA,
(HAL_AnalogTriggerType)analogTriggerTypeA,
(HAL_Handle)digitalSourceHandleB,
(HAL_AnalogTriggerType)analogTriggerTypeB, reverseDirection,
(HAL_EncoderEncodingType)encodingType, &status);
CheckStatusForceThrow(env, status);
return (jint)encoder;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: freeEncoder
* Signature: (I)V
2014-01-06 09:27:51 -05:00
*/
2018-05-13 17:09:56 -07:00
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_freeEncoder
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
HAL_FreeEncoder((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoder
* Signature: (I)I
2014-01-06 09:27:51 -05:00
*/
2018-05-13 17:09:56 -07:00
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoder
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jint returnValue = HAL_GetEncoder((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderRaw
* Signature: (I)I
2014-01-06 09:27:51 -05:00
*/
2018-05-13 17:09:56 -07:00
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderRaw
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jint returnValue = HAL_GetEncoderRaw((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncodingScaleFactor
* Signature: (I)I
*/
2018-05-13 17:09:56 -07:00
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncodingScaleFactor
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jint returnValue =
HAL_GetEncoderEncodingScale((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: resetEncoder
* Signature: (I)V
*/
2018-05-13 17:09:56 -07:00
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_resetEncoder
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
HAL_ResetEncoder((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
}
2014-01-06 09:27:51 -05:00
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: getEncoderPeriod
* Signature: (I)D
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT jdouble JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderPeriod
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
double returnValue = HAL_GetEncoderPeriod((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: setEncoderMaxPeriod
* Signature: (ID)V
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderMaxPeriod
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jdouble value)
{
int32_t status = 0;
HAL_SetEncoderMaxPeriod((HAL_EncoderHandle)id, value, &status);
CheckStatus(env, status);
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: getEncoderStopped
* Signature: (I)Z
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT jboolean JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderStopped
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jboolean returnValue = HAL_GetEncoderStopped((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: getEncoderDirection
* Signature: (I)Z
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT jboolean JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderDirection
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jboolean returnValue =
HAL_GetEncoderDirection((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderDistance
* Signature: (I)D
*/
JNIEXPORT jdouble JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderDistance
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jdouble returnValue = HAL_GetEncoderDistance((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderRate
* Signature: (I)D
*/
JNIEXPORT jdouble JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderRate
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jdouble returnValue = HAL_GetEncoderRate((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: setEncoderMinRate
* Signature: (ID)V
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderMinRate
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jdouble value)
{
int32_t status = 0;
HAL_SetEncoderMinRate((HAL_EncoderHandle)id, value, &status);
CheckStatus(env, status);
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: setEncoderDistancePerPulse
* Signature: (ID)V
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderDistancePerPulse
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jdouble value)
{
int32_t status = 0;
HAL_SetEncoderDistancePerPulse((HAL_EncoderHandle)id, value, &status);
CheckStatus(env, status);
}
2014-01-06 09:27:51 -05:00
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: setEncoderReverseDirection
* Signature: (IZ)V
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderReverseDirection
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jboolean value)
{
int32_t status = 0;
HAL_SetEncoderReverseDirection((HAL_EncoderHandle)id, value, &status);
CheckStatus(env, status);
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: setEncoderSamplesToAverage
* Signature: (II)V
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderSamplesToAverage
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jint value)
{
int32_t status = 0;
HAL_SetEncoderSamplesToAverage((HAL_EncoderHandle)id, value, &status);
if (status == PARAMETER_OUT_OF_RANGE) {
ThrowBoundaryException(env, value, 1, 127);
return;
}
CheckStatus(env, status);
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
2014-01-06 09:27:51 -05:00
* Method: getEncoderSamplesToAverage
* Signature: (I)I
2014-01-06 09:27:51 -05:00
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderSamplesToAverage
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jint returnValue =
HAL_GetEncoderSamplesToAverage((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
2014-01-06 09:27:51 -05:00
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: setEncoderIndexSource
* Signature: (IIII)V
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_EncoderJNI_setEncoderIndexSource
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id, jint digitalSourceHandle,
jint analogTriggerType, jint type)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
HAL_SetEncoderIndexSource((HAL_EncoderHandle)id,
(HAL_Handle)digitalSourceHandle,
(HAL_AnalogTriggerType)analogTriggerType,
(HAL_EncoderIndexingType)type, &status);
CheckStatus(env, status);
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderFPGAIndex
* Signature: (I)I
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderFPGAIndex
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jint returnValue = HAL_GetEncoderFPGAIndex((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderEncodingScale
* Signature: (I)I
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderEncodingScale
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jint returnValue =
HAL_GetEncoderEncodingScale((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderDecodingScaleFactor
* Signature: (I)D
*/
JNIEXPORT jdouble JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderDecodingScaleFactor
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jdouble returnValue =
HAL_GetEncoderDecodingScaleFactor((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderDistancePerPulse
* Signature: (I)D
*/
JNIEXPORT jdouble JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderDistancePerPulse
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
2018-05-13 17:09:56 -07:00
jdouble returnValue =
HAL_GetEncoderDistancePerPulse((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
/*
* Class: edu_wpi_first_hal_EncoderJNI
* Method: getEncoderEncodingType
* Signature: (I)I
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_hal_EncoderJNI_getEncoderEncodingType
2018-05-13 17:09:56 -07:00
(JNIEnv* env, jclass, jint id)
{
int32_t status = 0;
jint returnValue = HAL_GetEncoderEncodingType((HAL_EncoderHandle)id, &status);
CheckStatus(env, status);
return returnValue;
}
} // extern "C"