mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[hal] Add high level way of getting systemserver NT instance (#7683)
This commit is contained in:
@@ -69,6 +69,8 @@ cc_library(
|
||||
":generated_cc_headers",
|
||||
":mrc_cc_headers",
|
||||
":generated_mrc_cc_headers",
|
||||
"//ntcore:ntcore.static",
|
||||
"//wpinet:wpinet.static",
|
||||
"//wpiutil:wpiutil.static",
|
||||
] + HAL_DEPS,
|
||||
)
|
||||
@@ -78,6 +80,8 @@ java_library(
|
||||
srcs = [":generated_java"] + glob(["src/main/java/**/*.java"]),
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//ntcore:networktables-java",
|
||||
"//wpinet:wpinet-java",
|
||||
"//wpiutil:wpiutil-java",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ target_include_directories(
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/generated/main/native/include>
|
||||
$<INSTALL_INTERFACE:${include_dest}/hal>
|
||||
)
|
||||
target_link_libraries(hal PUBLIC wpiutil)
|
||||
target_link_libraries(hal PUBLIC ntcore wpiutil)
|
||||
|
||||
set_property(TARGET hal PROPERTY FOLDER "libraries")
|
||||
|
||||
|
||||
23
hal/src/main/java/edu/wpi/first/hal/SystemServerJNI.java
Normal file
23
hal/src/main/java/edu/wpi/first/hal/SystemServerJNI.java
Normal file
@@ -0,0 +1,23 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
package edu.wpi.first.hal;
|
||||
|
||||
/**
|
||||
* SystemServer JNI Functions.
|
||||
*
|
||||
* @see "SystemServer.h"
|
||||
*/
|
||||
public class SystemServerJNI extends JNIWrapper {
|
||||
/**
|
||||
* Gets the system server NT handle.
|
||||
*
|
||||
* @return The system server NT handle
|
||||
* @see "HAL_GetSystemServerHandle"
|
||||
*/
|
||||
public static native int getSystemServerHandle();
|
||||
|
||||
/** Utility class. */
|
||||
private SystemServerJNI() {}
|
||||
}
|
||||
24
hal/src/main/native/cpp/jni/SystemServerJNI.cpp
Normal file
24
hal/src/main/native/cpp/jni/SystemServerJNI.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#include "edu_wpi_first_hal_SystemServerJNI.h"
|
||||
#include "hal/SystemServer.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
/*
|
||||
* Class: edu_wpi_first_hal_SystemServerJNI
|
||||
* Method: getSystemServerHandle
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_edu_wpi_first_hal_SystemServerJNI_getSystemServerHandle
|
||||
(JNIEnv*, jclass)
|
||||
{
|
||||
return HAL_GetSystemServerHandle();
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
17
hal/src/main/native/include/hal/SystemServer.h
Normal file
17
hal/src/main/native/include/hal/SystemServer.h
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <ntcore_c.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
NT_Inst HAL_GetSystemServerHandle(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
12
hal/src/main/native/sim/SystemServer.cpp
Normal file
12
hal/src/main/native/sim/SystemServer.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "hal/SystemServer.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
NT_Inst HAL_GetSystemServerHandle(void) {
|
||||
return 0;
|
||||
}
|
||||
} // extern "C"
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <wpi/timestamp.h>
|
||||
|
||||
#include "HALInitializer.h"
|
||||
#include "SystemServer.h"
|
||||
#include "SystemServerInternal.h"
|
||||
#include "hal/DriverStation.h"
|
||||
#include "hal/Errors.h"
|
||||
#include "hal/proto/ControlData.h"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "CANInternal.h"
|
||||
#include "HALInitializer.h"
|
||||
#include "HALInternal.h"
|
||||
#include "SystemServer.h"
|
||||
#include "SystemServerInternal.h"
|
||||
#include "hal/DriverStation.h"
|
||||
#include "hal/Errors.h"
|
||||
#include "hal/Notifier.h"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <atomic>
|
||||
|
||||
#include "HALInitializer.h"
|
||||
#include "SystemServer.h"
|
||||
#include "SystemServerInternal.h"
|
||||
|
||||
namespace hal {
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "SystemServer.h"
|
||||
#include "hal/SystemServer.h"
|
||||
|
||||
#include "SystemServerInternal.h"
|
||||
#include "mrc/NtNetComm.h"
|
||||
|
||||
namespace hal {
|
||||
@@ -33,3 +34,10 @@ nt::NetworkTableInstance GetSystemServer() {
|
||||
}
|
||||
|
||||
} // namespace hal
|
||||
|
||||
extern "C" {
|
||||
|
||||
NT_Inst HAL_GetSystemServerHandle(void) {
|
||||
return hal::ServerInstance.GetHandle();
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
@@ -134,6 +134,16 @@ public final class NetworkTableInstance implements AutoCloseable {
|
||||
return inst;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance from a native handle. This instance is not owned, closing will do nothing.
|
||||
*
|
||||
* @param handle Native instance handle
|
||||
* @return Instance
|
||||
*/
|
||||
public static NetworkTableInstance fromNativeHandle(int handle) {
|
||||
return new NetworkTableInstance(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native handle for the instance.
|
||||
*
|
||||
|
||||
@@ -134,6 +134,16 @@ public final class NetworkTableInstance implements AutoCloseable {
|
||||
return inst;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance from a native handle. This instance is not owned, closing will do nothing.
|
||||
*
|
||||
* @param handle Native instance handle
|
||||
* @return Instance
|
||||
*/
|
||||
public static NetworkTableInstance fromNativeHandle(int handle) {
|
||||
return new NetworkTableInstance(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native handle for the instance.
|
||||
*
|
||||
|
||||
15
wpilibc/src/main/native/cpp/SystemServer.cpp
Normal file
15
wpilibc/src/main/native/cpp/SystemServer.cpp
Normal file
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "frc/SystemServer.h"
|
||||
|
||||
#include <hal/SystemServer.h>
|
||||
|
||||
namespace frc {
|
||||
|
||||
nt::NetworkTableInstance SystemServer::GetSystemServer() {
|
||||
return nt::NetworkTableInstance{HAL_GetSystemServerHandle()};
|
||||
}
|
||||
|
||||
} // namespace frc
|
||||
18
wpilibc/src/main/native/include/frc/SystemServer.h
Normal file
18
wpilibc/src/main/native/include/frc/SystemServer.h
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <networktables/NetworkTableInstance.h>
|
||||
|
||||
namespace frc {
|
||||
|
||||
class SystemServer {
|
||||
public:
|
||||
SystemServer() = delete;
|
||||
|
||||
static nt::NetworkTableInstance GetSystemServer();
|
||||
};
|
||||
|
||||
} // namespace frc
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
package edu.wpi.first.wpilibj;
|
||||
|
||||
import edu.wpi.first.hal.SystemServerJNI;
|
||||
import edu.wpi.first.networktables.NetworkTableInstance;
|
||||
|
||||
/** Class to get system server NT instance. */
|
||||
public final class SystemServer {
|
||||
/**
|
||||
* Gets the system server NT Instance.
|
||||
*
|
||||
* @return NT Instance
|
||||
*/
|
||||
public static NetworkTableInstance getSystemServer() {
|
||||
return NetworkTableInstance.fromNativeHandle(SystemServerJNI.getSystemServerHandle());
|
||||
}
|
||||
|
||||
/** Utility Class. */
|
||||
private SystemServer() {}
|
||||
}
|
||||
Reference in New Issue
Block a user