Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@
import com.pi4j.exception.Pi4JException;
import com.pi4j.exception.ShutdownException;
import com.pi4j.io.IOType;
import com.pi4j.io.gpio.analog.AnalogInputProvider;
import com.pi4j.io.gpio.analog.AnalogOutputProvider;
import com.pi4j.io.gpio.digital.DigitalInputProvider;
import com.pi4j.io.gpio.digital.DigitalOutputProvider;
import com.pi4j.io.i2c.I2CProvider;
Expand Down Expand Up @@ -70,30 +68,12 @@ public class MutableProviders implements Providers {
// all detected/available providers
private Map<String, Provider> providers = new ConcurrentHashMap<>();

private ProviderGroup<AnalogInputProvider> _analogInput = new ProviderGroup<>(this, IOType.ANALOG_INPUT);
private ProviderGroup<AnalogOutputProvider> _analogOutput = new ProviderGroup<>(this, IOType.ANALOG_OUTPUT);
private ProviderGroup<DigitalInputProvider> _digitalInput = new ProviderGroup<>(this, IOType.DIGITAL_INPUT);
private ProviderGroup<DigitalOutputProvider> _digitalOutput = new ProviderGroup<>(this, IOType.DIGITAL_OUTPUT);
private ProviderGroup<PwmProvider> _pwm = new ProviderGroup<>(this, IOType.PWM);
private ProviderGroup<SpiProvider> _spi = new ProviderGroup<>(this, IOType.SPI);
private ProviderGroup<I2CProvider> _i2c = new ProviderGroup<>(this, IOType.I2C);

/**
* {@inheritDoc}
*/
@Override
public ProviderGroup<AnalogInputProvider> analogInput() {
return _analogInput;
}

/**
* {@inheritDoc}
*/
@Override
public ProviderGroup<AnalogOutputProvider> analogOutput() {
return _analogOutput;
}

/**
* {@inheritDoc}
*/
Expand Down
43 changes: 1 addition & 42 deletions pi4j-core/src/main/java/com/pi4j/internal/IOCreator.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import com.pi4j.io.IOConfig;
import com.pi4j.io.IOConfigBuilder;
import com.pi4j.io.IOType;
import com.pi4j.io.gpio.analog.*;
import com.pi4j.io.gpio.digital.*;
import com.pi4j.io.i2c.I2C;
import com.pi4j.io.i2c.I2CConfig;
Expand All @@ -44,7 +43,7 @@
/**
* Note: This interface previously had string-based create methods. These have been removed in favor of the
* {@link IOConfigBuilder} and {@link IOType} based create methods.
*
* <p>
* We considered keeping these methods around for backwards compatibility, but this would move a compile time
* issue to a runtime crash or lookup failure, which we considered worse.
*/
Expand All @@ -64,26 +63,6 @@ default <I extends IO> I create(IOConfigBuilder builder, Class<I> ioClass) {
return create((IOConfig) builder.build(), ioClass);
}

/**
* <p>create.</p>
*
* @param config a {@link com.pi4j.io.gpio.analog.AnalogOutputConfig} object.
* @return a {@link com.pi4j.io.gpio.analog.AnalogOutput} object.
*/
default AnalogOutput create(AnalogOutputConfig config) {
return create(config, AnalogOutput.class);
}

/**
* <p>create.</p>
*
* @param config a {@link com.pi4j.io.gpio.analog.AnalogInputConfig} object.
* @return a {@link com.pi4j.io.gpio.analog.AnalogInput} object.
*/
default AnalogInput create(AnalogInputConfig config) {
return create(config, AnalogInput.class);
}

/**
* <p>create.</p>
*
Expand Down Expand Up @@ -134,26 +113,6 @@ default Spi create(SpiConfig config) {
return create(config, Spi.class);
}

/**
* <p>create.</p>
*
* @param config a {@link com.pi4j.io.gpio.analog.AnalogOutputConfigBuilder} object.
* @return a {@link com.pi4j.io.gpio.analog.AnalogOutput} object.
*/
default AnalogOutput create(AnalogOutputConfigBuilder config) {
return create(config.build());
}

/**
* <p>create.</p>
*
* @param config a {@link com.pi4j.io.gpio.analog.AnalogInputConfigBuilder} object.
* @return a {@link com.pi4j.io.gpio.analog.AnalogInput} object.
*/
default AnalogInput create(AnalogInputConfigBuilder config) {
return create(config.build());
}

/**
* <p>create.</p>
*
Expand Down
111 changes: 21 additions & 90 deletions pi4j-core/src/main/java/com/pi4j/internal/ProviderProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
*/

import com.pi4j.io.IOType;
import com.pi4j.io.gpio.analog.AnalogInputProvider;
import com.pi4j.io.gpio.analog.AnalogOutputProvider;
import com.pi4j.io.gpio.digital.DigitalInputProvider;
import com.pi4j.io.gpio.digital.DigitalOutputProvider;
import com.pi4j.io.i2c.I2CProvider;
Expand All @@ -38,31 +36,7 @@
import com.pi4j.provider.exception.ProviderInterfaceException;
import com.pi4j.provider.exception.ProviderNotFoundException;

public interface ProviderProvider {



/**
* <p>ain.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogInputProvider> T ain() throws ProviderException {
return analogInput();
}

/**
* <p>aout.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogOutputProvider> T aout() throws ProviderException {
return analogOutput();
}
public interface ProviderProvider {

/**
* <p>din.</p>
Expand All @@ -86,28 +60,6 @@ default <T extends DigitalOutputProvider> T dout() throws ProviderException {
return digitalOutput();
}

/**
* <p>analogInput.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogInputProvider> T analogInput() throws ProviderException {
return this.provider(IOType.ANALOG_INPUT);
}

/**
* <p>analogOutput.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogOutputProvider> T analogOutput() throws ProviderException {
return this.provider(IOType.ANALOG_OUTPUT);
}

/**
* <p>digitalInput.</p>
*
Expand Down Expand Up @@ -163,28 +115,6 @@ default <T extends I2CProvider> T i2c() throws ProviderException {
return this.provider(IOType.I2C);
}

/**
* <p>analogInput.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogInputProvider> T getAnalogInputProvider() throws ProviderException {
return this.analogInput();
}

/**
* <p>analogOutput.</p>
*
* @param <T> a T object.
* @return a T object.
* @throws ProviderException if any.
*/
default <T extends AnalogOutputProvider> T getAnalogOutputProvider() throws ProviderException {
return this.analogOutput();
}

/**
* <p>digitalInput.</p>
*
Expand Down Expand Up @@ -239,11 +169,12 @@ default <T extends SpiProvider> T getSpiProvider() throws ProviderException {
default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
return this.i2c();
}

/**
* <p>provider.</p>
*
* @param providerId a {@link java.lang.String} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws com.pi4j.provider.exception.ProviderNotFoundException if any.
*/
Expand All @@ -252,9 +183,9 @@ default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
/**
* <p>provider.</p>
*
* @param providerId a {@link java.lang.String} object.
* @param providerId a {@link java.lang.String} object.
* @param providerClass a T object.
* @param <T> the provider type
* @param <T> the provider type
* @return a T object.
* @throws ProviderNotFoundException if any.
*/
Expand All @@ -264,18 +195,18 @@ default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
* <p>provider.</p>
*
* @param providerClass a {@link java.lang.Class} object.
* @param <T> a T object.
* @throws ProviderNotFoundException if any.
* @throws ProviderInterfaceException if any.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if any.
* @throws ProviderInterfaceException if any.
*/
<T extends Provider> T provider(Class<T> providerClass) throws ProviderNotFoundException, ProviderInterfaceException;

/**
* <p>provider.</p>
*
* @param ioType a {@link com.pi4j.io.IOType} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if the provider specified by {@code ioType} can not be found.
*/
Expand All @@ -293,7 +224,7 @@ default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
* <p>hasProvider.</p>
*
* @param providerClass a {@link java.lang.Class} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a boolean.
*/
<T extends Provider> boolean hasProvider(Class<T> providerClass);
Expand All @@ -302,7 +233,7 @@ default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
* <p>hasProvider.</p>
*
* @param ioType a {@link com.pi4j.io.IOType} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a boolean.
*/
<T extends Provider> boolean hasProvider(IOType ioType);
Expand All @@ -311,50 +242,50 @@ default <T extends I2CProvider> T getI2CProvider() throws ProviderException {
* <p>provider.</p>
*
* @param providerId a {@link java.lang.String} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if the provider specified by {@code providerId} can not be found.
*/
default <T extends Provider> T getProvider(String providerId) throws ProviderNotFoundException{
default <T extends Provider> T getProvider(String providerId) throws ProviderNotFoundException {
return provider(providerId);
}

/**
* <p>provider.</p>
*
* @param providerId a {@link java.lang.String} object.
* @param providerId a {@link java.lang.String} object.
* @param providerClass
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if the provider specified by {@code providerId} can not be found.
*/
default <T extends Provider> T getProvider(String providerId, Class<T> providerClass) throws ProviderNotFoundException{
default <T extends Provider> T getProvider(String providerId, Class<T> providerClass) throws ProviderNotFoundException {
return provider(providerId, providerClass);
}

/**
* <p>provider.</p>
*
* @param providerClass a {@link java.lang.Class} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if the provider specified by {@code providerClass} can not be found.
* @throws ProviderNotFoundException if the provider specified by {@code providerClass} can not be found.
* @throws ProviderInterfaceException if {@code providerClass} is not a valid provider.
*/
default <T extends Provider> T getProvider(Class<T> providerClass) throws ProviderNotFoundException,
ProviderInterfaceException{
ProviderInterfaceException {
return provider(providerClass);
}

/**
* <p>provider.</p>
*
* @param ioType a {@link com.pi4j.io.IOType} object.
* @param <T> a T object.
* @param <T> a T object.
* @return a T object.
* @throws ProviderNotFoundException if the provider specified by {@code ioType} can not be found.
*/
default <T extends Provider> T getProvider(IOType ioType) throws ProviderNotFoundException{
default <T extends Provider> T getProvider(IOType ioType) throws ProviderNotFoundException {
return provider(ioType);
}

Expand Down
28 changes: 1 addition & 27 deletions pi4j-core/src/main/java/com/pi4j/io/IOType.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

import com.pi4j.context.Context;
import com.pi4j.exception.Pi4JException;
import com.pi4j.io.gpio.analog.*;
import com.pi4j.io.gpio.digital.*;
import com.pi4j.io.i2c.I2CConfig;
import com.pi4j.io.i2c.I2CConfigBuilder;
Expand All @@ -50,8 +49,6 @@
*/
public enum IOType {

ANALOG_INPUT(AnalogInputProvider.class, AnalogInput.class, AnalogInputConfig.class, AnalogInputConfigBuilder.class),
ANALOG_OUTPUT(AnalogOutputProvider.class, AnalogOutput.class, AnalogOutputConfig.class, AnalogOutputConfigBuilder.class),
DIGITAL_INPUT(DigitalInputProvider.class, DigitalInput.class, DigitalInputConfig.class, DigitalInputConfigBuilder.class),
DIGITAL_OUTPUT(DigitalOutputProvider.class, DigitalOutput.class, DigitalOutputConfig.class, DigitalOutputConfigBuilder.class),
PWM(PwmProvider.class, Pwm.class, PwmConfig.class, PwmConfigBuilder.class),
Expand Down Expand Up @@ -272,20 +269,6 @@ public static IOType parse(String ioType) {
// lower case the string for comparisons
ioType = ioType.toLowerCase();

// ANALOG INPUT
if (ioType.startsWith("analog.i")) return ANALOG_INPUT;
if (ioType.startsWith("analog-i")) return ANALOG_INPUT;
if (ioType.startsWith("analog_i")) return ANALOG_INPUT;
if (ioType.startsWith("analog i")) return ANALOG_INPUT;
if (ioType.equalsIgnoreCase("ain")) return ANALOG_INPUT;

// ANALOG OUTPUT
if (ioType.startsWith("analog.o")) return ANALOG_OUTPUT;
if (ioType.startsWith("analog-o")) return ANALOG_OUTPUT;
if (ioType.startsWith("analog_o")) return ANALOG_OUTPUT;
if (ioType.startsWith("analog o")) return ANALOG_OUTPUT;
if (ioType.equalsIgnoreCase("aout")) return ANALOG_OUTPUT;

// DIGITAL INPUT
if (ioType.startsWith("digital.i")) return DIGITAL_INPUT;
if (ioType.startsWith("digital-i")) return DIGITAL_INPUT;
Expand Down Expand Up @@ -331,13 +314,4 @@ public static IOType parse(String ioType) {

throw new IllegalArgumentException("Unknown IO TYPE: " + ioType);
}
}

// ANALOG_INPUT(AnalogInputProvider.class, AnalogInput.class, AnalogInputConfig.class, AnalogInputConfigBuilder.class),
// ANALOG_OUTPUT(AnalogOutputProvider.class, AnalogOutput.class, AnalogOutputConfig.class, AnalogOutputConfigBuilder.class),
// DIGITAL_INPUT(DigitalInputProvider.class, DigitalInput.class, DigitalInputConfig.class, DigitalInputConfigBuilder.class),
// DIGITAL_OUTPUT(DigitalOutputProvider.class, DigitalOutput.class, DigitalOutputConfig.class, DigitalOutputConfigBuilder.class),
// PWM(PwmProvider.class, Pwm.class, PwmConfig.class, PwmConfigBuilder.class),
// I2C(I2CProvider.class, com.pi4j.io.i2c.I2C.class, I2CConfig.class, I2CConfigBuilder.class),
// SPI(SpiProvider.class, Spi.class, I2CConfig.class, I2CConfigBuilder.class),
// SERIAL(SerialProvider.class, Serial.class, SerialConfig.class, SerialConfigBuilder.class);
}
Loading
Loading