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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Pwm
        {
            namespace Provider
            {
                interface IPwmControllerProvider;

                interface IPwmProvider;
            }
        }
    }
}

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

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Pwm.Provider.IPwmControllerProvider*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Pwm.Provider.IPwmControllerProvider*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Pwm
        {
            namespace Provider
            {
                [uuid(1300593B-E2E3-40A4-B7D9-48DFF0377A52)]
                [version(0x0A000000)]
                interface IPwmControllerProvider : IInspectable
                {
                    [propget] HRESULT PinCount([out] [retval] INT32* value);
                    [propget] HRESULT ActualFrequency([out] [retval] DOUBLE* value);
                    HRESULT SetDesiredFrequency([in] DOUBLE frequency, [out] [retval] DOUBLE* value);
                    [propget] HRESULT MaxFrequency([out] [retval] DOUBLE* value);
                    [propget] HRESULT MinFrequency([out] [retval] DOUBLE* value);
                    HRESULT AcquirePin([in] INT32 pin);
                    HRESULT ReleasePin([in] INT32 pin);
                    HRESULT EnablePin([in] INT32 pin);
                    HRESULT DisablePin([in] INT32 pin);
                    HRESULT SetPulseParameters([in] INT32 pin, [in] DOUBLE dutyCycle, [in] boolean invertPolarity);
                }

                [uuid(A3301228-52F1-47B0-9349-66BA43D25902)]
                [version(0x0A000000)]
                interface IPwmProvider : IInspectable
                {
                    HRESULT GetControllers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Pwm.Provider.IPwmControllerProvider*>** result);
                }
            }
        }
    }
}
