Switches JNI to use new jni_util methods (#404)

* Uses WPIUtil string objects in JNI

* Switches JNI to use new jni_util classes
This commit is contained in:
Thad House
2016-12-23 11:13:17 -08:00
committed by Peter Johnson
parent bf9f0a9e6d
commit cc246bb9ac
5 changed files with 82 additions and 197 deletions

View File

@@ -15,8 +15,10 @@
#include "HAL/DriverStation.h"
#include "edu_wpi_first_wpilibj_hal_HAL.h"
#include "HALUtil.h"
#include "support/jni_util.h"
using namespace frc;
using namespace wpi::java;
// set the logging level
static TLogLevel netCommLogLevel = logWARNING;
@@ -99,15 +101,14 @@ JNIEXPORT jint JNICALL
Java_edu_wpi_first_wpilibj_hal_HAL_report(
JNIEnv* paramEnv, jclass, jint paramResource, jint paramInstanceNumber,
jint paramContext, jstring paramFeature) {
const char *featureStr = paramEnv->GetStringUTFChars(paramFeature, nullptr);
JStringRef featureStr{paramEnv, paramFeature};
NETCOMM_LOG(logDEBUG) << "Calling HAL report "
<< "res:" << paramResource
<< " instance:" << paramInstanceNumber
<< " context:" << paramContext
<< " feature:" << featureStr;
<< " feature:" << featureStr.c_str();
jint returnValue =
HAL_Report(paramResource, paramInstanceNumber, paramContext, featureStr);
paramEnv->ReleaseStringUTFChars(paramFeature, featureStr);
HAL_Report(paramResource, paramInstanceNumber, paramContext, featureStr.c_str());
return returnValue;
}
@@ -257,7 +258,7 @@ Java_edu_wpi_first_wpilibj_hal_HAL_getJoystickName(JNIEnv* env, jclass,
jbyte port) {
NETCOMM_LOG(logDEBUG) << "Calling HAL_GetJoystickName";
char *joystickName = HAL_GetJoystickName(port);
jstring str = env->NewStringUTF(joystickName);
jstring str = MakeJString(env, joystickName);
std::free(joystickName);
return str;
}
@@ -330,13 +331,11 @@ Java_edu_wpi_first_wpilibj_hal_HAL_getBrownedOut(JNIEnv* env, jclass) {
JNIEXPORT jint JNICALL
Java_edu_wpi_first_wpilibj_hal_HAL_setErrorData(JNIEnv* env, jclass,
jstring error) {
const char *errorStr = env->GetStringUTFChars(error, nullptr);
jsize length = env->GetStringUTFLength(error);
JStringRef errorStr{env, error};
NETCOMM_LOG(logDEBUG) << "Set Error: " << errorStr;
NETCOMM_LOG(logDEBUG) << "Length: " << length;
jint returnValue = HAL_SetErrorData(errorStr, (jint)length, 0);
env->ReleaseStringUTFChars(error, errorStr);
NETCOMM_LOG(logDEBUG) << "Set Error: " << errorStr.c_str();
NETCOMM_LOG(logDEBUG) << "Length: " << errorStr.size();
jint returnValue = HAL_SetErrorData(errorStr.c_str(), (int32_t)errorStr.size(), 0);
return returnValue;
}
@@ -352,18 +351,15 @@ Java_edu_wpi_first_wpilibj_hal_HAL_sendError(JNIEnv* env, jclass,
jstring location,
jstring callStack,
jboolean printMsg) {
const char *detailsStr = env->GetStringUTFChars(details, nullptr);
const char *locationStr = env->GetStringUTFChars(location, nullptr);
const char *callStackStr = env->GetStringUTFChars(callStack, nullptr);
JStringRef detailsStr{env, details};
JStringRef locationStr{env, location};
JStringRef callStackStr{env, callStack};
NETCOMM_LOG(logDEBUG) << "Send Error: " << detailsStr;
NETCOMM_LOG(logDEBUG) << "Location: " << locationStr;
NETCOMM_LOG(logDEBUG) << "Call Stack: " << callStackStr;
jint returnValue = HAL_SendError(isError, errorCode, isLVCode, detailsStr,
locationStr, callStackStr, printMsg);
env->ReleaseStringUTFChars(details, detailsStr);
env->ReleaseStringUTFChars(location, locationStr);
env->ReleaseStringUTFChars(callStack, callStackStr);
NETCOMM_LOG(logDEBUG) << "Send Error: " << detailsStr.c_str();
NETCOMM_LOG(logDEBUG) << "Location: " << locationStr.c_str();
NETCOMM_LOG(logDEBUG) << "Call Stack: " << callStackStr.c_str();
jint returnValue = HAL_SendError(isError, errorCode, isLVCode, detailsStr.c_str(),
locationStr.c_str(), callStackStr.c_str(), printMsg);
return returnValue;
}