
===============================================================================

        S E T U P  I N S T R U C T I O N S F O R  *WifiDirect*

Driver,FW release:

1. Make sure, bg_scan.conf,uaputl.conf has SSID starting with "DIRECT-"
2. Download uAP configuration and BG scan configuration.
3. This version of wifidirectutl breaks the backward compatibility and will work
with following releases -
    8797 >= 14.xx.16.p15
         >= 14.xx.11.p138
    8766 >= 14.xx.11.p138
    8787 >= 14.xx.9.p89

    However, In case one needs to run the utility in backward compatibility mode
    he can do so by running following command before running the utility -

    # export WIFIDIR_USE_FIXED_IE_INDICES=1

    To disable backward comaptibility mode run following command -

    # export WIFIDIR_USE_FIXED_IE_INDICES=0

WPSWIFIDIRECT release:

1. Modify the wifidirect.conf file to specify the correct HW addresses of
   devices. The DUT mac address and peer mac address needs to be correctly
   entered.

===============================================================================
        U S E R  M A N U A L  F O R  WIFIDIRECTUTL

NAME
	wifidirectutl

This tool can be used to configure WifiDirect parameters.

------------------
Supported Commands
------------------
wifidirect_mode [MODE]
wifidirect_config [*.conf]
wifidirect_params_config [*.conf]
wifidirect_action_frame <*.conf> | [<PeerAddr> <Category> <OuiSubtype> <DialogToken>]
wifidirect_discovery_request <*.conf>
wifidirect_discovery_response <*.conf>

wifidirect_cfg_discovery_period [<MinDiscPeriod> <MaxDiscPeriod>]
wifidirect_cfg_intent [IntentValue]
wifidirect_cfg_capability [<DeviceCapability> <GroupCapability>]
wifidirect_cfg_noa <enable|disable> <index> [<counttype> <duration> <interval>]
wifidirect_cfg_opp_ps <enable|disable> [<CTWindow>]
wifidirect_cfg_invitation_list [mac_addr]
wifidirect_cfg_listen_channel [ListenChannel]
wifidirect_cfg_op_channel [OperatingChannel]
wifidirect_cfg_persistent_group_record [index] [role]
           [<groupbss> <deviceId> <ssid> <psk>] [peermac1] [peermac2]
wifidirect_cfg_persistent_group_invoke [index] | <cancel>
wifidirect_cfg_presence_req_params [<type> <duration> <interval>]
wifidirect_cfg_ext_listen_time [<duration> <interval>]
wifidirect_cfg_provisioning_params [<action> <configMethods> <devicePassword>]
wifidirect_cfg_wps_params [<action>]

wifidirect_mode [mode]
----------
    "./wifidirectutl <iface> wifidirect_mode [mode]"

    This command is used to setup various modes for wifidirect device.
    The mode 2 can be used only when wifidirect is started using mode 1.
    The mode 3 should not be used for uAP.

    The supported options are:
        mode :     0 - stop wifidirect mode
                   1 - start wifidirect mode
                   2 - start wifidirect group owner mode
                   3 - start wifidirect client mode
                   4 - start wifidirect find phase
                   5 - stop wifidirect find phase
        empty - Get current wifidirect mode

    Example:
        ./wifidirectutl <iface> wifidirect_mode 0
                Stop wifidirect mode.

        ./wifidirectutl <iface> wifidirect_mode 1
                Start wifidirect mode.

        ./wifidirectutl <iface> wifidirect_mode
                Get current WIFIDIRECT start/stop mode.

wifidirect_config
----------
    "./wifidirectutl <iface> wifidirect_config [*.conf]"

    This command is used to set/get the wifidirect configuration.

        Example:
        ./wifidirectutl <iface> wifidirect_config wifidirect.conf
            Read configuration from wifidirect.conf and apply it.
        ./wifidirectutl <iface> wifidirect_config
            Read existing wifidirect configuration and display it.

wifidirect_params_config
----------
    "./wifidirectutl <iface> wifidirect_params_config [*.conf]"

    This command is used to set/get the wifidirect parameters configuration.

        Example:
        ./wifidirectutl <iface> wifidirect_params_config wifidirect.conf
            Read parameter configuration from wifidirect.conf and apply it.
        ./wifidirectutl <iface> wifidirect_params_config
            Read existing wifidirect parameters's configuration and display it.

wifidirect_action_frame
----------
    "./wifidirectutl <iface> wifidirect_action_frame <*.conf> | <PeerAddr> <Category> <OUISubtype> <DialogToken>"

    This command is used to send action frames as specified in config file or on command line.

        Example:
        ./wifidirectutl <iface> wifidirect_action_frame wifidirect.conf
            Read action_frame from wifidirect.conf and send to peer.
        ./wifidirectutl <iface> wifidirect_action_frame <PeerAddr> <Category> <OUISubtype> <DialogToken>
            Read action frame parameters from command line and send to peer.

wifidirect_discovery_request
----------
    "./wifidirectutl <iface> wifidirect_discovery_request <*.conf>"

    This command is used to send wifidirect discovery request packet.

        Example:
        ./wifidirectutl <iface> wifidirect_discovery_request wifidirect.conf
            Read discovery packet from wifidirect.conf and send to peer.

wifidirect_discovery_response
----------
    "./wifidirectutl <iface> wifidirect_discovery_response <*.conf>"

    This command is used to send wifidirect discovery response packet.

        Example:
        ./wifidirectutl <iface> wifidirect_discovery_response wifidirect.conf
            Read discovery packet from wifidirect.conf and send to peer.

wifidirect_cfg_discovery_period
----------
	"./wifidirectutl <iface> wifidirect_cfg_discovery_period [<MinDiscPeriod> <MaxDiscPeriod>]"

	This command is used to set or get minimum and maximum discovery period.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_discovery_period 10 20
		Set minimum discovery interval to 10 and maximum discovery
		interval to	20.

		./wifidirectutl <iface> wifidirect_cfg_discovery_period
		Get minimum and maximum discovery interval.

wifidirect_cfg_intent
----------
	"./wifidirectutl <iface> wifidirect_cfg_intent [IntentValue]"

	This command is used to set or get intent value.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_intent 12
		Set intent value to 12.

		./wifidirectutl <iface> wifidirect_cfg_intent
		Get Group Owner Intent.

wifidirect_cfg_capability
----------
	"./wifidirectutl <iface> wifidirect_cfg_capability [<DeviceCapability> <GroupCapability>]"

	This command is used to set or get device capability and group capability.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_capability 10 20
		Set Device capability to 10 and group capability to 20

		./wifidirectutl <iface> wifidirect_cfg_capability
		Get Device capability and group capability.

wifidirect_cfg_noa
----------
	"./wifidirectutl <iface> wifidirect_cfg_noa <enable|disable> <index> [<counttype> <duration> <interval>]"

	This command is used to set or get NoA parameters like count_type, duration and
	interval in ms when NoA is enabled. Valid value of index is [0, 1].

		Example:
		./wifidirectutl <iface> wifidirect_cfg_noa enable 0 10 50 100
		Enable NoA and set count to 10, duration to 50ms and interval to 100 ms
            for index 0.

		./wifidirectutl <iface> wifidirect_cfg_noa disable 1
		Disable NoA at index 1.

		./wifidirectutl <iface> wifidirect_cfg_noa
		Get NoA settings.

wifidirect_cfg_opp_ps
----------
	"./wifidirectutl <iface> wifidirect_cfg_opp_ps <enable|disable> [<CTWindow>]"

	This command is used to set or get Opportunistic power save and CT window.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_opp_ps enable 50
		Set OppPS and CTwindow value to 50.

		./wifidirectutl <iface> wifidirect_cfg_opp_ps disable
		Disable OppPS.

		./wifidirectutl <iface> wifidirect_cfg_opp_ps
		Get OppPS and CT window.

wifidirect_cfg_invitation_list
----------
	"./wifidirectutl <iface> wifidirect_cfg_invitation_list [mac_addr]"

	This command is used to set or get invitation list of peers.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_invitation_list 00:50:43:20:23:34
		Set 00:50:43:20:23:34 in invitation list of peers.

		./wifidirectutl <iface> wifidirect_cfg_invitation_list
		Get Invitation list of peers.

wifidirect_cfg_listen_channel
----------
	"./wifidirectutl <iface> wifidirect_cfg_listen_channel [ListenChannel]"

	This command is used to set or get Listen channel.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_listen_channel 11
		Set Listen channel to 11.

		./wifidirectutl <iface> wifidirect_cfg_listen_channel
		Get Listen channel.

wifidirect_cfg_op_channel
----------
		"./wifidirectutl <iface> wifidirect_cfg_op_channel [OperatingChannel]"

		This command is used to set or get Operating channel.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_op_channel 11
		Set Operating channel to 11.

		./wifidirectutl <iface> wifidirect_cfg_op_channel
		Get Operating channel.

wifidirect_cfg_persistent_group_record
----------
		"./wifidirectutl <iface> [index] [role]
                 [<groupbss> <deviceId> <ssid> <psk>] [peermac1] [peermac2]"

		This command is used to set or get the persistent group record
        maintained in the device. Valid index is from 0 to 3. The role should be
        0 for client, 1 for group-owner.

		Example:
		./wifidirectutl <iface> wifidirect_cfg_persistent_group_record 0 1
        00:50:43:12:24:36 00:50:43:13:26:39 "DIRECT-" "1234567890"
        00:50:43:20:c2:d0
		Set persistent group record with index 0, role as group owner, bssId and
        device Id, ssid="DIRECT-", passphrase="1234567890", and peer mac address.
        The passphrase get converted to PSK.

		./wifidirectutl <iface> wifidirect_cfg_persistent_group_record 1 1
        00:50:43:12:24:36 00:50:43:13:26:39 "DIRECT-" "1234567890"
        0x1234567890123456789012345678901234567890123456789012345678901234
		Set persistent group record with index 1, role as group owner, bssId and
        device Id, ssid="DIRECT-", passphrase="1234567890", and peer mac address.
        The passphrase get converted to PSK.
        PSK is specified with "0x" prefix and 32 bytes (64 characters).

		./wifidirectutl <iface> wifidirect_cfg_persistent_group_record 1
		Get persistent group record with index 1.

		./wifidirectutl <iface> wifidirect_cfg_persistent_group_record
		Get persistent group record for all indices.

wifidirect_cfg_persistent_group_invoke
----------
		"./wifidirectutl <iface> wifidirect_cfg_persistent_group_invoke [index] | <cancel>"

		This command is used to invoke a particular persistent group record
        from the list. Valid index is from 0 to 3.

		./wifidirectutl <iface> wifidirect_cfg_persistent_group_invoke 2
		Invoke persistent group record with index 1.

		./wifidirectutl <iface> wifidirect_cfg_persistent_group_invoke cancel
		Cancel invokation of persistent groups.

wifidirect_cfg_presence_req_params
----------
		"./wifidirectutl <iface> wifidirect_cfg_presence_req_params [<type> <duration> <interval>]"

		This command is used to set/get presence request parameters. Type should
        be 1 for preferred values and 2 for acceptable values.

		./wifidirectutl <iface> wifidirect_cfg_presence_req_params 1 50 100
		Set duration to 50ms and interval to 100ms.

		./wifidirectutl <iface> wifidirect_cfg_presence_req_params
		Get presence request parameters.

wifidirect_cfg_ext_listen_time
----------
		"./wifidirectutl <iface> wifidirect_cfg_ext_listen_time [<duration> <interval>]"

		This command is used to set/get extended listen timing parameters.

		./wifidirectutl <iface> wifidirect_cfg_ext_listen_time 1200 1300
		Set availability period to 1200ms and availability interval to 1300 ms.

		./wifidirectutl <iface> wifidirect_cfg_ext_listen_time
		Get extended listen timing parameters.

wifidirect_cfg_provisioning_params
----------
		"./wifidirectutl <iface> wifidirect_cfg_provisioning_params [<action> <configMethod> <devicePassword>]"

		This command is used to set/get provisioning protocol parameters. Action should
        be 1 for request parameters and 2 for response parameters.

		./wifidirectutl <iface> wifidirect_cfg_provisioning_params 1 0x80 0x04
		Set config method to 0x86 and device password to 0x04.

		./wifidirectutl <iface> wifidirect_cfg_provisioning_params
		Get Provision protocol parameters.

wifidirect_cfg_wps_params
----------
		"./wifidirectutl <iface> wifidirect_cfg_wps_params [<action>]"

		This command is used to set WPS action. action can be "pin" (pin entered),
        "pbc"(button pressed) or "none".

		Example:
		./wifidirectutl <iface> wifidirect_cfg_wps_params pin
		Indicates pin operation

		./wifidirectutl <iface> wifidirect_cfg_wps_params none
		Indicates no operation

===============================================================================
        U S E R  M A N U A L  F O R  WIFIDISPLAY

wifidisplay_mode
-----------
            "./wifidirectutl <iface> wifidisplay_mode [<action>]"
            This command is used to enable or disable wifi-display. The possible values are either 1 or 0.
		Example:
		./wifidirectutl <iface> wifidisplay_mode 1
		Indicates enable wifi_display

		./wifidirectutl <iface> wifidisplay_mode 0
		Indicates disable wifi_display

wifidisplay_config
-----------
            "./wifidirectutl <iface> wifidisplay_config [*.conf]"

            This command is used to set/get the wifidisplay configuration.

             Example:
             ./wifidirectutl <iface> wifidisplay_config wifidisplay.conf
             Read configuration from wifidisplay.conf and apply it.
             ./wifidirectutl <iface> wifidisplay_config
             Read existing wifidisplay configuration and display it.

wifidisplay_update_devinfo
----------
            "./wifidirectutl <iface> wifidisplay_update_devinfo [value]"

            This command is used to set the device information of wifidisplay device information subelement.
            This command will overwrite the new device information with user defined value.

             Example:
             ./wifidirectutl <iface> wifidisplay_update_devinfo 10
             Update device information programmed with new value 10 by overwritting existing value.

wifidisplay_discovery_request
----------
            "./wifidirectutl <iface> wifidisplay_discovery_request [*.config]"

            This command is used to send wifi display service discovery request.

            Example:
            ./wifidirectutl <iface> wifidisplay_discovery_request wifidisplay.conf
            Read discovery packet from wifidisplay.conf and send to peer.

wifidisplay_discovery_response
----------
           "./wifidirectutl <iface> wifidisplay_discovery_response <*.conf>"

           This command is used to send wifidisplay discovery response packet.

           Example:
           ./wifidirectutl <iface> wifidisplay_discovery_response wifidisplay.conf
           Read discovery packet from wifidisplay.conf and send to peer.

===============================================================================
        U S E R  M A N U A L  F O R  MLANEVENT

NAME
mlanevent.exe

This tool can be used to listen for and obtain events from the driver
through the netlink layer. This is only used for display/debugging purpose.

----------------
Supported events
----------------
WIFIDIRECT_GENERIC_EVENT
WIFIDIRECT_SERVICE_DISCOVERY

-----------------
Details of events
-----------------

WIFIDIRECT_GENERIC_EVENT
-----------------
    For this event, the following information is shown:
        + Event length.
        + Event Type indicating Negociation, Invitation, Discoverability,
		Provision discovery related Request or Response.
        + Event SubType indicating Client or Group owner role.
        + Peer MAC address.
        + Associated WIFIDIRECT IE elements.

WIFIDIRECT_SERVICE_DISCOVERY
---------------------
    For this event, the following information is shown:
        + Peer MAC address.
        + Service discovery packet details.
