@Override public <T extends EventListener> void addListener(T t) { if (!isStarting()) throw new IllegalStateException(); if (!_enabled) throw new UnsupportedOperationException(); super.addListener(t); ListenerHolder holder = getServletHandler().newListenerHolder(Source.JAVAX_API); holder.setListener(t); getServletHandler().addListener(holder); }
@Override public IGPIOPinInputListener addingService(ServiceReference<IGPIOPinInputListener> reference) { // get service IGPIOPinInputListener gPIOInputListener = context.getService(reference); if (gPIOInputListener == null) return null; // Get pinId Integer pinId = IGPIOPin.Util.getPinId(reference); if (pinId == null) pinId = new Integer(IGPIOPin.DEFAULT_INPUT_PIN); Pin pin = Pi4jGPIOPin.getPinForId(pinId.intValue()); if (pin != null) { // Get pinName String pinName = IGPIOPin.Util.getPinName(reference); if (pinName == null) pinName = String.valueOf(pinId); // Get pullresistance Integer pullResistance = IGPIOPin.Util.getInputPullResistance(reference); // If it's not set, set to PUL if (pullResistance == null) pullResistance = new Integer(IGPIOPin.PIN_DEFAULTINPUTPULLRESISTANCE); PinPullResistance pr = Pi4jGPIOPin.getPinPullResistance(pullResistance.intValue()); if (pr == null) pr = PinPullResistance.PULL_DOWN; // Get controller GPIO synchronized (refToListenerMap) { // Find reference ListenerHolder listenerHolder = refToListenerMap.get(reference); GpioPinDigitalInput inputListener = null; // We've not seen this request before if (listenerHolder == null) { inputListener = Activator.getGPIOController().provisionDigitalInputPin(pin, pinName, pr); listenerHolder = new ListenerHolder(inputListener); } else // We've seen it before so we use the old inputListener inputListener = listenerHolder.inputListener; // create new Pi4jGPIOPinInputListener Pi4jGPIOPinInputListener listener = new Pi4jGPIOPinInputListener(inputListener, gPIOInputListener); // set on the listener holder listenerHolder.setListener(listener); // put into map refToListenerMap.put(reference, listenerHolder); } } else { System.err.println( "adding IGPIOPinInputListener service...pinId is not available for pinId=" + pinId); } return gPIOInputListener; }