//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        apicontract DevicesLowLevelContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Adc
        {
            namespace Provider
            {
                typedef enum ProviderAdcChannelMode ProviderAdcChannelMode;

                interface IAdcControllerProvider;

                interface IAdcProvider;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Adc
        {
            namespace Provider
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Adc.Provider.IAdcControllerProvider*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Adc.Provider.IAdcControllerProvider*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Adc.Provider.IAdcControllerProvider*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Adc
        {
            namespace Provider
            {
                [contract(Windows.Devices.DevicesLowLevelContract, 1.0)]
                enum ProviderAdcChannelMode
                {
                    SingleEnded  = 0,
                    Differential = 1
                };

                [contract(Windows.Devices.DevicesLowLevelContract, 1.0)]
                [uuid(BE545828-816D-4DE5-A048-ABA06958AAA8)]
                interface IAdcControllerProvider : IInspectable
                {
                    [propget] HRESULT ChannelCount([out] [retval] INT32* value);
                    [propget] HRESULT ResolutionInBits([out] [retval] INT32* value);
                    [propget] HRESULT MinValue([out] [retval] INT32* value);
                    [propget] HRESULT MaxValue([out] [retval] INT32* value);
                    [propget] HRESULT ChannelMode([out] [retval] Windows.Devices.Adc.Provider.ProviderAdcChannelMode* value);
                    [propput] HRESULT ChannelMode([in] Windows.Devices.Adc.Provider.ProviderAdcChannelMode value);
                    HRESULT IsChannelModeSupported([in] Windows.Devices.Adc.Provider.ProviderAdcChannelMode channelMode, [out] [retval] boolean* result);
                    HRESULT AcquireChannel([in] INT32 channel);
                    HRESULT ReleaseChannel([in] INT32 channel);
                    HRESULT ReadValue([in] INT32 channelNumber, [out] [retval] INT32* result);
                }

                [contract(Windows.Devices.DevicesLowLevelContract, 1.0)]
                [uuid(28953668-9359-4C57-BC88-E275E81638C9)]
                interface IAdcProvider : IInspectable
                {
                    HRESULT GetControllers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Adc.Provider.IAdcControllerProvider*>** result);
                }
            }
        }
    }
}
