예제 #1
0
 /**
  * @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);
   }
 }
예제 #2
0
  /** @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);
    }
  }