3.1.5.3 Handling OOB Connector Service Activation Messages

The following sequence defines the required actions of the NfpService if an OOB Connector Service Activation message (section 2.2.5) is received on the transport link on the SourceID of the NfpService.

  1. A new OOB Connector object SHOULD be created in the NfpService's list with the following attributes, unless one already exists with a RemoteSourceID equal to the SourceID field in the Service Activation header (section 2.2.7) within the received message:

    1. Role: Listener

    2. RemoteSourceID: The SourceID field in the Service Activation header within the received message.

    3. WFDPeerConnected: FALSE

  2. If the OOB Connector object has the connector role, then this sequence MUST be stopped: Steps 5 and later MUST NOT occur.

  3. Reset the following OOB Connector object variables:

    1. State: WaitingForTransmit

    2. OOBConnectorID: Copy this value from the ReplyChannelID field of the received message.

    3. LocalAddresses: The list of local addresses collected from the local machine.

    4. RemoteAddresses: Copy this value from the various Address fields of the received message.

  4. If the OOB Connector object's WFDPeerConnected field is equal to FALSE, construct a new WFD listen BLOB for the local machine.

  5. If the OOB Connector object's WFDPeerConnected field is equal to FALSE, the NfpService can attempt to use the WFD connect BLOB to start listening for WFD OOB pairing connections.

  6. Construct an OOB Connector Service ACK message (section 2.2.4):

    1. Set the WiFiDirectListenBlobLength and WiFiDirectListenBlob fields as specified in section 2.2.4.

    2. Use the OOB Connector object's LocalAddresses to set the various address fields.

  7. Publish the OOB Connector Service ACK message on the received ReplyChannelID.

If the transport link indicates that this message is transmitted prior to the OOBConnectorProtocolTimer expiring for this OOB Connector object, then the OOB Connector object's State moves to Ready.

  1. If the OOBConnectorProtocolTimer has not yet fired for this OOB Connector object, stop the timer and decrement the OOB Connector ReferenceCount by 1.

  2. Start the OOBConnectorProtocolTimer for this OOB Connector object.

  3. Increment the OOB Connector ReferenceCount by 1.