mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[hal] Add CAN Stream API to Java through JNI bindings (#4193)
The CAN Stream API allows defining an buffer to receive an arbitrary set of CAN messages, based on an ID and a mask. Messages are added to this queue separate of other CAN APIs. This means the messages can be receive without impacting other APIs such as vendor APIs. This enables things like detection of what devices are on the bus, or custom decoding, without using vendor APIs. Co-authored-by: Thad House <thadhouse1@gmail.com>
This commit is contained in:
@@ -52,6 +52,7 @@ static JClass canStatusCls;
|
||||
static JClass matchInfoDataCls;
|
||||
static JClass accumulatorResultCls;
|
||||
static JClass canDataCls;
|
||||
static JClass canStreamMessageCls;
|
||||
static JClass halValueCls;
|
||||
static JClass baseStoreCls;
|
||||
static JClass revPHVersionCls;
|
||||
@@ -64,6 +65,7 @@ static const JClassInit classes[] = {
|
||||
{"edu/wpi/first/hal/MatchInfoData", &matchInfoDataCls},
|
||||
{"edu/wpi/first/hal/AccumulatorResult", &accumulatorResultCls},
|
||||
{"edu/wpi/first/hal/CANData", &canDataCls},
|
||||
{"edu/wpi/first/hal/CANStreamMessage", &canStreamMessageCls},
|
||||
{"edu/wpi/first/hal/HALValue", &halValueCls},
|
||||
{"edu/wpi/first/hal/DMAJNISample$BaseStore", &baseStoreCls},
|
||||
{"edu/wpi/first/hal/REVPHVersion", &revPHVersionCls}};
|
||||
@@ -303,6 +305,18 @@ jbyteArray SetCANDataObject(JNIEnv* env, jobject canData, int32_t length,
|
||||
return retVal;
|
||||
}
|
||||
|
||||
jbyteArray SetCANStreamObject(JNIEnv* env, jobject canStreamData,
|
||||
int32_t length, uint32_t messageID,
|
||||
uint64_t timestamp) {
|
||||
static jmethodID func =
|
||||
env->GetMethodID(canStreamMessageCls, "setStreamData", "(IIJ)[B");
|
||||
|
||||
jbyteArray retVal = static_cast<jbyteArray>(env->CallObjectMethod(
|
||||
canStreamData, func, static_cast<jint>(length),
|
||||
static_cast<jint>(messageID), static_cast<jlong>(timestamp)));
|
||||
return retVal;
|
||||
}
|
||||
|
||||
jobject CreateHALValue(JNIEnv* env, const HAL_Value& value) {
|
||||
static jmethodID fromNative = env->GetStaticMethodID(
|
||||
halValueCls, "fromNative", "(IJD)Ledu/wpi/first/hal/HALValue;");
|
||||
|
||||
Reference in New Issue
Block a user