/*
 *  Copyright (c) 2016, The OpenThread Authors.
 *  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *  1. Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *  2. Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *  3. Neither the name of the copyright holder nor the
 *     names of its contributors may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 *  POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * @file
 * @brief
 *   This file defines the IOCTL interface for otLwf.sys.
 */

#ifndef __OTLWFIOCTL_H__
#define __OTLWFIOCTL_H__

#include <openthread/types.h>

__inline LONG ThreadErrorToNtstatus(otError error) { return (LONG)-((int)error); }

// User-mode IOCTL path for CreateFile
#define OTLWF_IOCLT_PATH      TEXT("\\\\.\\\\otlwf")

//
// IOCLTs and Data Types
//

#define OTLWF_CTL_CODE(request, method, access) \
    CTL_CODE(FILE_DEVICE_NETWORK, request, method, access)

// Different possible notification types
typedef enum _OTLWF_NOTIF_TYPE
{
    OTLWF_NOTIF_UNSPECIFIED,
    OTLWF_NOTIF_DEVICE_AVAILABILITY,
    OTLWF_NOTIF_STATE_CHANGE,
    OTLWF_NOTIF_DISCOVER,
    OTLWF_NOTIF_ACTIVE_SCAN,
    OTLWF_NOTIF_ENERGY_SCAN,
    OTLWF_NOTIF_COMMISSIONER_ENERGY_REPORT,
    OTLWF_NOTIF_COMMISSIONER_PANID_QUERY,
    OTLWF_NOTIF_JOINER_COMPLETE

} OTLWF_NOTIF_TYPE;

#define MAX_ENERGY_REPORT_LENGTH    64

//
// Queries (async) the next notification in the queue
//
#define IOCTL_OTLWF_QUERY_NOTIFICATION \
    OTLWF_CTL_CODE(0, METHOD_BUFFERED, FILE_READ_DATA)
    typedef struct _OTLWF_NOTIFICATION {
        GUID                InterfaceGuid;
        OTLWF_NOTIF_TYPE    NotifType;
        union
        {
            // Payload for OTLWF_NOTIF_DEVICE_AVAILABILITY
            struct
            {
                BOOLEAN                 Available;
            } DeviceAvailabilityPayload;

            // Payload for OTLWF_NOTIF_STATE_CHANGE
            struct
            {
                uint32_t                Flags;
            } StateChangePayload;

            // Payload for OTLWF_NOTIF_DISCOVER
            struct
            {
                BOOLEAN                 Valid;
                otActiveScanResult      Results;
            } DiscoverPayload;

            // Payload for OTLWF_NOTIF_ACTIVE_SCAN
            struct
            {
                BOOLEAN                 Valid;
                otActiveScanResult      Results;
            } ActiveScanPayload;

            // Payload for OTLWF_NOTIF_ENERGY_SCAN
            struct
            {
                BOOLEAN                 Valid;
                otEnergyScanResult      Results;
            } EnergyScanPayload;

            // Payload for OTLWF_NOTIF_COMMISSIONER_ENERGY_REPORT
            struct
            {
                uint32_t                ChannelMask;
                uint8_t                 EnergyListLength;
                uint8_t                 EnergyList[MAX_ENERGY_REPORT_LENGTH];

            } CommissionerEnergyReportPayload;

            // Payload for OTLWF_NOTIF_COMMISSIONER_PANID_QUERY
            struct
            {
                uint16_t                PanId;
                uint32_t                ChannelMask;
            } CommissionerPanIdQueryPayload;

            // Payload for OTLWF_NOTIF_JOINER_COMPLETE
            struct
            {
                otError             Error;
            } JoinerCompletePayload;
        };
    } OTLWF_NOTIFICATION, *POTLWF_NOTIFICATION;

//
// Enumerates all the Thread interfaces guids
//
#define IOCTL_OTLWF_ENUMERATE_DEVICES \
    OTLWF_CTL_CODE(1, METHOD_BUFFERED, FILE_READ_DATA)
    typedef struct _OTLWF_INTERFACE_LIST
    {
        uint16_t cInterfaceGuids;
        GUID     InterfaceGuids[1];
    } OTLWF_INTERFACE_LIST, *POTLWF_INTERFACE_LIST;

//
// Queries the detials of a given device Thread interfaces
//
#define IOCTL_OTLWF_QUERY_DEVICE \
    OTLWF_CTL_CODE(2, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid (in)
    typedef struct _OTLWF_DEVICE {
        ULONG           CompartmentID;
    } OTLWF_DEVICE, *POTLWF_DEVICE;

//
// Proxies to ot* APIs in otLwf.sys
//

/* REMOVED
#define IOCTL_OTLWF_OT_ENABLED \
    OTLWF_CTL_CODE(100, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aEnabled
*/
#define IOCTL_OTLWF_OT_INTERFACE \
    OTLWF_CTL_CODE(101, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aUp

#define IOCTL_OTLWF_OT_THREAD \
    OTLWF_CTL_CODE(102, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aStarted

#define IOCTL_OTLWF_OT_ACTIVE_SCAN \
    OTLWF_CTL_CODE(103, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aScanChannels
    // uint16_t - aScanDuration

#define IOCTL_OTLWF_OT_DISCOVER \
    OTLWF_CTL_CODE(104, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aScanChannels
    // uint16_t - aScanDuration
    // uint16_t - aPanid

#define IOCTL_OTLWF_OT_CHANNEL \
    OTLWF_CTL_CODE(105, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aChannel

#define IOCTL_OTLWF_OT_CHILD_TIMEOUT \
    OTLWF_CTL_CODE(106, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aTimeout

#define IOCTL_OTLWF_OT_EXTENDED_ADDRESS \
    OTLWF_CTL_CODE(107, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtendedAddress

#define IOCTL_OTLWF_OT_EXTENDED_PANID \
    OTLWF_CTL_CODE(108, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtendedPanId - aExtendedPanId

#define IOCTL_OTLWF_OT_LEADER_RLOC \
    OTLWF_CTL_CODE(109, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otIp6Address - aLeaderRloc

#define IOCTL_OTLWF_OT_LINK_MODE \
    OTLWF_CTL_CODE(110, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otLinkModeConfig - aConfig

#define IOCTL_OTLWF_OT_MASTER_KEY \
    OTLWF_CTL_CODE(111, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otMasterKey - aKey
    // uint8_t - aKeyLength

#define IOCTL_OTLWF_OT_MESH_LOCAL_EID \
    OTLWF_CTL_CODE(112, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otIp6Address - aMeshLocalEid

#define IOCTL_OTLWF_OT_MESH_LOCAL_PREFIX \
    OTLWF_CTL_CODE(113, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otMeshLocalPrefix - aPrefix

#define IOCTL_OTLWF_OT_NETWORK_DATA_LEADER \
    OTLWF_CTL_CODE(114, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t[] - aData

#define IOCTL_OTLWF_OT_NETWORK_DATA_LOCAL \
    OTLWF_CTL_CODE(115, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t[] - aData

#define IOCTL_OTLWF_OT_NETWORK_NAME \
    OTLWF_CTL_CODE(116, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otNetworkName - aNetworkName

#define IOCTL_OTLWF_OT_PAN_ID \
    OTLWF_CTL_CODE(117, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otPanId - aPanId

#define IOCTL_OTLWF_OT_ROUTER_ROLL_ENABLED \
    OTLWF_CTL_CODE(118, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aEnabled

#define IOCTL_OTLWF_OT_SHORT_ADDRESS \
    OTLWF_CTL_CODE(119, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otShortAddress - aShortAddress

/* NOT USED
#define IOCTL_OTLWF_OT_UNICAST_ADDRESSES \
    OTLWF_CTL_CODE(120, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otNetifAddress[] - aAddresses
*/

#define IOCTL_OTLWF_OT_ACTIVE_DATASET \
    OTLWF_CTL_CODE(121, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otOperationalDataset - aDataset

#define IOCTL_OTLWF_OT_PENDING_DATASET \
    OTLWF_CTL_CODE(122, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otOperationalDataset - aDataset

#define IOCTL_OTLWF_OT_LOCAL_LEADER_WEIGHT \
    OTLWF_CTL_CODE(123, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aWeight

#define IOCTL_OTLWF_OT_ADD_BORDER_ROUTER \
    OTLWF_CTL_CODE(124, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otBorderRouterConfig - aConfig

#define IOCTL_OTLWF_OT_REMOVE_BORDER_ROUTER \
    OTLWF_CTL_CODE(125, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otIp6Prefix - aPrefix

#define IOCTL_OTLWF_OT_ADD_EXTERNAL_ROUTE \
    OTLWF_CTL_CODE(126, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExternalRouteConfig - aConfig

#define IOCTL_OTLWF_OT_REMOVE_EXTERNAL_ROUTE \
    OTLWF_CTL_CODE(127, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otIp6Prefix - aPrefix

#define IOCTL_OTLWF_OT_SEND_SERVER_DATA \
    OTLWF_CTL_CODE(128, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_CONTEXT_ID_REUSE_DELAY \
    OTLWF_CTL_CODE(129, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aDelay

#define IOCTL_OTLWF_OT_KEY_SEQUENCE_COUNTER \
    OTLWF_CTL_CODE(130, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aKeySequenceCounter

#define IOCTL_OTLWF_OT_NETWORK_ID_TIMEOUT \
    OTLWF_CTL_CODE(131, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aTimeout

#define IOCTL_OTLWF_OT_ROUTER_UPGRADE_THRESHOLD \
    OTLWF_CTL_CODE(132, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aThreshold

#define IOCTL_OTLWF_OT_RELEASE_ROUTER_ID \
    OTLWF_CTL_CODE(133, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aRouterId

#define IOCTL_OTLWF_OT_MAC_WHITELIST_ENABLED \
    OTLWF_CTL_CODE(134, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aEnabled

#define IOCTL_OTLWF_OT_ADD_MAC_WHITELIST \
    OTLWF_CTL_CODE(135, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtAddr
    // int8_t - aRssi (optional)

#define IOCTL_OTLWF_OT_REMOVE_MAC_WHITELIST \
    OTLWF_CTL_CODE(136, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtAddr

#define IOCTL_OTLWF_OT_MAC_WHITELIST_ENTRY \
    OTLWF_CTL_CODE(137, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aIndex (input)
    // otMacWhitelistEntry - aEntry (output)

#define IOCTL_OTLWF_OT_CLEAR_MAC_WHITELIST \
    OTLWF_CTL_CODE(138, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_DEVICE_ROLE \
    OTLWF_CTL_CODE(139, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otDeviceRole - aRole
    // otMleAttachFilter - aFilter (only for OT_DEVICE_ROLE_CHILD)

#define IOCTL_OTLWF_OT_CHILD_INFO_BY_ID \
    OTLWF_CTL_CODE(140, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint16_t - aChildId (input)
    // otChildInfo - aChildInfo (output)

#define IOCTL_OTLWF_OT_CHILD_INFO_BY_INDEX \
    OTLWF_CTL_CODE(141, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aChildIndex (input)
    // otChildInfo - aChildInfo (output)

#define IOCTL_OTLWF_OT_EID_CACHE_ENTRY \
    OTLWF_CTL_CODE(142, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aIndex (input)
    // otEidCacheEntry - aEntry (output)

#define IOCTL_OTLWF_OT_LEADER_DATA \
    OTLWF_CTL_CODE(143, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otLeaderData - aLeaderData

#define IOCTL_OTLWF_OT_LEADER_ROUTER_ID \
    OTLWF_CTL_CODE(144, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aRouterID

#define IOCTL_OTLWF_OT_LEADER_WEIGHT \
    OTLWF_CTL_CODE(145, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aWeight

#define IOCTL_OTLWF_OT_NETWORK_DATA_VERSION \
    OTLWF_CTL_CODE(146, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aVersion

#define IOCTL_OTLWF_OT_PARTITION_ID \
    OTLWF_CTL_CODE(147, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aPartition

#define IOCTL_OTLWF_OT_RLOC16 \
    OTLWF_CTL_CODE(148, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint16_t - aRloc16

#define IOCTL_OTLWF_OT_ROUTER_ID_SEQUENCE \
    OTLWF_CTL_CODE(149, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aIdSequence

#define IOCTL_OTLWF_OT_ROUTER_INFO \
    OTLWF_CTL_CODE(150, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint16_t - aRouterId (input)
    // otRouterInfo - aRouterInfo (output)

#define IOCTL_OTLWF_OT_STABLE_NETWORK_DATA_VERSION \
    OTLWF_CTL_CODE(151, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aVersion

#define IOCTL_OTLWF_OT_MAC_BLACKLIST_ENABLED \
    OTLWF_CTL_CODE(152, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aEnabled

#define IOCTL_OTLWF_OT_ADD_MAC_BLACKLIST \
    OTLWF_CTL_CODE(153, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtAddr

#define IOCTL_OTLWF_OT_REMOVE_MAC_BLACKLIST \
    OTLWF_CTL_CODE(154, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtAddr

#define IOCTL_OTLWF_OT_MAC_BLACKLIST_ENTRY \
    OTLWF_CTL_CODE(155, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aIndex (input)
    // otMacBlacklistEntry - aEntry (output)

#define IOCTL_OTLWF_OT_CLEAR_MAC_BLACKLIST \
    OTLWF_CTL_CODE(156, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_MAX_TRANSMIT_POWER \
    OTLWF_CTL_CODE(157, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // int8_t - aPower

#define IOCTL_OTLWF_OT_NEXT_ON_MESH_PREFIX \
    OTLWF_CTL_CODE(158, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aLocal (input)
    // uint8_t - aIterator (input)
    // uint8_t - aNewIterator (output)
    // otBorderRouterConfig - aConfig (output)

#define IOCTL_OTLWF_OT_POLL_PERIOD \
    OTLWF_CTL_CODE(159, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aPollPeriod

#define IOCTL_OTLWF_OT_LOCAL_LEADER_PARTITION_ID \
    OTLWF_CTL_CODE(160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aPartitionId

#define IOCTL_OTLWF_OT_ASSIGN_LINK_QUALITY \
    OTLWF_CTL_CODE(161, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aExtAddr (input)
    // uint8_t - aLinkQuality (input or output)

#define IOCTL_OTLWF_OT_PLATFORM_RESET \
    OTLWF_CTL_CODE(162, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_PARENT_INFO \
    OTLWF_CTL_CODE(163, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otRouterInfo - aParentInfo

#define IOCTL_OTLWF_OT_SINGLETON \
    OTLWF_CTL_CODE(164, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aSingleton

#define IOCTL_OTLWF_OT_MAC_COUNTERS \
    OTLWF_CTL_CODE(165, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otMacCounters - aCounters

#define IOCTL_OTLWF_OT_MAX_CHILDREN \
    OTLWF_CTL_CODE(166, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aMaxChildren

#define IOCTL_OTLWF_OT_COMMISIONER_START \
    OTLWF_CTL_CODE(167, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_COMMISIONER_STOP \
    OTLWF_CTL_CODE(168, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define OPENTHREAD_PSK_MAX_LENGTH                32
#define OPENTHREAD_PROV_URL_MAX_LENGTH           64
#define OPENTHREAD_VENDOR_NAME_MAX_LENGTH        32
#define OPENTHREAD_VENDOR_MODEL_MAX_LENGTH       32
#define OPENTHREAD_VENDOR_SW_VERSION_MAX_LENGTH  16
#define OPENTHREAD_VENDOR_DATA_MAX_LENGTH        64
typedef struct otCommissionConfig
{
    char PSKd[OPENTHREAD_PSK_MAX_LENGTH + 1];
    char ProvisioningUrl[OPENTHREAD_PROV_URL_MAX_LENGTH + 1];
    char VendorName[OPENTHREAD_VENDOR_NAME_MAX_LENGTH + 1];
    char VendorModel[OPENTHREAD_VENDOR_MODEL_MAX_LENGTH + 1];
    char VendorSwVersion[OPENTHREAD_VENDOR_SW_VERSION_MAX_LENGTH + 1];
    char VendorData[OPENTHREAD_VENDOR_DATA_MAX_LENGTH + 1];
} otCommissionConfig;

#define IOCTL_OTLWF_OT_JOINER_START \
    OTLWF_CTL_CODE(169, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otCommissionConfig - aConfig

#define IOCTL_OTLWF_OT_JOINER_STOP \
    OTLWF_CTL_CODE(170, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_FACTORY_EUI64 \
    OTLWF_CTL_CODE(171, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aEui64

#define IOCTL_OTLWF_OT_HASH_MAC_ADDRESS \
    OTLWF_CTL_CODE(172, METHOD_BUFFERED, FILE_READ_DATA)
    // GUID - InterfaceGuid
    // otExtAddress - aEui64

#define IOCTL_OTLWF_OT_ROUTER_DOWNGRADE_THRESHOLD \
    OTLWF_CTL_CODE(173, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aThreshold

#define IOCTL_OTLWF_OT_COMMISSIONER_PANID_QUERY \
    OTLWF_CTL_CODE(174, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint16_t - aPanId
    // uint32_t - aChannekMask
    // otIp6Address - aAddress

#define IOCTL_OTLWF_OT_COMMISSIONER_ENERGY_SCAN \
    OTLWF_CTL_CODE(175, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aChannekMask
    // uint8_t - aCount
    // uint16_t - aPeriod
    // uint16_t - aScanDuration
    // otIp6Address - aAddress

#define IOCTL_OTLWF_OT_ROUTER_SELECTION_JITTER \
    OTLWF_CTL_CODE(176, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aRouterJitter

#define IOCTL_OTLWF_OT_JOINER_UDP_PORT \
    OTLWF_CTL_CODE(177, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint16_t - aJoinerUdpPort

#define IOCTL_OTLWF_OT_SEND_DIAGNOSTIC_GET \
    OTLWF_CTL_CODE(178, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otIp6Address - aDestination
    // uint8_t - aCount
    // uint8_t[aCount] - aTlvTypes

#define IOCTL_OTLWF_OT_SEND_DIAGNOSTIC_RESET \
    OTLWF_CTL_CODE(179, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otIp6Address - aDestination
    // uint8_t - aCount
    // uint8_t[aCount] - aTlvTypes

#define IOCTL_OTLWF_OT_COMMISIONER_ADD_JOINER \
    OTLWF_CTL_CODE(180, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aExtAddressValid
    // otExtAddress - aExtAddress (optional)
    // char[OPENTHREAD_PSK_MAX_LENGTH + 1] - aPSKd
    // uint32_t - aTimeout

#define IOCTL_OTLWF_OT_COMMISIONER_REMOVE_JOINER \
    OTLWF_CTL_CODE(181, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aExtAddressValid
    // otExtAddress - aExtAddress (optional)

#define IOCTL_OTLWF_OT_COMMISIONER_PROVISIONING_URL \
    OTLWF_CTL_CODE(182, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // char[OPENTHREAD_PROV_URL_MAX_LENGTH + 1] - aProvisioningUrl (optional)

#define IOCTL_OTLWF_OT_COMMISIONER_ANNOUNCE_BEGIN \
    OTLWF_CTL_CODE(183, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aChannelMask
    // uint8_t - aCount
    // uint16_t - aPeriod
    // otIp6Address - aAddress

#define IOCTL_OTLWF_OT_ENERGY_SCAN \
    OTLWF_CTL_CODE(184, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aScanChannels
    // uint16_t - aScanDuration

#define IOCTL_OTLWF_OT_SEND_ACTIVE_GET \
    OTLWF_CTL_CODE(185, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvTypes
    // otIp6Address - aAddress (optional)

#define IOCTL_OTLWF_OT_SEND_ACTIVE_SET \
    OTLWF_CTL_CODE(186, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otOperationalDataset - aDataset
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvTypes

#define IOCTL_OTLWF_OT_SEND_PENDING_GET \
    OTLWF_CTL_CODE(187, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvTypes
    // otIp6Address - aAddress (optional)

#define IOCTL_OTLWF_OT_SEND_PENDING_SET \
    OTLWF_CTL_CODE(188, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otOperationalDataset - aDataset
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvTypes

#define IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_GET \
    OTLWF_CTL_CODE(189, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvs

#define IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_SET \
    OTLWF_CTL_CODE(190, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otOperationalDataset - aDataset
    // uint8_t - aLength
    // uint8_t[aLength] - aTlvs

#define IOCTL_OTLWF_OT_KEY_SWITCH_GUARDTIME \
    OTLWF_CTL_CODE(191, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint32_t - aKeySwitchGuardTime

#define IOCTL_OTLWF_OT_FACTORY_RESET \
    OTLWF_CTL_CODE(192, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid

#define IOCTL_OTLWF_OT_THREAD_AUTO_START \
    OTLWF_CTL_CODE(193, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // BOOLEAN - aAutoStart

#define IOCTL_OTLWF_OT_PREFERRED_ROUTER_ID \
    OTLWF_CTL_CODE(194, METHOD_BUFFERED, FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // uint8_t - aRouterId

#define IOCTL_OTLWF_OT_PSKC \
    OTLWF_CTL_CODE(195, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // otPSKc - aPSKc

#define IOCTL_OTLWF_OT_PARENT_PRIORITY \
    OTLWF_CTL_CODE(196, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
    // GUID - InterfaceGuid
    // int8_t - aParentPriority

// OpenThread function IOCTL codes
#define MIN_OTLWF_IOCTL_FUNC_CODE 100
#define MAX_OTLWF_IOCTL_FUNC_CODE 196

#endif //__OTLWFIOCTL_H__
