blob: 5dbdf6dab422c99975c6b00a974a43d8225e6f09 [file] [log] [blame]
/*
* 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__