blob: dce6822e7b9f08159c7882d0116968bd9f703865 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 - 2010 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
* Andy Jin - Hardware debugging UI improvements, bug 229946
* Bruce Griffith, Sage Electronic Engineering, LLC - bug 305943
* - API generalization to become transport-independent (allow
* connections via serial ports and pipes).
*******************************************************************************/
package org.eclipse.cdt.debug.gdbjtag.core.jtagdevice;
import org.eclipse.cdt.debug.gdbjtag.core.Activator;
import org.eclipse.cdt.debug.gdbjtag.core.IGDBJtagConnection;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.DebugPlugin;
public class GDBJtagDeviceContribution {
private String deviceId;
private String deviceName;
private String deviceClassName;
private IGDBJtagDevice device;
private String deviceClassBundleName;
private String deviceDefaultConnection;
/**
* @return the deviceId
*/
public String getDeviceId() {
return this.deviceId;
}
/**
* @param deviceId the deviceId to set
*/
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
/**
* @return the deviceName
*/
public String getDeviceName() {
return this.deviceName;
}
/**
* @param deviceName the deviceName to set
*/
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
/**
* @return the deviceClassName
*/
public String getDeviceClassName() {
return this.deviceClassName;
}
/**
* @param deviceClassName the deviceClassName to set
*/
public void setDeviceClassName(String deviceClassName) {
this.deviceClassName = deviceClassName;
}
public String getDeviceClassBundleName() {
return deviceClassBundleName;
}
public void setDeviceClassBundleName(String deviceClassBundleName) {
this.deviceClassBundleName = deviceClassBundleName;
}
/**
* @since 7.0
*/
public void setDeviceDefaultConnection(String connection) {
this.deviceDefaultConnection = connection;
}
public IGDBJtagDevice getDevice() throws NullPointerException {
if (device != null) return device;
Object o = null;
try {
o = Platform.getBundle(deviceClassBundleName).loadClass(deviceClassName).newInstance();
if (o instanceof IGDBJtagConnection) {
((IGDBJtagConnection) o).setDefaultDeviceConnection(deviceDefaultConnection);
}
device = (IGDBJtagDevice) o;
return device;
} catch (Exception e) {
Activator.log(new Status(IStatus.ERROR, Activator.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR,
"Error instantiating " + getDeviceClassName() + " class", e)); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
}
}