/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.plugins.onewire; import java.util.HashSet; import java.util.Set; import com.dalsemi.onewire.adapter.DSPortAdapter; import com.dalsemi.onewire.container.OneWireContainer; import com.dalsemi.onewire.container.OneWireContainer10; import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails; import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException; import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent; import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext; /** * Discover a DS18S20 or compatible thermometer chip on the bus. Those belong * to family 10 and are thus instances of {@link OneWireContainer10}. * @author Heiko W. Rupp */ public class DS1820Discovery implements ResourceDiscoveryComponent<OneWireAdapterComponent> { /* (non-Javadoc) * @see org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent#discoverResources(org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext) */ public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<OneWireAdapterComponent> context) throws InvalidPluginConfigurationException, Exception { DSPortAdapter adapter = context.getParentResourceComponent().getAdapter(); Set<DiscoveredResourceDetails> results = new HashSet<DiscoveredResourceDetails>(); OneWireContainer cont = adapter.getFirstDeviceContainer(); while (cont != null) { if (cont instanceof OneWireContainer10) { String descr = cont.getDescription(); if (descr.length() > 50) { // Shorten. The device can have a really long description int pos = descr.indexOf("."); if (pos > 0) { descr = descr.substring(0, pos); descr += "..."; } } DiscoveredResourceDetails detail = new DiscoveredResourceDetails(context.getResourceType(), // Resource type cont.getAddressAsString(), // unique address from device cont.getName(), // the typ of device "", // version descr, // description context.getDefaultPluginConfiguration(), // plugin config null); // no physical info results.add(detail); } cont = adapter.getNextDeviceContainer(); } return results; } }