Beispiel #1
0
 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);
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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);
 }