public bool SetBayPower(DriveBay bay, bool power) { if (bay.ControlPort == -1 || bay.IsBoot) { return(false); } lock (this.hwSyncObj) { Logger.Info("Setting bay {0} power = {1}", new object[] { bay.Number, power }); WDHWLib.HWStatus hwstatus = WDHWLib.HWSetDriveBayPower(this.hHwLib, (uint)bay.ControlPort, power); if (hwstatus != WDHWLib.HWStatus.HW_STATUS_OK) { Logger.Warn("Failed to set drive bay power {0}={1}: {2}", new object[] { bay.ControlPort, power, hwstatus.ToString() }); return(false); } } return(true); }
protected List <DriveBay> GetBayStatuses() { List <DriveBay> list = new List <DriveBay>(); DriveBayHW instance = DriveBayHW.GetInstance(); if (instance != null) { foreach (DriveBay driveBay in this.bays) { DriveBay driveBay2 = new DriveBay(); driveBay2.Number = driveBay.Number; driveBay2.ControlPort = driveBay.ControlPort; driveBay2.Power = true; driveBay2.Present = true; driveBay2.DrivePort = (DrivePort)driveBay.DrivePort.Clone(); driveBay2.Status = DriveBayStatusEnum.DRIVE_BAY_NONE; driveBay2.OldDrive = null; driveBay2.IsBoot = driveBay.IsBoot; driveBay2.BootIndex = driveBay.BootIndex; driveBay2.RaidVolume = driveBay.RaidVolume; driveBay2.SpacesPool = driveBay2.SpacesPool; instance.GetBayStatus(ref driveBay2); list.Add(driveBay2); } } return(list); }
public bool GetBayStatus(ref DriveBay bay) { if (bay.ControlPort == -1) { return(false); } lock (this.hwSyncObj) { WDHWLib.DRIVE_BAY_STATUS_DATA drive_BAY_STATUS_DATA = default(WDHWLib.DRIVE_BAY_STATUS_DATA); drive_BAY_STATUS_DATA.bay = (uint)bay.ControlPort; drive_BAY_STATUS_DATA.power = 0; drive_BAY_STATUS_DATA.present = 0; WDHWLib.HWStatus hwstatus; if (bay.IsBoot) { hwstatus = WDHWLib.HWGetBootDriveBayStatus(this.hHwLib, (uint)bay.ControlPort, ref drive_BAY_STATUS_DATA); } else { hwstatus = WDHWLib.HWGetDriveBayStatus(this.hHwLib, (uint)bay.ControlPort, ref drive_BAY_STATUS_DATA); } if (hwstatus != WDHWLib.HWStatus.HW_STATUS_OK) { return(false); } bay.Power = (drive_BAY_STATUS_DATA.power == 1); bay.Present = (drive_BAY_STATUS_DATA.present == 1); } return(true); }