/** * @see org.jnode.driver.DeviceFinder#findDevices(org.jnode.driver.DeviceManager, * org.jnode.driver.Bus) */ public void findDevices(DeviceManager devMan, Bus bus) throws DeviceException { try { devMan.register(new LoopbackDevice(bus)); } catch (DriverException ex) { throw new DeviceException(ex); } }
/** @see org.jnode.driver.Driver#startDevice() */ protected void startDevice() throws DriverException { final Device ideDev = getDevice(); // Register my api's ideDev.registerAPI(SCSIHostControllerAPI.class, this); // Create the ATAPI bus this.atapiBus = new ATAPIBus(ideDev); // Create the generic SCSI device, attached to the ATAPI bus scsiDevice = new ATAPISCSIDevice(atapiBus, "_sg"); // Execute INQUIRY try { scsiDevice.inquiry(); } catch (SCSIException ex) { throw new DriverException("Cannot INQUIRY device due to SCSIException", ex); } catch (TimeoutException ex) { throw new DriverException("Cannot INQUIRY device due to TimeoutException", ex); } catch (InterruptedException ex) { throw new DriverException("Interrupted while INQUIRY device", ex); } // Register the generic SCSI device. try { final DeviceManager dm = ideDev.getManager(); synchronized (dm) { dm.rename(scsiDevice, "sg", true); dm.register(scsiDevice); dm.rename(ideDev, SCSIHostControllerAPI.DEVICE_PREFIX, true); } } catch (DeviceAlreadyRegisteredException ex) { throw new DriverException(ex); } }