mvn archetype:generate -DarchetypeGroupId=org.osgi.enroute.archetype -DarchetypeArtifactId=osgi-archetype -DarchetypeVersion=1.0.0 -DgroupId=com.example -DartifactId=my-command -Dversion=1.0.0 -Dpackage=com.example
<dependency>
<groupId>org.osgi.enroute.extra</groupId>
<artifactId>org.osgi.enroute.iot.pi.command.provider</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.osgi.enroute.extra</groupId>
<artifactId>org.osgi.enroute.iot.pi.command.api</artifactId>
<version>1.0.0</version>
</dependency>
package com.example;
import aQute.bnd.annotation.component.Component;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import org.osgi.service.component.ComponentContext;
@Component(
service = PiGpioCommand.class,
property = {
"osgi.command.scope=pi",
"osgi.command.function=gpio"
}
)
public class PiGpioCommand {
private GpioPinDigitalOutput pin;
void activate(ComponentContext context) {
pin = GpioFactory.getInstance().provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.LOW);
System.out.println("PiGpioCommand activated");
}
void deactivate(ComponentContext context) {
pin.low();
pin.unexport();
System.out.println("PiGpioCommand deactivated");
}
public void gpio(int state) {
if (state == 1) {
pin.high();
System.out.println("GPIO set to HIGH");
} else {
pin.low();
System.out.println("GPIO set to LOW");
}
}
}
mvn clean install
java -jar my-command-1.0.0.jar