//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Radios
        {
            typedef enum RadioAccessStatus RadioAccessStatus;

            typedef enum RadioKind RadioKind;

            typedef enum RadioState RadioState;

            interface IRadio;

            interface IRadioStatics;

            runtimeclass Radio;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Radios
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Radios.Radio*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Radios.Radio*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Radios.Radio*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.Radio*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.RadioAccessStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.Radios.Radio*>*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Radios.Radio*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Radios
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum RadioAccessStatus
            {
                Unspecified    = 0,
                Allowed        = 1,
                DeniedByUser   = 2,
                DeniedBySystem = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum RadioKind
            {
                Other           = 0,
                WiFi            = 1,
                MobileBroadband = 2,
                Bluetooth       = 3,
                FM              = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum RadioState
            {
                Unknown  = 0,
                On       = 1,
                Off      = 2,
                Disabled = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Radios.Radio)]
            [uuid(252118DF-B33E-416A-875F-1CF38AE2D83E)]
            interface IRadio : IInspectable
            {
                HRESULT SetStateAsync([in] Windows.Devices.Radios.RadioState value, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.RadioAccessStatus>** retval);
                [eventadd] HRESULT StateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Radios.Radio*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT StateChanged([in] EventRegistrationToken eventCookie);
                [propget] HRESULT State([out] [retval] Windows.Devices.Radios.RadioState* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT Kind([out] [retval] Windows.Devices.Radios.RadioKind* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Radios.Radio)]
            [uuid(5FB6A12E-67CB-46AE-AAE9-65919F86EFF4)]
            interface IRadioStatics : IInspectable
            {
                HRESULT GetRadiosAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.Radios.Radio*>*>** value);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* deviceSelector);
                [overload("FromIdAsync")] HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.Radio*>** value);
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Radios.RadioAccessStatus>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Radios.IRadioStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass Radio
            {
                [default] interface Windows.Devices.Radios.IRadio;
            }
        }
    }
}
