Abstract:
A first wireless devices establishes an association with a second wireless device by sending a connection request packet to a previously-discovered second wireless device. The second wireless device identifies the received packet as a connection request and responds with a connection response packet, thereby establishing an association between the first and second wireless devices. The wireless devices can then, for example, send and receive data.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of Provisional Application Ser. No. 60/835,614, filed Aug. 4, 2006, which is hereby incorporated by reference in its entirety. 
         [0002]    This application is related to the following applications which are hereby incorporated by reference in their entirety. 
         [0003]    1. Provisional Application Ser. No. 60/835,617, filed Aug. 4, 2006 and entitled “WIRELESS SUPPORT FOR PORTABLE MEDIA PLAYER DEVICES.” 
         [0004]    2. Provisional Application Ser. No. 60/835,618, filed Aug. 4, 2006 and entitled “SYNCHRONIZATION BETWEEN WIRELESS DEVICES WHILE SAVING POWER.” 
     
     TECHNICAL FIELD 
       [0005]    This invention relates to wireless networks and, more particularly, to ad hoc networks of wireless devices that are in proximity to each other. 
       BACKGROUND 
       [0006]    In a typical wireless network, one or more wireless devices are associated with a common wireless access point, which may be connected to a wired network. Communication between wireless devices is through the access point. Such operation is known as the infrastructure operating mode. 
         [0007]    The IEEE 802.11 standard for wireless local area networks (LANs) provides for an ad hoc operating mode in which wireless devices communicate directly with each other without the use of a wireless access point or a wired network. However, in order to operate an ad hoc network of wireless devices, the wireless devices require a mechanism to associate with, or connect to, other wireless network devices in proximity. Such a mechanism should have low power consumption, should create limited radio interference and should have high throughput. 
       SUMMARY 
       [0008]    The present invention provides methods and apparatus to establish an association between wireless devices in an ad hoc network. A first wireless device establishes an association with a second wireless device by sending a connection request packet to a previously-discovered second wireless device. The second wireless device identifies the received packet as a connection request and responds with a connection response packet, thereby establishing an association between the first and second wireless devices. The wireless devices can then, for example, send and receive data. 
         [0009]    The invention also provides methods to terminate an association between wireless devices and methods to disconnect from an ad hoc network. The invention further provides methods to handle a case where two wireless devices send connection requests to each other concurrently. In this case, the connection request of the wireless device having a larger network address is processed, and the connection request of the wireless device having a smaller network address is canceled. It will be understood that the criteria can be reversed so that the connection request of the wireless device with the smaller network address is processed and the connection request of the wireless device with the larger network address is canceled. 
         [0010]    According to a first aspect of the invention, a method is provided to operate a wireless device in an ad hoc network. The method comprises: turning on a radio of a first wireless device in response to a connect call; sending a connection request packet from the first wireless device to a second wireless device; if a connection response packet is received by the first wireless device from the second wireless device within a timeout period, establishing a connection to the second wireless device; and if a connection response packet is not received by the first wireless device from the second wireless device within the timeout period, indicating a connection failure. 
         [0011]    According to a second aspect of the invention, a method is provided to operate a wireless device in an ad hoc network. The method comprises: a first wireless device receiving a connection request packet from a second wireless device; if the connection request packet is identified by the first wireless device as a valid connection request, sending a connection response packet to the second wireless device and recording an established connection; and if the connection request packet is not identified by the first wireless device as a valid connection request, remaining in an existing state. 
         [0012]    According to a third aspect of the invention, a wireless device comprises: a computing device; a radio; and a wireless module logically connected to the computing device and to the radio, the wireless module comprising a processor programmed with instructions for: turning on the radio in response to a connect call; sending a connection request packet to a second wireless device; if a connection response packet is received from the second wireless device within a timeout period, establishing a connection to the second wireless device; and if a connection response packet is not received from the second wireless device within the timeout period, indicating a connection failure. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    In the drawings: 
           [0014]      FIG. 1  is a simplified block diagram of an ad hoc wireless network; 
           [0015]      FIG. 2  is a simplified block diagram of a wireless device suitable for forming an ad hoc wireless network; 
           [0016]      FIG. 3  is a flow chart of operations performed by a first wireless device to establish a connection to a second wireless device; 
           [0017]      FIG. 4  is a flow chart of operations performed by the second wireless device to establish a connection to the first wireless device; 
           [0018]      FIG. 5  is a flow chart of operations performed by a wireless device when concurrent connection requests are sent by two wireless devices; 
           [0019]      FIG. 6  is a flow chart of operations performed by a first wireless device to terminate a connection to a second wireless device; and 
           [0020]      FIG. 7  is a flow chart of operations performed by the second wireless device to terminate the connection to the first wireless device. 
       
    
    
     DETAILED DESCRIPTION 
       [0021]    Embodiments of the invention provide mechanisms for a wireless device to establish an association, or connection, with another wireless device in an ad hoc network. Further embodiments of the invention provide mechanisms to terminate an association between wireless devices and methods for a wireless device to disconnect from an ad hoc network. 
         [0022]    These mechanisms involve software in the wireless devices. The mechanisms can also be implemented in hardware and/or firmware of a wireless device. This allows wireless devices having these mechanisms to communicate and to form ad hoc wireless networks. The communication between wireless devices in the ad hoc network has no effect on other wireless devices that do not support these mechanisms. 
         [0023]    An example of a wireless ad hoc network  10  is shown in  FIG. 1 . Wireless devices  12 ,  14  and  16  communicate with each other by a wireless links. The wireless devices communicate using the mechanisms described below. It is assumed that each wireless device is within radio range of at least one other wireless device in the ad hoc network. It will be understood that all wireless devices in the ad hoc network do not need to be within radio range. For example, wireless devices  14  and  16  may be able to communicate directly with wireless device  12  but may not be able to communicate directly with each other. By way of example only, wireless devices  12 ,  14  and  16  may be laptop computers, mobile phones, mobile data devices, portable media player devices, home stereos, wireless speakers, or combinations of such devices which utilize a compatible protocol as described below. 
         [0024]    A simplified block diagram of a wireless device  200  including components involved in communication in an ad hoc network is shown in  FIG. 2 . Wireless device  200  may correspond to wireless devices  12 ,  14  and  16  shown in  FIG. 1 . An upper layer device CPU  210  interfaces with peripheral components present in the wireless device, such as a display, a keypad or a keyboard, a pointing device, a storage unit such as a disk unit or a flash memory and any other peripheral components of the device. Device CPU  210  includes a device operating system  212  and a wireless driver  214 . The wireless driver  214  communicates with a second layer wireless module CPU  220  containing wireless module software  222 . The wireless module software  222  interfaces with a lower layer wireless RF interface  230  which communicates with a radio that transmits and receives RF signals via an antenna. 
         [0025]    The wireless device  200  may represent a variety of different devices that may be hand-held and mobile or stationary. Examples of wireless devices include, but are not limited to, laptop computers, desktop computers, mobile data devices, mobile phones, stereo systems, and wireless speakers. 
         [0026]    The operations of each wireless device in establishing associations with other wireless devices are described below. Operation is described in connection with the IEEE 802.11 standard. However, the present invention is not limited to the 802.11 standard and can be utilized in connection with other wireless protocols, such as Ultra Wide Band and WiNet. It will be understood that the operations described below are embodiments only and are not limiting as to the scope of the invention. 
         [0027]    Prior to establishing associations as described below, each wireless device discovers other wireless devices in the ad hoc network. Preferred techniques for discovering wireless devices are described in the related applications referenced above. However, other discovery techniques may be utilized. After an association is established, data can be sent and received by the associated wireless devices. 
       Establish an Association with a Wireless Device in Ad Hoc Networks 
       [0028]    A flow chart of operations performed by a first wireless device to establish an association with a second wireless device in an ad hoc network is shown in  FIG. 3 . 
         [0029]    If a wireless device decides to establish an association with another device in an ad hoc network, it becomes an association requestor and does the following:
   1) Set the following settings:
       Channel number or frequency (of the ad hoc network),   Desired SSID (of the target ad hoc network to associate with),   Desired BSSID (of the target ad hoc network to associate with), and   Mac address (of the target device to associate with).   
       2) The wireless service issues a connection call to the wireless module, step  300 .
       Connect (to associate with a device in an ad hoc network with Mac address and the BSSID/SSID as configured above)   
       3) Upon receiving a connect call from the upper layer, the wireless module does the following:
       Switch the channel or frequency to the one the ad hoc network is operating on if the channel/frequency is different, step  302 .   Send out a connection request packet, step  304 , which may contain the following information:
           Receiver address: target device&#39;s MAC address   BSSID: BSSID of the ad hoc network   BSS type: ad hoc   SSID: (optional)   Special IE: (optional)
               Operation type—virtual association request   Other optional configuration and capability information, such as supported data rates   
               The wireless device can use, but is not limited to, a unicast probe request packet or an authentication packet to convey connection request information, provided that the packet format and content are agreed and understood by the wireless devices.   
           
       4) After sending a connection request packet, the wireless module waits for a connection response packet, step  306 .
       The wireless device needs to identify that a connection response packet is used to establish an association in the ad hoc network. It can do so in different ways, provided the way is mutually agreed by the devices involved in the association process. Here are some examples:
           a. Match a direct probe response packet with a special IE (information element) that specifies the intention of the connection response. The packet can have the following information:
               Packet type: direct (unicast) probe response packet   Receiver address: matches association request&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   Special IE:
                   Operation type—virtual association request   Virtual association status—IEEE 802.11 status code   Other optional configuration and capability information, such as supported data rates   
                   
               b. Match a connection response packet with a packet pattern that is agreed and understood by the wireless devices. Receiving this packet means an acceptance of the association request from the association responder. For example, a matched packet pattern may be:
               Packet type: direct (unicast) authentication packet   Receiver address: matches association request&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   SSID: matches SSID of the ad hoc network   Special IE: (optional)
                   Configuration and capability information, such as supported data rates   
                   
               
           
       5) The wireless module waits for such connection response packet, step  308 , until a timeout value expires, step  312 . This timeout value can have a default value and is configurable. If the connection response packet is received and the connection is successful, step  310 , then the wireless module updates its internal state to be associated to the target wireless device.
       If this is the first device that it associates with, then the wireless module indicates a media connected event to the network stack.   The wireless module can optionally indicate that a new association has been established with the peer device by sending a notification such as a port up event to the network stack.   
       6) If a connection response packet is not received, step  308 , and the timeout expires, step  312 , the connection is not successful, step  314 , and the wireless module remains in its original state.   
 
         [0071]    A flow chart of operations performed by the second wireless device in responding to the connection request by the first wireless device is shown in  FIG. 4 . 
         [0072]    If a wireless device in an ad hoc network receives a unicast connection request packet from another wireless device (the association requestor), step  400 , it becomes an association responder and does the following:
   1) Identify that a connection request packet is received to establish an association in the ad hoc network. The wireless device can do so in various ways, provided the way is mutually agreed by the devices involved in the association process. Here are two examples:
       a. Match a direct probe request packet with a special IE that specifies the intention of the connection request. The format of the special IE is understood by the wireless devices and can have the following information:
           Packet type: direct (unicast) probe request packet   Receiver address: matches association request&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   Special IE:
               Operation type—virtual association request   Other optional configuration and capability information, such as supported data rates   
               
           b. Match a connection request packet with a packet pattern that is agreed and understood by the wireless devices. Receiving this packet means an association request from association requestor. For example, a matched packet pattern could be:
           Packet type: direct (unicast) authentication request   Receiver address: matches association responder&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   SSID: matches SSID of the ad hoc network   Special IE: (optional)
               Configuration and capability information, such as supported data rates   
               
           
       2) The wireless module decides whether to accept the association, step  402 , and sends out a connection response packet, step  406 , which may contain the following information:
       Receiver address: association initiator&#39;s MAC address   BSSID: BSSID of the ad hoc network   BSS type: ad hoc   SSID: (optional)   Special IE: (optional)
           Operation type—virtual association response   Virtual association status—IEEE 802.11 status code   Other optional configuration and capability information, such as supported data rates   
           The wireless device can use, but is not limited to, a unicast probe response packet or an authentication packet to convey connection response information, provided that the packet format and content are agreed and understood by the wireless devices.   
       3) If the association is accepted, the association responder does the following:
       If the association requestor is the first one associated with the wireless device, then the wireless module indicates a media connected event to the network stack, step  408 .   The wireless module can optionally indicate that a new joiner has established an association by sending a notification such as a port up event to the network stack.   
       4) Otherwise, the association is not accepted, step  402 , and the association responder stays in its original state, step  404 .   
 
         [0104]    When both wireless device are in the same ad hoc network and indicate media connected and/or port up to the network stack, a wireless connection is established. The wireless devices can transmit and receive data packets to and from the peer devices. 
       Handle Simultaneous Association Requests Between Two Wireless Devices in Ad Hoc Networks 
       [0105]    A flow chart of operations performed by a first wireless device when two wireless devices send connection requests to each other concurrently is shown in  FIG. 5 . 
         [0106]    It is possible that two wireless devices A and B send out connection requests to each other concurrently, and wait for a connection response from the other. In this case, the two wireless devices may avoid establishing two associations with each other. After a device (A) sends out a connection request to another device (B), step  500 , and device A receives a connection request from device B before it receives a connection response from the same device B within the timeout, step  502 , device A does the following:
       1) If the value of device B&#39;s MAC address is less than device A&#39;s MAC address, step  504 , then device A ignores B&#39;s connection request, step  506 .   2) If the value of device B&#39;s MAC address is larger than device A&#39;s MAC address, step  504 , then device A replies to device B&#39;s connection request by sending a connection response, step  508 . Meanwhile, device A also cancels its own state and operation for the connection request that device A sent to device B.       
 
       It will be understood that the criteria can be reversed so that the connection request of the wireless device with the smaller network address is processed and the connection request of the wireless device with the larger network address is canceled. 
     Monitor Associations 
       [0109]    The wireless device may maintain a list of associated wireless devices internally and may monitor packets from the associated peer devices. If the wireless device does not receive any in-IBSS packets from an associated wireless device in the ad hoc network for certain amount of time, it may disassociate from this device. 
         [0110]    A packet is deemed as in-IBSS if and only if it has a BSSID that matches the one used by the ad hoc network. 
       Terminate an Association with a Wireless Device in Ad Hoc Networks 
       [0111]    A flow chart of operations performed by a wireless device to terminate an association with another wireless device is shown in  FIG. 6 . 
         [0112]    If a wireless device decides to terminate an association with another device in an ad hoc network, it does the following:
       1) Set the following settings:
           Desired SSID (of the target ad hoc network to disassociate with),   Desired BSSID (of the target ad hoc network to disassociate with), and   Mac address (of the target device to disassociate with).   
           2) Issues a disconnection call to wireless module, step  600 .
           Disconnect (to disassociate with a device in an ad hoc network with Mac address and the BSSID/SSID as configured above)   
           3) Upon receiving a disconnect call, or the wireless module decides to disassociate from another wireless device due to its aging function as described above, the wireless module does the following:
           Search the internal associated wireless device list for the device.   If such an associated device cannot be found, then return an appropriate error.   Otherwise, send out a disconnection request packet, step  602 , which may contain the following information:
               Receiver address: target device&#39;s MAC address   BSSID: BSSID of the ad hoc network   BSS type: ad hoc   SSID: (optional)   Special IE: (optional)
                   Operation type—virtual association request   Other optional configuration and capability information, such as supported data rates   
                   
               The wireless device can use, but is not limited to, a unicast probe request packet or a de-authentication packet to convey the disconnection request information, provided that the packet format and content are agreed and understood by the wireless devices.   
           4) After sending a disconnection request packet, the wireless module can immediately remove the device from its associated device list, step  604 . The wireless device stops sending any data packets to the disassociated wireless device and drops received data packets from that device.
           If the disassociated device is the last one in the associated device list, then the wireless device indicates a media disconnected event to the network stack and deems itself leaving the ad hoc network.   The wireless device can optionally indicate that an association with the peer device has been removed by sending a notification such as a port down event to the network stack.   
               
 
         [0134]    A flow chart of operations performed by a wireless device in response to receiving a disconnection request is shown in  FIG. 7 . 
         [0135]    If a wireless device in an ad hoc network receives a unicast disconnection request packet from another wireless device, step  700 , it does the following:
       1) The wireless device needs to identify a disconnection request packet that is used for terminating an association in ad hoc network, step  702 . It can do so in various ways, provided the way is mutually agreed and understood by the devices involved in the association process. Here are two examples:
           a. Match a special IE in a direct probe request packet to specify the intention of the disconnection request. The format of the special IE is understood by the wireless devices and can have the following information:
               Packet type: direct (unicast) probe request packet   Receiver address: matches association request&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   Special IE:
                   Operation type—virtual disassociation request   
                   
               b. Match a connection request packet with a packet pattern that is agreed and understood by the wireless devices. Receiving this packet means a disassociation request. For example, a matched packet pattern may be:
               Packet type: direct (unicast) de-authentication request   Receiver address: matches association responder&#39;s MAC address   BSSID: matches BSSID of the ad hoc network   BSS type: ad hoc   SSID: matches SSID of the ad hoc network   
               
           2) After receiving a disconnection request packet, the wireless device does the following:
           Search the internal associated wireless device list for the device.   If such an associated device cannot be found, then ignore the disconnect request packet, step  704 .   Otherwise, the wireless device can immediately remove the device from its associated device list, step  706 . The wireless device stops sending any data packets to the disassociated wireless device and drops received data packets from that device.   If the disassociated device is the last one in the associated device list, then the wireless device indicates a media disconnected event to the network stack and deems itself leaving the ad hoc network.   The wireless device can optionally indicate that an association has been removed with the peer device by sending a notification such as a port down event to the network stack.   
               
 
       Disconnect from an Ad Hoc Network 
       [0156]    If a wireless device decides to leave an ad hoc network, it does the following:
       1) Issue a disconnect call to wireless module   2) After receiving a disconnect call from upper layer, the wireless module does the following to leave the ad hoc network:
           Indicate a media disconnect event to the network stack.   Stop sending any data packets to devices in the ad hoc network and drop received data packets from devices in the ad hoc network.   Clean up the internal list of associated wireless devices.   Clean up other internal states.   
               
 
       Special Information Element 
       [0163]    The information element (IE) is a type-length-value object that used to carry variable length information.) The wireless device can optionally rely on the special information element to carry information for managing associations. 
         [0164]    The special IE can either use a unique IE ID, or a customer IE ID (e.g., value  221  defined by IEEE 802.11 standard) with a unique OUI and OUI type combination to identify itself. 
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
               
               
                 IE ID 
                 Length 
                 OUI 
                 OUI Type 
                 Other information 
               
               
                 (1 byte) 
                 (1 byte) 
                 (3 byte) 
                 (1 byte) 
                 (0–249 bytes) 
               
               
                   
               
             
             
               
                 221 
                 8..253 
                 (e.g. 00-50-F2 
                 (unique value 
                 Other information 
               
               
                   
                   
                 for Microsoft) 
                 with the same 
                 for association 
               
               
                   
                   
                   
                 OUI) 
               
               
                   
               
             
          
         
       
     
         [0165]    The special information element can contain the following information for managing the association: 
         [0166]    Operation type
       Virtual association request   Virtual association response   Virtual disassociation request       
 
         [0170]    Other information (optional)
       Data rates   Capability information       
 
         [0173]    The above description provides examples of values for various parameters, such as packet parameters. It will be understood that such values are given by way of example only and are not in any way limiting as to the scope of the invention. 
         [0174]    Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.