2016-07-10 16:24:57 -07:00
|
|
|
/*----------------------------------------------------------------------------*/
|
2019-09-06 18:42:40 -07:00
|
|
|
/* Copyright (c) 2016-2019 FIRST. All Rights Reserved. */
|
2016-07-10 16:24:57 -07:00
|
|
|
/* 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. */
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
2018-07-20 00:03:45 -07:00
|
|
|
#include "hal/HAL.h"
|
2016-07-10 16:24:57 -07:00
|
|
|
|
|
|
|
|
#include <jni.h>
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
#include <cassert>
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
|
|
#include <wpi/jni_util.h>
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
#include "HALUtil.h"
|
2018-09-20 21:59:46 -07:00
|
|
|
#include "edu_wpi_first_hal_HAL.h"
|
2018-07-20 00:03:45 -07:00
|
|
|
#include "hal/DriverStation.h"
|
2019-09-28 15:43:24 -07:00
|
|
|
#include "hal/Main.h"
|
2016-07-10 16:24:57 -07:00
|
|
|
|
2016-10-31 23:04:49 -07:00
|
|
|
using namespace frc;
|
2016-12-23 11:13:17 -08:00
|
|
|
using namespace wpi::java;
|
2016-10-31 23:04:49 -07:00
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
extern "C" {
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: initialize
|
|
|
|
|
* Signature: (II)Z
|
2016-07-10 16:24:57 -07:00
|
|
|
*/
|
2017-07-01 00:43:06 -07:00
|
|
|
JNIEXPORT jboolean JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_initialize
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jint timeout, jint mode)
|
|
|
|
|
{
|
2017-07-01 00:43:06 -07:00
|
|
|
return HAL_Initialize(timeout, mode);
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
2019-09-28 15:43:24 -07:00
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_hal_HAL
|
|
|
|
|
* Method: hasMain
|
|
|
|
|
* Signature: ()Z
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jboolean JNICALL
|
|
|
|
|
Java_edu_wpi_first_hal_HAL_hasMain
|
|
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
|
|
|
|
return HAL_HasMain();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_hal_HAL
|
|
|
|
|
* Method: runMain
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
|
|
|
|
Java_edu_wpi_first_hal_HAL_runMain
|
|
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
|
|
|
|
HAL_RunMain();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_hal_HAL
|
|
|
|
|
* Method: exitMain
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
|
|
|
|
Java_edu_wpi_first_hal_HAL_exitMain
|
|
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
|
|
|
|
HAL_ExitMain();
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2016-07-10 16:24:57 -07:00
|
|
|
* Method: observeUserProgramStarting
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_observeUserProgramStarting
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ObserveUserProgramStarting();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2016-07-10 16:24:57 -07:00
|
|
|
* Method: observeUserProgramDisabled
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_observeUserProgramDisabled
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ObserveUserProgramDisabled();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2016-07-10 16:24:57 -07:00
|
|
|
* Method: observeUserProgramAutonomous
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_observeUserProgramAutonomous
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ObserveUserProgramAutonomous();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2016-07-10 16:24:57 -07:00
|
|
|
* Method: observeUserProgramTeleop
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_observeUserProgramTeleop
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ObserveUserProgramTeleop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2016-07-10 16:24:57 -07:00
|
|
|
* Method: observeUserProgramTest
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_observeUserProgramTest
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ObserveUserProgramTest();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: report
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (IIILjava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_report
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* paramEnv, jclass, jint paramResource, jint paramInstanceNumber,
|
|
|
|
|
jint paramContext, jstring paramFeature)
|
|
|
|
|
{
|
2016-12-23 11:13:17 -08:00
|
|
|
JStringRef featureStr{paramEnv, paramFeature};
|
2018-05-13 17:09:56 -07:00
|
|
|
jint returnValue = HAL_Report(paramResource, paramInstanceNumber,
|
|
|
|
|
paramContext, featureStr.c_str());
|
2016-07-10 16:24:57 -07:00
|
|
|
return returnValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: nativeGetControlWord
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: ()I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_nativeGetControlWord
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2017-11-09 19:59:29 -08:00
|
|
|
static_assert(sizeof(HAL_ControlWord) == sizeof(jint),
|
2018-05-13 17:09:56 -07:00
|
|
|
"Java int must match the size of control word");
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_ControlWord controlWord;
|
|
|
|
|
std::memset(&controlWord, 0, sizeof(HAL_ControlWord));
|
|
|
|
|
HAL_GetControlWord(&controlWord);
|
2017-07-26 20:59:40 -07:00
|
|
|
jint retVal = 0;
|
|
|
|
|
std::memcpy(&retVal, &controlWord, sizeof(HAL_ControlWord));
|
|
|
|
|
return retVal;
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: nativeGetAllianceStation
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: ()I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_nativeGetAllianceStation
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
int32_t status = 0;
|
|
|
|
|
auto allianceStation = HAL_GetAllianceStation(&status);
|
2017-07-26 20:59:40 -07:00
|
|
|
return static_cast<jint>(allianceStation);
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickAxes
|
2016-07-13 23:39:58 -07:00
|
|
|
* Signature: (B[F)S
|
2016-07-10 16:24:57 -07:00
|
|
|
*/
|
|
|
|
|
JNIEXPORT jshort JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickAxes
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte joystickNum, jfloatArray axesArray)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_JoystickAxes axes;
|
|
|
|
|
HAL_GetJoystickAxes(joystickNum, &axes);
|
|
|
|
|
|
|
|
|
|
jsize javaSize = env->GetArrayLength(axesArray);
|
2018-05-13 17:09:56 -07:00
|
|
|
if (axes.count > javaSize) {
|
2018-09-24 22:17:17 -07:00
|
|
|
wpi::SmallString<128> errStr;
|
|
|
|
|
wpi::raw_svector_ostream oss{errStr};
|
|
|
|
|
oss << "Native array size larger then passed in java array size "
|
|
|
|
|
<< "Native Size: " << static_cast<int>(axes.count)
|
|
|
|
|
<< " Java Size: " << static_cast<int>(javaSize);
|
|
|
|
|
|
|
|
|
|
ThrowIllegalArgumentException(env, errStr.str());
|
|
|
|
|
return 0;
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
env->SetFloatArrayRegion(axesArray, 0, axes.count, axes.axes);
|
|
|
|
|
|
|
|
|
|
return axes.count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickPOVs
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (B[S)S
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jshort JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickPOVs
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte joystickNum, jshortArray povsArray)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_JoystickPOVs povs;
|
|
|
|
|
HAL_GetJoystickPOVs(joystickNum, &povs);
|
|
|
|
|
|
|
|
|
|
jsize javaSize = env->GetArrayLength(povsArray);
|
2018-05-13 17:09:56 -07:00
|
|
|
if (povs.count > javaSize) {
|
2018-09-24 22:17:17 -07:00
|
|
|
wpi::SmallString<128> errStr;
|
|
|
|
|
wpi::raw_svector_ostream oss{errStr};
|
|
|
|
|
oss << "Native array size larger then passed in java array size "
|
|
|
|
|
<< "Native Size: " << static_cast<int>(povs.count)
|
|
|
|
|
<< " Java Size: " << static_cast<int>(javaSize);
|
|
|
|
|
|
|
|
|
|
ThrowIllegalArgumentException(env, errStr.str());
|
|
|
|
|
return 0;
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
env->SetShortArrayRegion(povsArray, 0, povs.count, povs.povs);
|
|
|
|
|
|
|
|
|
|
return povs.count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickButtons
|
|
|
|
|
* Signature: (BLjava/lang/Object;)I
|
2016-07-10 16:24:57 -07:00
|
|
|
*/
|
2016-11-10 23:21:54 -05:00
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickButtons
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte joystickNum, jobject count)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
HAL_JoystickButtons joystickButtons;
|
|
|
|
|
HAL_GetJoystickButtons(joystickNum, &joystickButtons);
|
2018-05-13 17:09:56 -07:00
|
|
|
jbyte* countPtr =
|
|
|
|
|
reinterpret_cast<jbyte*>(env->GetDirectBufferAddress(count));
|
2016-07-10 16:24:57 -07:00
|
|
|
*countPtr = joystickButtons.count;
|
|
|
|
|
return joystickButtons.buttons;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: setJoystickOutputs
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (BISS)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_setJoystickOutputs
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jbyte port, jint outputs, jshort leftRumble,
|
|
|
|
|
jshort rightRumble)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
return HAL_SetJoystickOutputs(port, outputs, leftRumble, rightRumble);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickIsXbox
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (B)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickIsXbox
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jbyte port)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
return HAL_GetJoystickIsXbox(port);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickType
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (B)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickType
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jbyte port)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
return HAL_GetJoystickType(port);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickName
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (B)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickName
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
char* joystickName = HAL_GetJoystickName(port);
|
2016-12-23 11:13:17 -08:00
|
|
|
jstring str = MakeJString(env, joystickName);
|
2017-06-30 16:11:16 -07:00
|
|
|
HAL_FreeJoystickName(joystickName);
|
2016-07-10 16:24:57 -07:00
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getJoystickAxisType
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (BB)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getJoystickAxisType
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jbyte joystickNum, jbyte axis)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
return HAL_GetJoystickAxisType(joystickNum, axis);
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-08 20:21:47 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2017-05-08 20:21:47 -07:00
|
|
|
* Method: isNewControlData
|
|
|
|
|
* Signature: ()Z
|
|
|
|
|
*/
|
2017-11-09 19:59:29 -08:00
|
|
|
JNIEXPORT jboolean JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_isNewControlData
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass)
|
|
|
|
|
{
|
2017-05-08 20:21:47 -07:00
|
|
|
return static_cast<jboolean>(HAL_IsNewControlData());
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2017-05-08 20:21:47 -07:00
|
|
|
* Method: waitForDSData
|
2016-07-10 23:10:05 -07:00
|
|
|
* Signature: ()V
|
2016-07-10 16:24:57 -07:00
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_waitForDSData
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass)
|
|
|
|
|
{
|
2016-07-10 23:10:05 -07:00
|
|
|
HAL_WaitForDSData();
|
2016-07-10 16:24:57 -07:00
|
|
|
}
|
|
|
|
|
|
2017-05-08 20:21:47 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2017-05-08 20:21:47 -07:00
|
|
|
* Method: releaseDSMutex
|
|
|
|
|
* Signature: ()V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_releaseDSMutex
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass)
|
|
|
|
|
{
|
2017-05-08 20:21:47 -07:00
|
|
|
HAL_ReleaseDSMutex();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2017-05-08 20:21:47 -07:00
|
|
|
* Method: waitForDSDataTimeout
|
|
|
|
|
* Signature: (D)Z
|
|
|
|
|
*/
|
2017-11-09 19:59:29 -08:00
|
|
|
JNIEXPORT jboolean JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_waitForDSDataTimeout
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv*, jclass, jdouble timeout)
|
|
|
|
|
{
|
2017-05-08 20:21:47 -07:00
|
|
|
return static_cast<jboolean>(HAL_WaitForDSDataTimeout(timeout));
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getMatchTime
|
2016-11-20 07:25:03 -08:00
|
|
|
* Signature: ()D
|
2016-07-10 16:24:57 -07:00
|
|
|
*/
|
2016-11-20 07:25:03 -08:00
|
|
|
JNIEXPORT jdouble JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getMatchTime
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
int32_t status = 0;
|
|
|
|
|
return HAL_GetMatchTime(&status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getSystemActive
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: ()Z
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jboolean JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getSystemActive
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
int32_t status = 0;
|
|
|
|
|
bool val = HAL_GetSystemActive(&status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: getBrownedOut
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: ()Z
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jboolean JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getBrownedOut
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass)
|
|
|
|
|
{
|
2016-07-10 16:24:57 -07:00
|
|
|
int32_t status = 0;
|
|
|
|
|
bool val = HAL_GetBrownedOut(&status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-09 19:59:29 -08:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2017-11-09 19:59:29 -08:00
|
|
|
* Method: getMatchInfo
|
2018-05-13 17:09:56 -07:00
|
|
|
* Signature: (Ljava/lang/Object;)I
|
2017-11-09 19:59:29 -08:00
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getMatchInfo
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jobject info)
|
|
|
|
|
{
|
2017-11-09 19:59:29 -08:00
|
|
|
HAL_MatchInfo matchInfo;
|
|
|
|
|
auto status = HAL_GetMatchInfo(&matchInfo);
|
|
|
|
|
if (status == 0) {
|
|
|
|
|
SetMatchInfoObject(env, info, matchInfo);
|
|
|
|
|
}
|
|
|
|
|
return status;
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-05-13 17:09:56 -07:00
|
|
|
* Method: sendError
|
2016-07-10 16:24:57 -07:00
|
|
|
* Signature: (ZIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_sendError
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jboolean isError, jint errorCode, jboolean isLVCode,
|
|
|
|
|
jstring details, jstring location, jstring callStack, jboolean printMsg)
|
|
|
|
|
{
|
2016-12-23 11:13:17 -08:00
|
|
|
JStringRef detailsStr{env, details};
|
|
|
|
|
JStringRef locationStr{env, location};
|
|
|
|
|
JStringRef callStackStr{env, callStack};
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
jint returnValue =
|
|
|
|
|
HAL_SendError(isError, errorCode, isLVCode, detailsStr.c_str(),
|
|
|
|
|
locationStr.c_str(), callStackStr.c_str(), printMsg);
|
2016-07-10 16:24:57 -07:00
|
|
|
return returnValue;
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-29 13:29:07 -07:00
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-04-29 13:29:07 -07:00
|
|
|
* Method: getPortWithModule
|
|
|
|
|
* Signature: (BB)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getPortWithModule
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte module, jbyte channel)
|
|
|
|
|
{
|
2018-04-29 13:29:07 -07:00
|
|
|
HAL_PortHandle port = HAL_GetPortWithModule(module, channel);
|
|
|
|
|
return (jint)port;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2018-09-20 21:59:46 -07:00
|
|
|
* Class: edu_wpi_first_hal_HAL
|
2018-04-29 13:29:07 -07:00
|
|
|
* Method: getPort
|
|
|
|
|
* Signature: (B)I
|
|
|
|
|
*/
|
2018-05-13 17:09:56 -07:00
|
|
|
JNIEXPORT jint JNICALL
|
2018-09-20 21:59:46 -07:00
|
|
|
Java_edu_wpi_first_hal_HAL_getPort
|
2018-05-13 17:09:56 -07:00
|
|
|
(JNIEnv* env, jclass, jbyte channel)
|
|
|
|
|
{
|
2018-04-29 13:29:07 -07:00
|
|
|
HAL_PortHandle port = HAL_GetPort(channel);
|
|
|
|
|
return (jint)port;
|
|
|
|
|
}
|
|
|
|
|
|
2016-07-10 16:24:57 -07:00
|
|
|
} // extern "C"
|