#pragma namespace ("\\\\.\\Root\\WMI")

//
// Wmi internal classes


class WMIEvent : __ExtrinsicEvent
{
};


[abstract]
class MSBatteryClass:Win32_PerfRawData{
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{fc4670d1-ebbf-416e-87ce-374a4ebc111a}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Battery Status") : amended,
 perfdetail(100),
 hiperf]

class BatteryStatus:MSBatteryClass
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         countertype(0x00010000),
         defaultscale(0),
         perfdetail(100),
         Description("Battery Tag") : amended,
         WmiDataId(1),
         WmiVolatility(10000)]
         uint32 Tag;

        [read,
         countertype(0x00010000),
         defaultscale(0),
         perfdetail(100),
         Description("Remaining battery capacity") : amended,
         WmiDataId(2),
         WmiVolatility(10000)]
         uint32 RemainingCapacity;

        [read,
         countertype(0x00010000),
         defaultscale(0),
         perfdetail(100),
         Description("Charge Rate") : amended,
         WmiDataId(3),
         WmiVolatility(10000)]
         sint32 ChargeRate;

        [read,
         countertype(0x00010000),
         defaultscale(0),
         perfdetail(100),
         Description("Discharge Rate") : amended,
         WmiDataId(4),
         WmiVolatility(10000)]
         sint32 DischargeRate;

        [read,
         countertype(0x00010000),
         defaultscale(0),
         perfdetail(100),
         Description("Voltage") : amended,
         WmiDataId(5),
         WmiVolatility(10000)]
         uint32 Voltage;

        [read,
         Description("Power Online") : amended,
         WmiDataId(6),
         WmiVolatility(10000)]
         boolean PowerOnline;

        [read,
         Description("Charging") : amended,
         WmiDataId(7),
         WmiVolatility(10000)]
         boolean Charging;

        [read,
         Description("Discharging") : amended,
         WmiDataId(8),
         WmiVolatility(10000)]
         boolean Discharging;

        [read,
         Description("Critical") : amended,
         WmiDataId(9),
         WmiVolatility(10000)]
         boolean Critical;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{535a3767-1ac2-49bc-a077-3f7a02e40aec}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Estimated runtime") : amended]

class BatteryRuntime:MSBatteryClass
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Estimated System Runtime") : amended,
         WmiDataId(2),
         WmiVolatility(10000)]
         uint32 EstimatedRuntime;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{1a52a14d-adce-4a44-9a3e-c8d8f15ff2c2}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Battery Temperature") : amended]

class BatteryTemperature:MSBatteryClass
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Battery Temperature") : amended,
         WmiDataId(2),
         WmiVolatility(10000)]
         uint32 Temperature;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{40b40565-96f7-4435-8694-97e0e4395905}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Full charged Capacity") : amended]

class BatteryFullChargedCapacity:MSBatteryClass
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Last measured total full charged battery capacity") : amended,
         WmiDataId(2),
         WmiVolatility(100000000)]
         uint32 FullChargedCapacity;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{ef98db24-0014-4c25-a50b-c724ae5cd371}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Battery Cycle Count") : amended]

class BatteryCycleCount:MSBatteryClass
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Cycle Count") : amended,
         WmiDataId(2),
         WmiVolatility(100000000)]
         uint32 CycleCount;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{05e1e463-e4e2-4ea9-80cb-9bd4b3ca0655}"),
 localeid(0x409),
 WmiExpense(1000),
 Description("Static Data") : amended]

class BatteryStaticData:MSBatteryClass
{
        [key, read]
        string InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Manufacture Date") : amended,
         WmiDataId(2)]
         datetime ManufactureDate;

        [read,
         Description("Granularity") : amended,
         WmiDataId(3)]
         uint64 Granularity0;

        [read,
         Description("Granularity") : amended,
         WmiDataId(4)]
         uint64 Granularity1;

        [read,
         Description("Granularity") : amended,
         WmiDataId(5)]
         uint64 Granularity2;

        [read,
         Description("Granularity") : amended,
         WmiDataId(6)]
         uint64 Granularity3;

        [read,
         Description("Capabilities") : amended,
         WmiDataId(7)]
         uint32 Capabilities;

        [read,
         Description("Technology") : amended,
         WmiDataId(8)]
         uint8 Technology;

        [read,
         Description("Chemistry") : amended,
         WmiDataId(9)]
         uint32 Chemistry;

        [read,
         Description("Designed Capacity") : amended,
         WmiDataId(10)]
         uint32 DesignedCapacity;

        [read,
         Description("Default Critical battery alarm setting") : amended,
         WmiDataId(11)]
         uint32 DefaultAlert1;

        [read,
         Description("Default Low battery alarm setting") : amended,
         WmiDataId(12)]
         uint32 DefaultAlert2;

        [read,
         Description("Critical Bias") : amended,
         WmiDataId(13)]
         uint32 CriticalBias;

        [read,
         Description("Device Name") : amended,
         WmiDataId(14)]
         string DeviceName;

        [read,
         Description("Manufacture Name") : amended,
         WmiDataId(15)]
         string ManufactureName;

        [read,
         Description("Serial number") : amended,
         WmiDataId(16)]
         string SerialNumber;

        [read,
         Description("Unique ID") : amended,
         WmiDataId(17)]
         string UniqueID;
};





class MSBatteryClassEvent:WmiEvent
{
};


[WMI, Dynamic, Provider("WMIProv"),
 guid("{cddfa0c3-7c5b-4e43-a034-059fa5b84364}"),
 localeid(0x409),
 WmiExpense(1),
 Description("Battery Status Change Event") : amended]
class BatteryStatusChange:MSBatteryClassEvent
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

        [read,
         Description("Power Online") : amended,
         WmiDataId(2),
         WmiVolatility(10000)]
         boolean PowerOnline;

        [read,
         Description("Charging") : amended,
         WmiDataId(3),
         WmiVolatility(10000)]
         boolean Charging;

        [read,
         Description("Discharging") : amended,
         WmiDataId(4),
         WmiVolatility(10000)]
         boolean Discharging;

        [read,
         Description("Critical") : amended,
         WmiDataId(5),
         WmiVolatility(10000)]
         boolean Critical;
};

[WMI, Dynamic, Provider("WMIProv"),
 guid("{5e1f6e19-8786-4d23-94fc-9e746bd5d888}"),
 localeid(0x409),
 WmiExpense(1),
 Description("Battery inserted or removed") : amended]
class BatteryTagChange:MSBatteryClassEvent
{
        [key, read]
        string  InstanceName;
        [read]
        boolean Active;

        [read,
         Description("Battery Tag") : amended,
         WmiDataId(1)]
         uint32 Tag;

};
