/** * Arrival event as a NetworkMonitorEventListener * * @param nme NetworkMonitorEvent add */ public void deviceArrival(DeviceMonitorEvent event) { int count = event.getDeviceCount(); for (int i = 0; i < count; i++) { String address = event.getAddressAsStringAt(i); // Search all the implemented Container interfaces OneWireContainer owc = event.getContainerAt(i); if (owc instanceof ADContainer) { registeredProducers.put(address, new OneWireADVoltageProducer(context, owc, pollInterval)); } if (owc instanceof HumidityContainer) { registeredProducers.put(address, new OneWireHumidityProducer(context, owc, pollInterval)); } if (owc instanceof SwitchContainer) { // TODO org.osgi.util.measurement.State // one producer per channel ??? // ((SwitchContainer)owc).getNumberChannels() /* * TODO registeredProducers.put( nme.getAddressAsString(), new * OneWireStateProducer(context,owc) ); */ } if (owc instanceof TemperatureContainer) { registeredProducers.put( address, new OneWireTemperatureProducer(context, owc, pollInterval)); } } }
/** * Depart event as a NetworkMonitorEventListener * * @param nme NetworkMonitorEvent depart */ public void deviceDeparture(DeviceMonitorEvent event) { int count = event.getDeviceCount(); for (int i = 0; i < count; i++) { String address = event.getAddressAsStringAt(i); OneWireAbstractProducer owp = (OneWireAbstractProducer) registeredProducers.remove(address); owp.end(); } }