mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
We don't need to send status data from the user program anymore Change-Id: Ifbdb037cfb4e36681914dd7a3a2f5c56cbead6a2
520 lines
18 KiB
C++
520 lines
18 KiB
C++
#include <jni.h>
|
|
#include <assert.h>
|
|
#include "Log.hpp"
|
|
|
|
#include "edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary.h"
|
|
#include "HAL/HAL.hpp"
|
|
//#include "NetworkCommunication/FRCComm.h"
|
|
//#include "NetworkCommunication/UsageReporting.h"
|
|
|
|
// set the logging level
|
|
TLogLevel netCommLogLevel = logWARNING;
|
|
|
|
#define NETCOMM_LOG(level) \
|
|
if (level > netCommLogLevel) ; \
|
|
else Log().Get(level)
|
|
|
|
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_nAICalibration_getLSBWeight
|
|
* Signature: (IILjava/lang/Integer;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationAICalibrationGetLSBWeight
|
|
(JNIEnv *, jclass, jint, jint, jobject)
|
|
{
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_nAICalibration_getOffset
|
|
* Signature: (IILjava/lang/Integer;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationAICalibrationGetOffset
|
|
(JNIEnv *, jclass, jint, jint, jobject)
|
|
{
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: getTargetClass
|
|
* Signature: ()I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_getTargetClass
|
|
(JNIEnv *, jclass)
|
|
{
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_nLoadOut_getModulePresence
|
|
* Signature: (IB)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationLoadOutGetModulePresence
|
|
(JNIEnv *, jclass, jint, jbyte)
|
|
{
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_nLoadOut_getTargetClass
|
|
* Signature: ()I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationLoadOutGetTargetClass
|
|
(JNIEnv *, jclass)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: report
|
|
* Signature: (IBBLjava/lang/String;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_report
|
|
(JNIEnv *, jclass, jint, jbyte, jbyte, jstring)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_nUsageReporting_report
|
|
* Signature: (BBBLjava/lang/String;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationUsageReportingReport
|
|
(JNIEnv * paramEnv, jclass, jbyte paramResource, jbyte paramInstanceNumber, jbyte paramContext, jstring paramFeature)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Calling FRCNetworkCommunicationsLibrary report " << "res:"<< (unsigned int)paramResource << " instance:" << (unsigned int)paramInstanceNumber << " context:" << (unsigned int)paramContext << " feature:" << paramFeature;
|
|
const char * featureStr = paramEnv->GetStringUTFChars(paramFeature, NULL);
|
|
jint returnValue = HALReport(paramResource, paramInstanceNumber, paramContext, featureStr);
|
|
paramEnv->ReleaseStringUTFChars(paramFeature,featureStr);
|
|
return returnValue;
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: getFPGAHardwareVersion
|
|
* Signature: (Ljava/nio/ShortBuffer;Ljava/nio/IntBuffer;)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_getFPGAHardwareVersion
|
|
(JNIEnv *, jclass, jobject, jobject)
|
|
{
|
|
assert(false);
|
|
}
|
|
|
|
//
|
|
// field ids
|
|
//
|
|
bool initializeComplete = false;
|
|
jclass dataClass;
|
|
jfieldID packetIndexFieldID;
|
|
jfieldID controlFieldID;
|
|
jfieldID dsDigitalInFieldID;
|
|
jfieldID teamIDFieldID;
|
|
jfieldID dsID_AllianceFieldID;
|
|
jfieldID dsID_PositionFieldID;
|
|
jfieldID stick0AxesFieldID;
|
|
jfieldID stick0ButtonsFieldID;
|
|
jfieldID stick1AxesFieldID;
|
|
jfieldID stick1ButtonsFieldID;
|
|
jfieldID stick2AxesFieldID;
|
|
jfieldID stick2ButtonsFieldID;
|
|
jfieldID stick3AxesFieldID;
|
|
jfieldID stick3ButtonsFieldID;
|
|
jfieldID analog1FieldID;
|
|
jfieldID analog2FieldID;
|
|
jfieldID analog3FieldID;
|
|
jfieldID analog4FieldID;
|
|
jfieldID cRIOChecksumFieldID;
|
|
jfieldID FPGAChecksum0FieldID;
|
|
jfieldID FPGAChecksum1FieldID;
|
|
jfieldID FPGAChecksum2FieldID;
|
|
jfieldID FPGAChecksum3FieldID;
|
|
jfieldID versionDataFieldID;
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: setErrorData
|
|
* Signature: (Ljava/lang/String;II)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_setErrorData
|
|
(JNIEnv *, jclass, jstring, jint, jint)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: overrideIOConfig
|
|
* Signature: (Ljava/lang/String;I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_overrideIOConfig
|
|
(JNIEnv *, jclass, jstring, jint)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: signalResyncActionDone
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_signalResyncActionDone
|
|
(JNIEnv *, jclass)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: setNewDataOccurRef
|
|
* Signature: (I)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_setNewDataOccurRef
|
|
(JNIEnv *, jclass, jint)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: setResyncOccurRef
|
|
* Signature: (I)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_setResyncOccurRef
|
|
(JNIEnv *, jclass, jint)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_getVersionString
|
|
* Signature: (Ljava/nio/ByteBuffer;)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationGetVersionString
|
|
(JNIEnv *, jclass, jobject)
|
|
{
|
|
assert(false);
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_observeUserProgramStarting
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationObserveUserProgramStarting
|
|
(JNIEnv *, jclass)
|
|
{
|
|
HALNetworkCommunicationObserveUserProgramStarting();
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_observeUserProgramDisabled
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationObserveUserProgramDisabled
|
|
(JNIEnv *, jclass)
|
|
{
|
|
HALNetworkCommunicationObserveUserProgramDisabled();
|
|
}
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_observeUserProgramAutonomous
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationObserveUserProgramAutonomous
|
|
(JNIEnv *, jclass)
|
|
{
|
|
HALNetworkCommunicationObserveUserProgramAutonomous();
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_observeUserProgramTeleop
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationObserveUserProgramTeleop
|
|
(JNIEnv *, jclass)
|
|
{
|
|
HALNetworkCommunicationObserveUserProgramTeleop();
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRC_NetworkCommunicationsLibrary
|
|
* Method: FRC_NetworkCommunication_observeUserProgramTest
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationObserveUserProgramTest
|
|
(JNIEnv *, jclass)
|
|
{
|
|
HALNetworkCommunicationObserveUserProgramTest();
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: FRCNetworkCommunicationReserve
|
|
* Signature: ()V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_FRCNetworkCommunicationReserve
|
|
(JNIEnv *, jclass)
|
|
{
|
|
assert(1 == HALInitialize(0));
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: NativeHALGetControlWord
|
|
* Signature: ()I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_NativeHALGetControlWord
|
|
(JNIEnv *, jclass)
|
|
{
|
|
jint controlWord;
|
|
HALGetControlWord((HALControlWord*)&controlWord);
|
|
return controlWord;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: NativeHALGetAllianceStation
|
|
* Signature: ()I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_NativeHALGetAllianceStation
|
|
(JNIEnv *, jclass)
|
|
{
|
|
jint allianceStation;
|
|
HALGetAllianceStation((HALAllianceStationID*)&allianceStation);
|
|
return allianceStation;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: HALGetJoystickAxes
|
|
* Signature: (B)[S
|
|
*/
|
|
JNIEXPORT jshortArray JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_HALGetJoystickAxes
|
|
(JNIEnv * env, jclass, jbyte joystickNum)
|
|
{
|
|
HALJoystickAxes axes;
|
|
HALGetJoystickAxes(joystickNum, &axes, 6);
|
|
|
|
jshortArray axesArray = env->NewShortArray(axes.count);
|
|
env->SetShortArrayRegion(axesArray, 0, axes.count, axes.axes);
|
|
|
|
return axesArray;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: HALGetJoystickButtons
|
|
* Signature: (B)S
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_HALGetJoystickButtons
|
|
(JNIEnv *, jclass, jbyte joystickNum)
|
|
{
|
|
HALJoystickButtons buttons;
|
|
uint8_t count;
|
|
|
|
HALGetJoystickButtons(joystickNum, &buttons, &count);
|
|
|
|
return buttons;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: setNewDataSem
|
|
* Signature: ([B)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_setNewDataSem
|
|
(JNIEnv * env, jclass, jobject id )
|
|
{
|
|
MUTEX_ID* javaId = (MUTEX_ID*)env->GetDirectBufferAddress(id);
|
|
NETCOMM_LOG(logDEBUG) << "Mutex Ptr = " << *javaId;
|
|
HALSetNewDataSem(*javaId);
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueParameterTest
|
|
* Signature: (ZBCSIJFD)V
|
|
*/
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueParameterTest
|
|
(JNIEnv *, jclass, jboolean booleanParam, jbyte byteParam, jchar charParam, jshort shortParam, jint intParam, jlong longParam, jfloat floatParam, jdouble doubleParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Boolean: " << booleanParam;
|
|
NETCOMM_LOG(logDEBUG) << "Byte : " << byteParam;
|
|
NETCOMM_LOG(logDEBUG) << "Char : " << charParam;
|
|
NETCOMM_LOG(logDEBUG) << "Short : " << shortParam;
|
|
NETCOMM_LOG(logDEBUG) << "Int : " << intParam;
|
|
NETCOMM_LOG(logDEBUG) << "Long : " << longParam;
|
|
NETCOMM_LOG(logDEBUG) << "Float : " << floatParam;
|
|
NETCOMM_LOG(logDEBUG) << "Double : " << doubleParam;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnBooleanTest
|
|
* Signature: (Z)Z
|
|
*/
|
|
JNIEXPORT jboolean JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnBooleanTest
|
|
(JNIEnv *, jclass, jboolean booleanParam )
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Boolean: " << booleanParam;
|
|
return !booleanParam;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnByteTest
|
|
* Signature: (B)B
|
|
*/
|
|
JNIEXPORT jbyte JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnByteTest
|
|
(JNIEnv *, jclass, jbyte byteParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Byte: " << byteParam;
|
|
return byteParam+1;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnCharTest
|
|
* Signature: (C)C
|
|
*/
|
|
JNIEXPORT jchar JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnCharTest
|
|
(JNIEnv *, jclass, jchar charParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Char: " << charParam;
|
|
return charParam+1;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnShortTest
|
|
* Signature: (S)S
|
|
*/
|
|
JNIEXPORT jshort JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnShortTest
|
|
(JNIEnv *, jclass, jshort shortParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Short: " << shortParam;
|
|
return shortParam+1;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnIntTest
|
|
* Signature: (I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnIntTest
|
|
(JNIEnv *, jclass, jint intParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Int: " << intParam;
|
|
return intParam+1;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnLongTest
|
|
* Signature: (J)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnLongTest
|
|
(JNIEnv *, jclass, jlong longParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Long: " << longParam;
|
|
return longParam+1;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnFloatTest
|
|
* Signature: (F)F
|
|
*/
|
|
JNIEXPORT jfloat JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnFloatTest
|
|
(JNIEnv *, jclass, jfloat floatParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Float: " << floatParam;
|
|
return floatParam/100.0f;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIValueReturnDoubleTest
|
|
* Signature: (D)D
|
|
*/
|
|
JNIEXPORT jdouble JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIValueReturnDoubleTest
|
|
(JNIEnv *, jclass, jdouble doubleParam)
|
|
{
|
|
NETCOMM_LOG(logDEBUG) << "Double: " << doubleParam;
|
|
return doubleParam * 100.0;
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIObjectReturnString
|
|
* Signature: (Ljava/lang/String;)Ljava/lang/String;
|
|
*/
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIObjectReturnStringTest
|
|
(JNIEnv * env, jclass, jstring stringParam)
|
|
{
|
|
const char * stringParamLocal = env->GetStringUTFChars(stringParam, NULL);
|
|
NETCOMM_LOG(logDEBUG) << "String: " << stringParamLocal;
|
|
env->ReleaseStringUTFChars(stringParam,stringParamLocal);
|
|
|
|
char returnStringLocal[] = "this is the return string";
|
|
|
|
return env->NewStringUTF(returnStringLocal);
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIObjectReturnByteBufferTest
|
|
* Signature: (Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
|
|
*/
|
|
JNIEXPORT jobject JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIObjectReturnByteBufferTest
|
|
(JNIEnv * env, jclass, jobject byteArrayIn )
|
|
{
|
|
jbyte * byteArray = (jbyte*)env->GetDirectBufferAddress(byteArrayIn);
|
|
NETCOMM_LOG(logDEBUG) << "Ptr: " << (long)byteArray;
|
|
jlong byteArrayLength = env->GetDirectBufferCapacity(byteArrayIn);
|
|
NETCOMM_LOG(logDEBUG) << "Capacity: " << byteArrayLength;
|
|
NETCOMM_LOG(logDEBUG) << "Byte0: " << (short)byteArray[0];
|
|
NETCOMM_LOG(logDEBUG) << "Byte1: " << (short)byteArray[1];
|
|
NETCOMM_LOG(logDEBUG) << "Byte2: " << (short)byteArray[2];
|
|
NETCOMM_LOG(logDEBUG) << "Byte3: " << (short)byteArray[3];
|
|
|
|
jbyte * returnByteArray = new jbyte[4];
|
|
returnByteArray[0] = byteArray[0];
|
|
returnByteArray[1] = byteArray[1];
|
|
returnByteArray[2] = byteArray[2];
|
|
returnByteArray[3] = byteArray[3];
|
|
|
|
return env->NewDirectByteBuffer(returnByteArray, 4);
|
|
}
|
|
|
|
/*
|
|
* Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary
|
|
* Method: JNIObjectAndParamReturnIntBufferTest
|
|
* Signature: (Ljava/nio/IntBuffer;)Ljava/nio/ByteBuffer;
|
|
*/
|
|
JNIEXPORT jobject JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_JNIObjectAndParamReturnIntBufferTest
|
|
(JNIEnv * env, jclass, jobject intArrayIn)
|
|
{
|
|
jint * intArray = (jint*)env->GetDirectBufferAddress(intArrayIn);
|
|
jbyte * byteArray = (jbyte*)env->GetDirectBufferAddress(intArrayIn);
|
|
NETCOMM_LOG(logDEBUG) << "Ptr: " << (long)intArray;
|
|
jlong byteArrayLength = env->GetDirectBufferCapacity(intArrayIn);
|
|
NETCOMM_LOG(logDEBUG) << "Capacity: " << byteArrayLength;
|
|
NETCOMM_LOG(logDEBUG) << "Int0: " << intArray[0];
|
|
NETCOMM_LOG(logDEBUG) << "Byte0: " << (short)byteArray[0];
|
|
NETCOMM_LOG(logDEBUG) << "Byte1: " << (short)byteArray[1];
|
|
NETCOMM_LOG(logDEBUG) << "Byte2: " << (short)byteArray[2];
|
|
NETCOMM_LOG(logDEBUG) << "Byte3: " << (short)byteArray[3];
|
|
|
|
// increment the param
|
|
intArray[0]++;
|
|
|
|
jbyte * returnByteArray = new jbyte[4];
|
|
returnByteArray[0] = byteArray[0];
|
|
returnByteArray[1] = byteArray[1];
|
|
returnByteArray[2] = byteArray[2];
|
|
returnByteArray[3] = byteArray[3];
|
|
|
|
return env->NewDirectByteBuffer(returnByteArray, 4);
|
|
}
|