예제 #1
0
        private void FillSupportedFeatures()
        {
            _SupportedFeatures[(int)StateFeature.NativeCommandQueuing] = LogicHelper.CheckBit(word076, Bits.Bit08);
            _SupportedFeatures[(int)StateFeature.PhyEventCounters]     = LogicHelper.CheckBit(word076, Bits.Bit10);

            _SupportedFeatures[(int)StateFeature.DmaSetupAutoActivate]         = LogicHelper.CheckBit(word078, Bits.Bit02);
            _SupportedFeatures[(int)StateFeature.InOrderDataDelivery]          = LogicHelper.CheckBit(word078, Bits.Bit04);
            _SupportedFeatures[(int)StateFeature.SoftwareSettingsPreservation] = LogicHelper.CheckBit(word078, Bits.Bit06);

            _SupportedFeatures[(int)StateFeature.Smart]            = LogicHelper.CheckBit(word082, Bits.Bit00);
            _SupportedFeatures[(int)StateFeature.SecurityMode]     = LogicHelper.CheckBit(word082, Bits.Bit01);
            _SupportedFeatures[(int)StateFeature.WriteCache]       = LogicHelper.CheckBit(word082, Bits.Bit05);
            _SupportedFeatures[(int)StateFeature.ReadLookAhead]    = LogicHelper.CheckBit(word082, Bits.Bit06);
            _SupportedFeatures[(int)StateFeature.ReleaseInterrupt] = LogicHelper.CheckBit(word082, Bits.Bit07);

            _SupportedFeatures[(int)StateFeature.AdvancedPowerManagement]     = LogicHelper.CheckBit(word083, Bits.Bit03);
            _SupportedFeatures[(int)StateFeature.PowerUpInStandby]            = LogicHelper.CheckBit(word083, Bits.Bit05);
            _SupportedFeatures[(int)StateFeature.AutomaticAcousticManagement] = LogicHelper.CheckBit(word083, Bits.Bit09);
            _SupportedFeatures[(int)StateFeature.Bit48Lba] = LogicHelper.CheckBit(word083, Bits.Bit10);
            _SupportedFeatures[(int)StateFeature.DeviceConfigurationOverlay] = LogicHelper.CheckBit(word083, Bits.Bit11);

            _SupportedFeatures[(int)StateFeature.SmartErrorLogging] = LogicHelper.CheckBit(word084, Bits.Bit00);
            _SupportedFeatures[(int)StateFeature.SmartSelfTest]     = LogicHelper.CheckBit(word084, Bits.Bit01);
            _SupportedFeatures[(int)StateFeature.Streaming]         = LogicHelper.CheckBit(word084, Bits.Bit04);

            _SupportedFeatures[(int)StateFeature.PowerManagement]   = LogicHelper.CheckBit(word085, Bits.Bit03);
            _SupportedFeatures[(int)StateFeature.HostProtectedArea] = LogicHelper.CheckBit(word085, Bits.Bit10);

            _SupportedFeatures[(int)StateFeature.GeneralPurposeLogging] = LogicHelper.CheckBit(word087, Bits.Bit05);

            _SupportedFeatures[(int)StateFeature.TaggedCommandQueuing] = false;
        }
        /// <summary>
        /// Gets a <see cref="T:System.String"/> that represents the cache size in Kb.
        /// </summary>
        /// <param name="code">Value to analyze.</param>
        /// <returns>The cache size in Kb.</returns>
        private static uint GetSize(uint code)
        {
            uint size = code & 0x7ffff;

            bool granularity64Kb = LogicHelper.CheckBit(code, Bits.Bit31);

            if (granularity64Kb)
            {
                return(size << 6);
            }

            return(size);
        }