mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-22 01:11:40 +00:00
The old GPIO abstraction was replaced with [`diozero`](https://www.diozero.com), which supports most hardware running Linux due to its use of GPIO character devices provided by the Linux kernel. `diozero` also supports [alternate providers](https://www.diozero.com/concepts/providers.html#providers) if for some reason the character device API is insufficient. Certain capabilities outside of the character device API is also implemented for common hardware. Custom GPIO commands are implemented via a custom `diozero` provider. The configuration for custom GPIO will need manually updated according to the Hardware Config documentation page. The status LED class was also reworked to support additional statuses or LED indication types, although none have been added yet. This was tested on a RPi 5 with LL3 illumination LEDs and an RGB status led attached. All capabilities worked as expected. All 8 status LED colors were tested and functional via modifying the code. Basic functionality of custom GPIO was tested with dummy commands.
85 lines
3.0 KiB
Groovy
85 lines
3.0 KiB
Groovy
apply plugin: 'edu.wpi.first.WpilibTools'
|
|
|
|
import java.nio.file.Path
|
|
|
|
ext.licenseFile = file("$rootDir/LICENSE")
|
|
apply from: "${rootDir}/shared/common.gradle"
|
|
|
|
wpilibTools.deps.wpilibVersion = wpi.versions.wpilibVersion.get()
|
|
|
|
def nativeConfigName = 'wpilibNatives'
|
|
configurations {
|
|
wpilibNatives
|
|
}
|
|
def nativeTasks = wpilibTools.createExtractionTasks {
|
|
configurationName = nativeConfigName
|
|
}
|
|
|
|
nativeTasks.addToSourceSetResources(sourceSets.main)
|
|
|
|
dependencies {
|
|
wpilibNatives project(path: ':photon-targeting', configuration: 'wpilibNatives')
|
|
wpilibNatives wpilibTools.deps.wpilib("wpimath")
|
|
wpilibNatives wpilibTools.deps.wpilib("wpinet")
|
|
wpilibNatives wpilibTools.deps.wpilib("wpiutil")
|
|
wpilibNatives wpilibTools.deps.wpilib("ntcore")
|
|
wpilibNatives wpilibTools.deps.wpilib("cscore")
|
|
wpilibNatives wpilibTools.deps.wpilib("apriltag")
|
|
wpilibNatives wpilibTools.deps.wpilib("hal")
|
|
wpilibNatives wpilibTools.deps.wpilibOpenCv("frc" + openCVYear, wpi.versions.opencvVersion.get())
|
|
|
|
// These stay as implementation dependencies since they don't have native code that gets packaged
|
|
implementation 'org.zeroturnaround:zt-zip:1.14'
|
|
implementation "org.xerial:sqlite-jdbc:3.41.0.0"
|
|
implementation 'com.diozero:diozero-core:1.4.1'
|
|
|
|
// The JNI libraries use wpilibNatives, the java libraries use implementation
|
|
if (jniPlatform == "linuxarm64") {
|
|
wpilibNatives("org.photonvision:rknn_jni-jni:$rknnVersion:$wpilibNativeName") {
|
|
transitive = false
|
|
}
|
|
wpilibNatives("org.photonvision:rubik_jni-jni:$rubikVersion:$wpilibNativeName") {
|
|
transitive = false
|
|
}
|
|
wpilibNatives("org.photonvision:photon-libcamera-gl-driver-jni:$libcameraDriverVersion:$wpilibNativeName") {
|
|
transitive = false
|
|
}
|
|
}
|
|
|
|
implementation("org.photonvision:rknn_jni-java:$rknnVersion") {
|
|
transitive = false
|
|
}
|
|
|
|
implementation("org.photonvision:rubik_jni-java:$rubikVersion") {
|
|
transitive = false
|
|
}
|
|
|
|
implementation "org.photonvision:photon-libcamera-gl-driver-java:$libcameraDriverVersion"
|
|
|
|
implementation "org.photonvision:photon-mrcal-java:$mrcalVersion"
|
|
|
|
// Only include mrcal natives on platforms that we build for
|
|
if (!(jniPlatform in [
|
|
"osxx86-64",
|
|
"osxarm64"
|
|
])) {
|
|
wpilibNatives("org.photonvision:photon-mrcal-jni:$mrcalVersion:$wpilibNativeName") {
|
|
transitive = false
|
|
}
|
|
}
|
|
|
|
testImplementation group: 'org.junit-pioneer' , name: 'junit-pioneer', version: '2.2.0'
|
|
}
|
|
|
|
task writeCurrentVersion {
|
|
doLast {
|
|
def versionFileIn = file("${rootDir}/shared/PhotonVersion.java.in")
|
|
writePhotonVersionFile(versionFileIn, Path.of("$buildDir", "generated", "java", "org", "photonvision", "PhotonVersion.java"),
|
|
versionString)
|
|
}
|
|
}
|
|
// https://github.com/wpilibsuite/allwpilib/blob/main/wpilibj/build.gradle#L52
|
|
sourceSets.main.java.srcDir "${buildDir}/generated/java/"
|
|
|
|
compileJava.dependsOn writeCurrentVersion
|