package com.example.pi.command;
import java.util.concurrent.TimeUnit;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
@Component
public class LEDController {
@Reference(cardinality = ReferenceCardinality.MANDATORY)
private GpioController gpioController;
private GpioPinDigitalOutput ledPin;
@Activate
public void activate() {
ledPin = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_01, "LED", PinState.LOW);
}
@Deactivate
public void deactivate() {
gpioController.unprovisionPin(ledPin);
}
public void turnOnLED() {
ledPin.setState(PinState.HIGH);
}
public void turnOffLED() {
ledPin.setState(PinState.LOW);
}
public void blinkLED(int duration, int interval) throws InterruptedException {
ledPin.pulse(duration, true);
TimeUnit.MILLISECONDS.sleep(interval);
ledPin.pulse(duration, false);
}
}