2016-01-02 03:02:34 -08:00
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
/* Copyright (c) FIRST 2016. 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. */
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
2014-01-06 09:27:51 -05:00
|
|
|
#include <jni.h>
|
|
|
|
|
#include <assert.h>
|
2014-05-02 17:54:01 -04:00
|
|
|
#include "Log.hpp"
|
2014-01-06 09:27:51 -05:00
|
|
|
|
|
|
|
|
#include "edu_wpi_first_wpilibj_hal_SPIJNI.h"
|
|
|
|
|
|
2014-07-16 16:24:44 -04:00
|
|
|
#include "HAL/Digital.hpp"
|
2015-11-01 09:11:52 -08:00
|
|
|
#include "HALUtil.h"
|
2014-01-06 09:27:51 -05:00
|
|
|
|
|
|
|
|
// set the logging level
|
2014-05-30 10:08:29 -04:00
|
|
|
TLogLevel spiJNILogLevel = logWARNING;
|
2014-01-06 09:27:51 -05:00
|
|
|
|
|
|
|
|
#define SPIJNI_LOG(level) \
|
|
|
|
|
if (level > spiJNILogLevel) ; \
|
|
|
|
|
else Log().Get(level)
|
|
|
|
|
|
2015-11-01 09:11:52 -08:00
|
|
|
extern "C" {
|
|
|
|
|
|
2014-01-06 09:27:51 -05:00
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiInitialize
|
2015-11-01 09:11:52 -08:00
|
|
|
* Signature: (B)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiInitialize
|
2015-11-01 09:11:52 -08:00
|
|
|
(JNIEnv * env, jclass, jbyte port)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiInitialize";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
int32_t status = 0;
|
|
|
|
|
spiInitialize(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiTransaction
|
|
|
|
|
* Signature: (BLjava/nio/ByteBuffer;Ljava/nio/ByteBuffer;B)I
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiTransaction
|
|
|
|
|
(JNIEnv * env, jclass, jbyte port, jobject dataToSend, jobject dataReceived, jbyte size)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiTransaction";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
uint8_t* dataToSendPtr = nullptr;
|
|
|
|
|
if (dataToSend != 0) {
|
|
|
|
|
dataToSendPtr = (uint8_t*)env->GetDirectBufferAddress(dataToSend);
|
2014-07-16 16:24:44 -04:00
|
|
|
}
|
2015-11-01 09:11:52 -08:00
|
|
|
uint8_t* dataReceivedPtr = (uint8_t*)env->GetDirectBufferAddress(dataReceived);
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Size = " << (jint)size;
|
2015-11-01 09:11:52 -08:00
|
|
|
SPIJNI_LOG(logDEBUG) << "DataToSendPtr = " << dataToSendPtr;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "DataReceivedPtr = " << dataReceivedPtr;
|
|
|
|
|
jint retVal = spiTransaction(port, dataToSendPtr, dataReceivedPtr, size);
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << (jint)retVal;
|
|
|
|
|
return retVal;
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiWrite
|
|
|
|
|
* Signature: (BLjava/nio/ByteBuffer;B)I
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiWrite
|
|
|
|
|
(JNIEnv * env, jclass, jbyte port, jobject dataToSend, jbyte size)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiWrite";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
uint8_t* dataToSendPtr = nullptr;
|
|
|
|
|
if (dataToSend != 0) {
|
|
|
|
|
dataToSendPtr = (uint8_t*)env->GetDirectBufferAddress(dataToSend);
|
2014-07-16 16:24:44 -04:00
|
|
|
}
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Size = " << (jint)size;
|
2015-11-01 09:11:52 -08:00
|
|
|
SPIJNI_LOG(logDEBUG) << "DataToSendPtr = " << dataToSendPtr;
|
|
|
|
|
jint retVal = spiWrite(port, dataToSendPtr, size);
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << (jint)retVal;
|
|
|
|
|
return retVal;
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiRead
|
|
|
|
|
* Signature: (BLjava/nio/ByteBuffer;B)I
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiRead
|
|
|
|
|
(JNIEnv * env, jclass, jbyte port, jobject dataReceived, jbyte size)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiRead";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
uint8_t* dataReceivedPtr = (uint8_t*)env->GetDirectBufferAddress(dataReceived);
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Size = " << (jint)size;
|
2015-11-01 09:11:52 -08:00
|
|
|
SPIJNI_LOG(logDEBUG) << "DataReceivedPtr = " << dataReceivedPtr;
|
|
|
|
|
jint retVal = spiRead(port, (uint8_t*)dataReceivedPtr, size);
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << (jint)retVal;
|
|
|
|
|
return retVal;
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiClose
|
|
|
|
|
* Signature: (B)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiClose
|
|
|
|
|
(JNIEnv *, jclass, jbyte port)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiClose";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
spiClose(port);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiSetSpeed
|
|
|
|
|
* Signature: (BI)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetSpeed
|
|
|
|
|
(JNIEnv *, jclass, jbyte port, jint speed)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetSpeed";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Speed = " << (jint) speed;
|
|
|
|
|
spiSetSpeed(port, speed);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiSetOpts
|
|
|
|
|
* Signature: (BIII)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetOpts
|
|
|
|
|
(JNIEnv *, jclass, jbyte port, jint msb_first, jint sample_on_trailing, jint clk_idle_high)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetOpts";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "msb_first = " << msb_first;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "sample_on_trailing = " << sample_on_trailing;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "clk_idle_high = " << clk_idle_high;
|
|
|
|
|
spiSetOpts(port, msb_first, sample_on_trailing, clk_idle_high);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiSetChipSelectActiveHigh
|
2015-11-01 09:11:52 -08:00
|
|
|
* Signature: (B)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetChipSelectActiveHigh
|
2015-11-01 09:11:52 -08:00
|
|
|
(JNIEnv * env, jclass, jbyte port)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetCSActiveHigh";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
int32_t status = 0;
|
|
|
|
|
spiSetChipSelectActiveHigh(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
2014-07-16 16:24:44 -04:00
|
|
|
* Method: spiSetChipSelectActiveLow
|
2015-11-01 09:11:52 -08:00
|
|
|
* Signature: (B)V
|
2014-01-06 09:27:51 -05:00
|
|
|
*/
|
2014-07-16 16:24:44 -04:00
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetChipSelectActiveLow
|
2015-11-01 09:11:52 -08:00
|
|
|
(JNIEnv * env, jclass, jbyte port)
|
2014-01-06 09:27:51 -05:00
|
|
|
{
|
2014-07-16 16:24:44 -04:00
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetCSActiveLow";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
2015-11-01 09:11:52 -08:00
|
|
|
int32_t status = 0;
|
|
|
|
|
spiSetChipSelectActiveLow(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
2014-01-06 09:27:51 -05:00
|
|
|
}
|
|
|
|
|
|
2015-11-22 11:50:49 -08:00
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiInitAccumulator
|
|
|
|
|
* Signature: (BIIBIIBBZZ)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiInitAccumulator
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port, jint period, jint cmd, jbyte xferSize, jint validMask, jint validValue, jbyte dataShift, jbyte dataSize, jboolean isSigned, jboolean bigEndian)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiInitAccumulator";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Period = " << period;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Cmd = " << cmd;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "XferSize = " << (jint) xferSize;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ValidMask = " << validMask;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ValidValue = " << validValue;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "DataShift = " << (jint) dataShift;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "DataSize = " << (jint) dataSize;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "IsSigned = " << (jint) isSigned;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "BigEndian = " << (jint) bigEndian;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
spiInitAccumulator(port, period, cmd, xferSize, validMask, validValue,
|
|
|
|
|
dataShift, dataSize, isSigned, bigEndian, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiFreeAccumulator
|
|
|
|
|
* Signature: (B)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiFreeAccumulator
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiFreeAccumulator";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
spiFreeAccumulator(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiResetAccumulator
|
|
|
|
|
* Signature: (B)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiResetAccumulator
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiResetAccumulator";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
spiResetAccumulator(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiSetAccumulatorCenter
|
|
|
|
|
* Signature: (BI)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetAccumulatorCenter
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port, jint center)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetAccumulatorCenter";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Center = " << center;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
spiSetAccumulatorCenter(port, center, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiSetAccumulatorDeadband
|
|
|
|
|
* Signature: (BI)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiSetAccumulatorDeadband
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port, jint deadband)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiSetAccumulatorDeadband";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Deadband = " << deadband;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
spiSetAccumulatorDeadband(port, deadband, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiGetAccumulatorLastValue
|
|
|
|
|
* Signature: (B)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiGetAccumulatorLastValue
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiGetAccumulatorLastValue";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
jint retVal = spiGetAccumulatorLastValue(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << retVal;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return retVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiGetAccumulatorValue
|
|
|
|
|
* Signature: (B)J
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jlong JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiGetAccumulatorValue
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiGetAccumulatorValue";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
jlong retVal = spiGetAccumulatorValue(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << retVal;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return retVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiGetAccumulatorCount
|
|
|
|
|
* Signature: (B)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiGetAccumulatorCount
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiGetAccumulatorCount";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
jint retVal = spiGetAccumulatorCount(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << retVal;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return retVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiGetAccumulatorAverage
|
|
|
|
|
* Signature: (B)D
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jdouble JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiGetAccumulatorAverage
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiGetAccumulatorAverage";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
jdouble retVal = spiGetAccumulatorAverage(port, &status);
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "ReturnValue = " << retVal;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return retVal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_first_wpilibj_hal_SPIJNI
|
|
|
|
|
* Method: spiGetAccumulatorOutput
|
|
|
|
|
* Signature: (BLjava/nio/LongBuffer;Ljava/nio/IntBuffer;)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiGetAccumulatorOutput
|
|
|
|
|
(JNIEnv *env, jclass, jbyte port, jobject value, jobject count)
|
|
|
|
|
{
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiGetAccumulatorOutput";
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port;
|
|
|
|
|
int32_t status = 0;
|
|
|
|
|
|
|
|
|
|
jlong * valuePtr = (jlong*)env->GetDirectBufferAddress(value);
|
|
|
|
|
uint32_t * countPtr = (uint32_t*)env->GetDirectBufferAddress(count);
|
|
|
|
|
|
|
|
|
|
spiGetAccumulatorOutput(port, valuePtr, countPtr, &status);
|
|
|
|
|
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Status = " << status;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Value = " << *valuePtr;
|
|
|
|
|
SPIJNI_LOG(logDEBUG) << "Count = " << *countPtr;
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-01 09:11:52 -08:00
|
|
|
} // extern "C"
|