mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-22 01:11:40 +00:00
Replace JPigpio, add hardware PWM support (#127)
* Send brightness properly to clients * Refactor GPIO, add custom Pigpio socket wrapper * Replace PiGPIO with PigpioPin, fix hardwarePWM * Remove Jpigpio dependency * Apply Spotless * Warn user of Pigpio pin incapable of hardware PWM * Begin rework of blinking and brightness control for vision leds * Fixed blink, fixed brightness persistence, added bootup blink * Cleanup HardwareManager access of config * Apply spotless * Skip hardware test on non-Pi Co-authored-by: Matt <matthew.morley.ca@gmail.com>
This commit is contained in:
@@ -40,10 +40,6 @@ public class HardwareConfigTest {
|
||||
assertEquals(config.supportURL, "https://support.photonvision.com");
|
||||
Assertions.assertArrayEquals(
|
||||
config.ledPins.stream().mapToInt(i -> i).toArray(), new int[] {2, 13});
|
||||
Assertions.assertArrayEquals(
|
||||
config.ledPWMRange.stream().mapToInt(i -> i).toArray(), new int[] {0, 100});
|
||||
Assertions.assertEquals(config.ledPWMFrequency, 800);
|
||||
|
||||
CustomGPIO.setConfig(config);
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -17,30 +17,34 @@
|
||||
|
||||
package org.photonvision.hardware;
|
||||
|
||||
import java.io.IOException;
|
||||
import org.junit.jupiter.api.Assumptions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.photonvision.common.hardware.GPIO.pi.PigpioException;
|
||||
import org.photonvision.common.hardware.GPIO.pi.PigpioSocket;
|
||||
import org.photonvision.common.hardware.HardwareManager;
|
||||
import org.photonvision.common.hardware.Platform;
|
||||
import org.photonvision.common.logging.LogGroup;
|
||||
import org.photonvision.common.logging.Logger;
|
||||
|
||||
public class HardwareManagerTest {
|
||||
|
||||
public static final Logger logger = new Logger(HardwareManager.class, LogGroup.General);
|
||||
|
||||
@Test
|
||||
public void managementTest() throws IOException {
|
||||
// var config =
|
||||
// new ObjectMapper().readValue(TestUtils.getHardwareConfigJson(),
|
||||
// HardwareConfig.class);
|
||||
//
|
||||
// var instance = HardwareManager.getInstance();
|
||||
// TODO: fix
|
||||
|
||||
// instance.getGPIO(13).setPwmRange(List.of(0, 100));
|
||||
// Assertions.assertEquals(instance.getGPIO(13).getPwmRange().get(0), 0);
|
||||
// Assertions.assertEquals(instance.getGPIO(13).getPwmRange().get(1), 100);
|
||||
// instance.getGPIO(13).blink(250, 5);
|
||||
// for (int i = 0; i < 101; i++) {
|
||||
// instance.getGPIO(13).setBrightness(i);
|
||||
// }
|
||||
|
||||
// Assertions.assertEquals(config.statusRGBPins.get(0), -1);
|
||||
// Assertions.assertEquals(config.statusRGBPins.get(1), -1);
|
||||
// Assertions.assertEquals(config.statusRGBPins.get(2), -1);
|
||||
public void managementTest() throws InterruptedException {
|
||||
Assumptions.assumeTrue(Platform.isRaspberryPi());
|
||||
var socket = new PigpioSocket();
|
||||
try {
|
||||
socket.gpioWrite(18, false);
|
||||
socket.gpioWrite(13, false);
|
||||
Thread.sleep(500);
|
||||
for (int i = 0; i < 1000000; i++) {
|
||||
int duty = 1000000 - i;
|
||||
socket.hardwarePWM(18, 1000000, duty);
|
||||
Thread.sleep(0, 25);
|
||||
}
|
||||
} catch (PigpioException e) {
|
||||
logger.error("error", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.photonvision.common.hardware.GPIO.CustomGPIO;
|
||||
import org.photonvision.common.hardware.GPIO.GPIOBase;
|
||||
import org.photonvision.common.hardware.GPIO.PiGPIO;
|
||||
import org.photonvision.common.hardware.GPIO.pi.PigpioPin;
|
||||
import org.photonvision.common.hardware.Platform;
|
||||
import org.photonvision.common.hardware.metrics.CPUMetrics;
|
||||
import org.photonvision.common.hardware.metrics.GPUMetrics;
|
||||
@@ -56,7 +56,7 @@ public class HardwareTest {
|
||||
public void testGPIO() {
|
||||
GPIOBase gpio;
|
||||
if (Platform.isRaspberryPi()) {
|
||||
gpio = new PiGPIO(18, 0, 100);
|
||||
gpio = new PigpioPin(18);
|
||||
} else {
|
||||
gpio = new CustomGPIO(18);
|
||||
}
|
||||
@@ -86,7 +86,7 @@ public class HardwareTest {
|
||||
@Test
|
||||
public void testBlink() {
|
||||
if (!Platform.isRaspberryPi()) return;
|
||||
GPIOBase pwm = new PiGPIO(18, 0, 100);
|
||||
GPIOBase pwm = new PigpioPin(18);
|
||||
pwm.blink(125, 3);
|
||||
var startms = System.currentTimeMillis();
|
||||
while (true) {
|
||||
|
||||
Reference in New Issue
Block a user