diff --git a/diozero-core/diozero-core-1.3.2_compare.jar b/diozero-core/diozero-core-1.3.2_compare.jar new file mode 100644 index 000000000..108e546f7 Binary files /dev/null and b/diozero-core/diozero-core-1.3.2_compare.jar differ diff --git a/diozero-core/pom.xml b/diozero-core/pom.xml index 8bc711b01..dcab4df50 100644 --- a/diozero-core/pom.xml +++ b/diozero-core/pom.xml @@ -35,23 +35,64 @@ + + biz.aQute.bnd + bnd-maven-plugin + 5.3.0 + + + + + bnd-process + + + + org.apache.maven.plugins maven-jar-plugin - true - - diozero.core - - - true - + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + + + + + + + org.osgi + osgi.annotation + 8.0.0 + provided + + + biz.aQute.bnd + biz.aQute.bndlib + 5.3.0 + provided + + diff --git a/diozero-core/src/main/java/com/diozero/animation/easing/package-info.java b/diozero-core/src/main/java/com/diozero/animation/easing/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/animation/easing/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/animation/package-info.java b/diozero-core/src/main/java/com/diozero/animation/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/animation/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/api/function/package-info.java b/diozero-core/src/main/java/com/diozero/api/function/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/api/function/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/api/package-info.java b/diozero-core/src/main/java/com/diozero/api/package-info.java index 9370a84e2..349436fa0 100644 --- a/diozero-core/src/main/java/com/diozero/api/package-info.java +++ b/diozero-core/src/main/java/com/diozero/api/package-info.java @@ -1,6 +1,9 @@ /** * Core APIs for interfacing with devices. */ +@org.osgi.annotation.bundle.Export +@aQute.bnd.annotation.licenses.MIT +@org.osgi.annotation.bundle.Header(name = "Automatic-Module-Name",value = "diozero.core") package com.diozero.api; /*- diff --git a/diozero-core/src/main/java/com/diozero/devices/mcp23xxx/package-info.java b/diozero-core/src/main/java/com/diozero/devices/mcp23xxx/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/devices/mcp23xxx/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/devices/motor/package-info.java b/diozero-core/src/main/java/com/diozero/devices/motor/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/devices/motor/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/devices/oled/package-info.java b/diozero-core/src/main/java/com/diozero/devices/oled/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/devices/oled/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/devices/package-info.java b/diozero-core/src/main/java/com/diozero/devices/package-info.java index 792372315..9ea77d6ce 100644 --- a/diozero-core/src/main/java/com/diozero/devices/package-info.java +++ b/diozero-core/src/main/java/com/diozero/devices/package-info.java @@ -2,6 +2,7 @@ * Classes representing actual devices such as LEDs, Buttons as well as GPIO, * devices that are connected via I2C, SPI and Serial interfaces. */ +@org.osgi.annotation.bundle.Export package com.diozero.devices; /*- diff --git a/diozero-core/src/main/java/com/diozero/devices/sandpit/package-info.java b/diozero-core/src/main/java/com/diozero/devices/sandpit/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/devices/sandpit/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH5BoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH5BoardInfoProvider.java index 441e7994e..c4d6a219c 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH5BoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH5BoardInfoProvider.java @@ -37,11 +37,14 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; + /** * https://linux-sunxi.org/Xunlong_Orange_Pi_Zero_Plus * https://linux-sunxi.org/GPIO * https://github.com/friendlyarm/WiringNP/blob/master/wiringPi/boardtype_friendlyelec.c#L66 */ +@ServiceProvider(value = BoardInfoProvider.class) public class AllwinnerH5BoardInfoProvider implements BoardInfoProvider { // Not reliable // public static final String ORANGEPI_ZEROPLUS_HARDWARE = "sun50iw1p1"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH6BoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH6BoardInfoProvider.java index 89f0da4d9..ff3652f04 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH6BoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerH6BoardInfoProvider.java @@ -37,10 +37,13 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; + /** * https://linux-sunxi.org/Xunlong_Orange_Pi_One_Plus * https://linux-sunxi.org/GPIO */ +@ServiceProvider(value = BoardInfoProvider.class) public class AllwinnerH6BoardInfoProvider implements BoardInfoProvider { // Not reliable // public static final String ORANGEPI_ONEPLUS_HARDWARE = "sun50iw1p1"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerSun8iBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerSun8iBoardInfoProvider.java index 57526b0aa..df1fd6ab0 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerSun8iBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/allwinner/AllwinnerSun8iBoardInfoProvider.java @@ -30,13 +30,14 @@ * THE SOFTWARE. * #L% */ - import com.diozero.internal.board.GenericLinuxArmBoardInfo; import com.diozero.internal.spi.BoardInfoProvider; import com.diozero.internal.spi.MmapGpioInterface; import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; +@ServiceProvider(value = BoardInfoProvider.class) public class AllwinnerSun8iBoardInfoProvider implements BoardInfoProvider { // E.g. CONFIG_ORANGEPI_H3, CONFIG_ORANGEPI_ZEROPLUS2_H3 public static final String MAKE = "Allwinner sun8i"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/BeagleBoneBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/BeagleBoneBoardInfoProvider.java index 46939be51..be55ea8b2 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/BeagleBoneBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/BeagleBoneBoardInfoProvider.java @@ -48,10 +48,13 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; + /*- * https://github.com/derekmolloy/boneDeviceTree/raw/master/docs/BeagleboneBlackP8HeaderTable.pdf * https://github.com/derekmolloy/boneDeviceTree/raw/master/docs/BeagleboneBlackP9HeaderTable.pdf */ +@ServiceProvider(value = BoardInfoProvider.class) public class BeagleBoneBoardInfoProvider implements BoardInfoProvider { public static final String MAKE = "BeagleBone"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/package-info.java b/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/package-info.java new file mode 100644 index 000000000..582114803 --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/internal/board/beaglebone/package-info.java @@ -0,0 +1,4 @@ + +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.provider.bbbiolib"}) +package com.diozero.internal.provider.builtin; + diff --git a/diozero-core/src/main/java/com/diozero/internal/board/chip/ChipBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/chip/ChipBoardInfoProvider.java index 6e297dd86..9920ae3ca 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/chip/ChipBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/chip/ChipBoardInfoProvider.java @@ -46,6 +46,8 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; +@ServiceProvider(value = BoardInfoProvider.class) public class ChipBoardInfoProvider implements BoardInfoProvider { public static final String MAKE = "Next Thing Company"; public static final String MODEL_CHIP = "CHIP"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/odroid/OdroidBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/odroid/OdroidBoardInfoProvider.java index 0e0d887f5..b592dc507 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/odroid/OdroidBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/odroid/OdroidBoardInfoProvider.java @@ -37,6 +37,8 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; +@ServiceProvider(value = BoardInfoProvider.class) public class OdroidBoardInfoProvider implements BoardInfoProvider { public static final String MAKE = "Odroid"; public static final String C1_HARDWARE_ID = "ODROID-C1"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/RaspberryPiBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/RaspberryPiBoardInfoProvider.java index 594a48c96..b3725c270 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/RaspberryPiBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/RaspberryPiBoardInfoProvider.java @@ -49,12 +49,15 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; + /** * See * this c * library. See also this * table of revisions. */ +@ServiceProvider(value = BoardInfoProvider.class) public class RaspberryPiBoardInfoProvider implements BoardInfoProvider { public static final String MAKE = "Raspberry Pi"; private static final String BCM_HARDWARE_PREFIX = "BCM"; diff --git a/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/package-info.java b/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/package-info.java new file mode 100644 index 000000000..1f2f0dc24 --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/internal/board/raspberrypi/package-info.java @@ -0,0 +1,4 @@ + +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.provider.pigpio"}) +package com.diozero.internal.provider.builtin; + diff --git a/diozero-core/src/main/java/com/diozero/internal/board/tinkerboard/TinkerBoardBoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/board/tinkerboard/TinkerBoardBoardInfoProvider.java index 1cfe8a365..403c651b9 100644 --- a/diozero-core/src/main/java/com/diozero/internal/board/tinkerboard/TinkerBoardBoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/board/tinkerboard/TinkerBoardBoardInfoProvider.java @@ -37,6 +37,9 @@ import com.diozero.sbc.BoardInfo; import com.diozero.sbc.LocalSystemInfo; +import aQute.bnd.annotation.spi.ServiceProvider; + +@ServiceProvider(value = BoardInfoProvider.class) public class TinkerBoardBoardInfoProvider implements BoardInfoProvider { public static final String MAKE = "Asus"; private static final String TINKER_BOARD_HARDWARE_ID = "Rockchip (Device Tree)"; diff --git a/diozero-core/src/main/java/com/diozero/internal/provider/builtin/gpio/package-info.java b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/gpio/package-info.java new file mode 100644 index 000000000..c05844a32 --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/gpio/package-info.java @@ -0,0 +1,4 @@ + +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.sampleapps"}) +package com.diozero.internal.provider.builtin; + diff --git a/diozero-core/src/main/java/com/diozero/internal/provider/builtin/i2c/package-info.java b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/i2c/package-info.java new file mode 100644 index 000000000..582114803 --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/i2c/package-info.java @@ -0,0 +1,4 @@ + +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.provider.bbbiolib"}) +package com.diozero.internal.provider.builtin; + diff --git a/diozero-core/src/main/java/com/diozero/internal/provider/builtin/package-info.java b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/package-info.java index fb597eb3d..0bd343676 100644 --- a/diozero-core/src/main/java/com/diozero/internal/provider/builtin/package-info.java +++ b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/package-info.java @@ -2,6 +2,7 @@ * The built-in default provider supporting GPIO, I2C, SPI and Serial device * communication. */ +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.provider.bbbiolib", "com.diozero.provider.mmap", "com.diozero.provider.remote"}) package com.diozero.internal.provider.builtin; /*- diff --git a/diozero-core/src/main/java/com/diozero/internal/provider/builtin/serial/package-info.java b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/serial/package-info.java new file mode 100644 index 000000000..425571a02 --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/internal/provider/builtin/serial/package-info.java @@ -0,0 +1,4 @@ + +@aQute.bnd.annotation.jpms.ExportTo({"com.diozero.provider.remote"}) +package com.diozero.internal.provider.builtin; + diff --git a/diozero-core/src/main/java/com/diozero/internal/spi/BoardInfoProvider.java b/diozero-core/src/main/java/com/diozero/internal/spi/BoardInfoProvider.java index aa08d8698..e352fdb06 100644 --- a/diozero-core/src/main/java/com/diozero/internal/spi/BoardInfoProvider.java +++ b/diozero-core/src/main/java/com/diozero/internal/spi/BoardInfoProvider.java @@ -37,6 +37,10 @@ import com.diozero.sbc.LocalSystemInfo; import com.diozero.util.ServiceLoaderUtil; +import aQute.bnd.annotation.Resolution; +import aQute.bnd.annotation.spi.ServiceConsumer; + +@ServiceConsumer(value = BoardInfoProvider.class,resolution = Resolution.OPTIONAL) public interface BoardInfoProvider { BoardInfo lookup(LocalSystemInfo sysInfo); diff --git a/diozero-core/src/main/java/com/diozero/internal/spi/NativeDeviceFactoryInterface.java b/diozero-core/src/main/java/com/diozero/internal/spi/NativeDeviceFactoryInterface.java index f46c8606d..31ea151e7 100644 --- a/diozero-core/src/main/java/com/diozero/internal/spi/NativeDeviceFactoryInterface.java +++ b/diozero-core/src/main/java/com/diozero/internal/spi/NativeDeviceFactoryInterface.java @@ -37,6 +37,10 @@ import com.diozero.sbc.BoardInfo; import com.diozero.util.ServiceLoaderUtil; +import aQute.bnd.annotation.Resolution; +import aQute.bnd.annotation.spi.ServiceConsumer; + +@ServiceConsumer(value = NativeDeviceFactoryInterface.class,resolution = Resolution.OPTIONAL) public interface NativeDeviceFactoryInterface extends GpioDeviceFactoryInterface, SpiDeviceFactoryInterface, I2CDeviceFactoryInterface, PwmOutputDeviceFactoryInterface, ServoDeviceFactoryInterface, AnalogInputDeviceFactoryInterface, AnalogOutputDeviceFactoryInterface, SerialDeviceFactoryInterface { diff --git a/diozero-core/src/main/java/com/diozero/sbc/package-info.java b/diozero-core/src/main/java/com/diozero/sbc/package-info.java index a55f71b28..ab2785772 100644 --- a/diozero-core/src/main/java/com/diozero/sbc/package-info.java +++ b/diozero-core/src/main/java/com/diozero/sbc/package-info.java @@ -1,6 +1,7 @@ /** * APIs for interfacing with the host board. */ +@org.osgi.annotation.bundle.Export package com.diozero.sbc; /*- diff --git a/diozero-core/src/main/java/com/diozero/util/package-info.java b/diozero-core/src/main/java/com/diozero/util/package-info.java new file mode 100644 index 000000000..46306d97b --- /dev/null +++ b/diozero-core/src/main/java/com/diozero/util/package-info.java @@ -0,0 +1,4 @@ + +@org.osgi.annotation.bundle.Export +package com.diozero.animation; + diff --git a/diozero-core/src/main/resources/META-INF/services/com.diozero.internal.spi.BoardInfoProvider b/diozero-core/src/main/resources/META-INF/services/com.diozero.internal.spi.BoardInfoProvider deleted file mode 100644 index 9da894101..000000000 --- a/diozero-core/src/main/resources/META-INF/services/com.diozero.internal.spi.BoardInfoProvider +++ /dev/null @@ -1,8 +0,0 @@ -com.diozero.internal.board.allwinner.AllwinnerH5BoardInfoProvider -com.diozero.internal.board.allwinner.AllwinnerH6BoardInfoProvider -com.diozero.internal.board.allwinner.AllwinnerSun8iBoardInfoProvider -com.diozero.internal.board.beaglebone.BeagleBoneBoardInfoProvider -com.diozero.internal.board.chip.ChipBoardInfoProvider -com.diozero.internal.board.odroid.OdroidBoardInfoProvider -com.diozero.internal.board.raspberrypi.RaspberryPiBoardInfoProvider -com.diozero.internal.board.tinkerboard.TinkerBoardBoardInfoProvider \ No newline at end of file