2016-01-02 03:02:34 -08:00
|
|
|
/*----------------------------------------------------------------------------*/
|
2019-09-28 11:34:46 -07:00
|
|
|
/* Copyright (c) 2016-2019 FIRST. All Rights Reserved. */
|
2016-01-02 03:02:34 -08: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-05-13 17:09:56 -07:00
|
|
|
#ifndef HAL_HAL_SRC_MAIN_NATIVE_CPP_JNI_HALUTIL_H_
|
|
|
|
|
#define HAL_HAL_SRC_MAIN_NATIVE_CPP_JNI_HALUTIL_H_
|
2015-11-01 09:11:52 -08:00
|
|
|
|
|
|
|
|
#include <jni.h>
|
2018-05-13 17:09:56 -07:00
|
|
|
#include <stdint.h>
|
2015-11-01 09:11:52 -08:00
|
|
|
|
2018-09-24 22:17:17 -07:00
|
|
|
#include <wpi/StringRef.h>
|
|
|
|
|
|
2017-11-09 19:59:29 -08:00
|
|
|
struct HAL_MatchInfo;
|
2019-09-28 11:34:46 -07:00
|
|
|
struct HAL_Value;
|
2017-11-09 19:59:29 -08:00
|
|
|
|
2016-10-31 23:04:49 -07:00
|
|
|
namespace frc {
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
void ReportError(JNIEnv* env, int32_t status, bool doThrow = true);
|
2017-11-09 19:59:29 -08:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
void ThrowError(JNIEnv* env, int32_t status, int32_t minRange, int32_t maxRange,
|
2016-09-29 20:18:40 -07:00
|
|
|
int32_t requestedValue);
|
2015-11-01 09:11:52 -08:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
inline bool CheckStatus(JNIEnv* env, int32_t status, bool doThrow = true) {
|
2017-08-07 17:36:34 -07:00
|
|
|
if (status != 0) ReportError(env, status, doThrow);
|
2016-07-13 20:29:28 -07:00
|
|
|
return status == 0;
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
inline bool CheckStatusRange(JNIEnv* env, int32_t status, int32_t minRange,
|
2016-09-29 20:18:40 -07:00
|
|
|
int32_t maxRange, int32_t requestedValue) {
|
|
|
|
|
if (status != 0) ThrowError(env, status, minRange, maxRange, requestedValue);
|
|
|
|
|
return status == 0;
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
inline bool CheckStatusForceThrow(JNIEnv* env, int32_t status) {
|
2016-09-29 20:18:40 -07:00
|
|
|
if (status != 0) ThrowError(env, status, 0, 0, 0);
|
2015-11-01 09:11:52 -08:00
|
|
|
return status == 0;
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
void ReportCANError(JNIEnv* env, int32_t status, int32_t message_id);
|
2015-11-01 09:11:52 -08:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
inline bool CheckCANStatus(JNIEnv* env, int32_t status, int32_t message_id) {
|
2015-11-01 09:11:52 -08:00
|
|
|
if (status != 0) ReportCANError(env, status, message_id);
|
|
|
|
|
return status == 0;
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-24 22:17:17 -07:00
|
|
|
void ThrowIllegalArgumentException(JNIEnv* env, wpi::StringRef msg);
|
2018-05-13 17:09:56 -07:00
|
|
|
void ThrowBoundaryException(JNIEnv* env, double value, double lower,
|
2015-11-01 09:11:52 -08:00
|
|
|
double upper);
|
2017-11-09 19:59:29 -08:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
jobject CreatePWMConfigDataResult(JNIEnv* env, int32_t maxPwm,
|
|
|
|
|
int32_t deadbandMaxPwm, int32_t centerPwm,
|
|
|
|
|
int32_t deadbandMinPwm, int32_t minPwm);
|
2017-10-21 15:32:05 -07:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
void SetCanStatusObject(JNIEnv* env, jobject canStatus,
|
|
|
|
|
float percentBusUtilization, uint32_t busOffCount,
|
|
|
|
|
uint32_t txFullCount, uint32_t receiveErrorCount,
|
2017-10-21 15:32:05 -07:00
|
|
|
uint32_t transmitErrorCount);
|
2017-11-09 19:59:29 -08:00
|
|
|
|
|
|
|
|
void SetMatchInfoObject(JNIEnv* env, jobject matchStatus,
|
|
|
|
|
const HAL_MatchInfo& matchInfo);
|
|
|
|
|
|
2017-11-14 00:00:45 -08:00
|
|
|
void SetAccumulatorResultObject(JNIEnv* env, jobject accumulatorResult,
|
|
|
|
|
int64_t value, int64_t count);
|
|
|
|
|
|
2018-05-21 16:09:38 -07:00
|
|
|
jbyteArray SetCANDataObject(JNIEnv* env, jobject canData, int32_t length,
|
|
|
|
|
uint64_t timestamp);
|
|
|
|
|
|
2019-09-28 11:34:46 -07:00
|
|
|
jobject CreateHALValue(JNIEnv* env, const HAL_Value& value);
|
|
|
|
|
|
2018-04-29 13:29:07 -07:00
|
|
|
JavaVM* GetJVM();
|
|
|
|
|
|
2016-10-31 23:04:49 -07:00
|
|
|
} // namespace frc
|
2015-11-01 09:11:52 -08:00
|
|
|
|
2018-05-13 17:09:56 -07:00
|
|
|
#endif // HAL_HAL_SRC_MAIN_NATIVE_CPP_JNI_HALUTIL_H_
|