WO2014185955A1 - Systems and methods for discovering and utilizing wireless communication protocols for accessing services by wi-fi devices - Google Patents

Systems and methods for discovering and utilizing wireless communication protocols for accessing services by wi-fi devices Download PDF

Info

Publication number
WO2014185955A1
WO2014185955A1 PCT/US2013/077516 US2013077516W WO2014185955A1 WO 2014185955 A1 WO2014185955 A1 WO 2014185955A1 US 2013077516 W US2013077516 W US 2013077516W WO 2014185955 A1 WO2014185955 A1 WO 2014185955A1
Authority
WO
WIPO (PCT)
Prior art keywords
service
protocol
information
user device
wireless communication
Prior art date
Application number
PCT/US2013/077516
Other languages
French (fr)
Inventor
Bahareh Sadeghi
Carlos Cordeiro
Emily H. Qi
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of WO2014185955A1 publication Critical patent/WO2014185955A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Definitions

  • USB Universal Serial Bus
  • wireless USB communication may offer numerous benefits over traditional wired USB communication. Such efforts, however, have not addressed discovery or identification of devices that may be configured for wireless USB communication, nor the type of communication mediums over which wireless USB communication may occur, among other things.
  • Docking management systems that include a wireless dock, for example, may enable access to peripheral devices providing various services, such as display, print, file transfer, audio, etc. Devices that connect to such systems, however, may be unable to recognize and leverage such services, which may also impact the ability of docking management systems to manage their service offerings.
  • FIG. 1 illustrates a schematic diagram of an environment in which various types of devices may discover and utilize wireless communication protocols for accessing services, according to an embodiment of the disclosure.
  • FIG. 2 illustrates a block diagram of an example data frame used to exchange information associated with wireless communication protocols, according to an embodiment of the disclosure.
  • FIG. 3 illustrates a block diagram of an example computing environment for discovering and utilizing wireless communication protocols for accessing services, according to an embodiment of the disclosure.
  • FIG. 4 illustrates a flow diagram of an example process for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with host devices, according to an embodiment of the disclosure.
  • FIG. 5 illustrates a flow diagram of an example process for discovering and utilizing wireless communication protocols by a user device communicating with a docking system, according to an embodiment of the disclosure.
  • a wireless device may discover services provided by other devices, such as a docking system, a host device, a peripheral device, etc., to determine whether such devices support a protocol or service desired by a user and/or compatible with the user device. For example, a user may desire to print, display, store, or output audibly the contents of a file using a wireless USB protocol service, such as the Media Agnostic USB (MA USB) protocol service. To discover devices that support such a service, the device may generate and send a discovery request using the Wi-Fi Direct Services (WFDS) Application Service Platform (ASP) coordination protocol.
  • WFDS Wi-Fi Direct Services
  • ASP Application Service Platform
  • the ASP coordination protocol may be modified to include certain information associated with the wireless USB protocol and/or other services desired by the user.
  • the ASP coordination protocol may also be modified to include an application programming interface (API) that may invoke the wireless USB protocol service, for example, upon detecting that a host device provides a requested service.
  • API application programming interface
  • the API may pass information to the wireless USB protocol service to facilitate performance of a requested service via the wireless USB protocol.
  • aspects and functions of the Media Agnostic USB protocol may be extended for use by wireless devices over a wireless fidelity (Wi-Fi) network, or other wireless networks, by virtue of utilizing a version of the ASP coordination protocol as described herein.
  • Wi-Fi wireless fidelity
  • Certain embodiments herein also relate to managing access to services provided by host or peripheral devices via a docking system.
  • the docking system may determine which of the services are available based on policies that may restrict access to all or at least a portion of the services according to certain conditions.
  • a user who desires to utilize a device to access a bundle of services by docking the user device at the docking station may therefore obtain access to the entire bundle of services, at least a portion of the services, or none of the services based on availability and policy implementations, in some embodiments.
  • the ASP coordination protocol may indicate a Wi-Fi docking protocol service, which may define the particular services available via the docking system and information corresponding to such services, among other information.
  • Wi-Fi docking protocol service may define the particular services available via the docking system and information corresponding to such services, among other information.
  • FIG. 1 depicts a schematic diagram of an example environment 100 in which various types of devices may discover and utilize wireless communication protocols for accessing services, according to an embodiment of the disclosure.
  • An example wireless communication protocol may include a wireless USB communication protocol, which may enable devices to distribute video, data, audio, multimedia, or other information, using the USB protocol over a wireless network.
  • Example wireless USB protocols may include, but are not limited to, Wi-Fi Serial Bus (WSB) or Media Agnostic USB protocol.
  • a user device 140 may communicate with various host devices 170 over one or more networks 102.
  • the user device 140 may send a discovery request to the host devices 170 to determine which of the host devices 170 support a wireless USB protocol.
  • the user device 140 may establish a connection to the host device 170 to access a service provided by the host device 170, such as a Media Agnostic USB enabled USB peripheral service.
  • Other services such as printing, displaying, playing audio, transferring content, etc., may also be provided by the host devices 170.
  • An example host device 170 may be a USB peripheral device supporting the wireless USB protocol, such as a printer, a display, a speaker, a server, or other device that may be configured with hardware and software to perform a particular service or operation.
  • the user device 140 may discover services offered by a docking system 110. In so doing, the user device 140 may send a discovery request to the docking system 110 and may receive a response to the request from the docking system 110. In one embodiment, the user device 140 may request a docking service, and the docking system 110 may in turn provide multiple services offered by the docking system 110. Certain embodiments herein relate to identifying and resolving a discrepancy between a docking service as requested by the user device 140 and a docking service as offered by the docking system 110. [0018] In some embodiments, the docking system 110 may generate and send a discovery request to determine user devices 140 that are attempting to dock at the docking system 110.
  • the discovery request may include services that are currently available at the docking system 110 based on one or more policies, as will be described in greater detail below. If a request from the user device 140 meets policy requirements, then the docking system 110 may establish a connection to the user device 140 such that the user device 140 may utilize the one or more available services.
  • the available services may be provided by various host devices 170 (e.g., peripheral devices), such as printers, displays, audio devices, etc., to which the docking system 110 may be connected via the network 104, which may be wired or wireless.
  • a user device 140 may send a discovery request to discover one or more docking systems 110 at which it may dock to access one or more services, as will be described in greater detail below.
  • the docking system 110 may manage communications to each of the host or peripheral devices 170 to which it has a connection.
  • the docking system 110 may implement the Media Agnostic USB protocol for communication with storage devices, the Wi-Fi Display protocol or the WiGig Display Extension protocol for communication with display devices, or various other protocols for communication with other types of devices.
  • the docking system may also manage such communication over various types of mediums, such as Transmission Control Protocol / Internet Protocol (TCP/IP), Media Access Control (MAC), over-the-air, etc.
  • TCP/IP Transmission Control Protocol / Internet Protocol
  • MAC Media Access Control
  • the docking system 110 may communicate with one peripheral device 170 using a TCP/IP address and may communicate with another peripheral device 170 using a MAC address.
  • any of the devices in FIG. 1 may discover other devices.
  • the devices may generate a request, such as a probe request that includes a data frame as described below, and send the request to other devices.
  • the requesting device may thereafter receive a response from other devices that received the request.
  • the response may also include a data frame as described below, which may indicate which services may be provided by the responding device, among other information.
  • Such an exchange of information may be referred to herein as discovering services offered by a device.
  • discovery may be performed via a discovery request protocol, such as the Wi-Fi Direct Services (WFDS) Application Service Platform (ASP) coordination protocol developed by the Wi-Fi Alliance.
  • WFDS Wi-Fi Direct Services
  • ASP Application Service Platform
  • the ASP coordination protocol may be modified to facilitate the processes described herein, in certain embodiments.
  • the discovery request may be sent as a data frame that includes various information.
  • the discovery request may be sent as a probe request that may be broadcasted to wireless devices on the networks 102 or 104, as well as a probe response that may be distributed to a requesting device.
  • FIG. 2 depicts a block diagram of an example data frame 200 used for discovery requests to discover services provided by devices.
  • Such a data frame 200 may include, but is not limited to, one or more service names 210, a type of device 220, a device description 230, one or more connection capabilities 240, a maximum data payload size 250, a service status 260, a service description 270, and an icon 280 identifying the service.
  • the service name 210 may uniquely identify a service provided by a device.
  • One or more services may be indicated in the service name 210 field.
  • Example services may include, but are not limited to, a print service 212, an audio service 214, a display service 216, and various wireless communication protocols (e.g., a wireless USB protocol 218 and a wireless docking protocol 219).
  • Multiple services may be indicated in the service name 210 field.
  • a print service and the Media Agnostic USB protocol service may be identified in the serve name 210 field.
  • An indication of the print service may mean that a device provides a printing service.
  • An indication of the Media Agnostic USB protocol service may means that the device is configured to use the Media Agnostic USB protocol service, and so forth, such that any number of services may be indicated in the data frame 200 for identification by another device that receives the data frame 200.
  • the other types of fields in the data frame 200 may relate to each individual service name 210 identified in the data frame 200, in one embodiment.
  • a first device may discover that a second device is configured to utilize the wireless USB protocol 218 and may subsequently establish a connection to utilize the protocol for communication with the second device.
  • the type of device 220 may identify the type of device with which the information in the data packet is associated.
  • Example types of devices may include a dock 222 (e.g., the docking system 1 10 in FIG. 1), a host or peripheral 224 (e.g., the host device 170 in FIG. 1), a device 226 (e.g., a user device 140 in FIG. 1), etc.
  • the device description 230 may include various information associated with the type of device 220. Such information may include a description of the device (e.g., a printer, a speaker, a USB storage drive, etc.).
  • the information may also include service information 232, such as Media Agnostic USB service information. Such information may enable devices to determine whether they are compatible with one another, among other things.
  • Example information that may include an identification of device drivers supported by the device, a USB device class associated with a device, etc.
  • connection capability 240 may identify a communication mode for transmitting information over a wireless network, such as a Wi-Fi network.
  • Example types of connection modes may include, but are not limited to, TCP/IP 242, or MAC 244.
  • the maximum data payload size 250 may identify a maximum allowable size (e.g., a number of bytes) for a payload.
  • the Media Agnostic USB protocol Programmable Array Logic (PAL) may pass such information to the physical layer to facilitate generation of suitable packets for transmission of the packets according to the protocol and communication mode used in the transmission.
  • the service status 260 may indicate whether a service 210 is available or unavailable 262, as examples.
  • a type of device that is a dock 222 may determine that only a portion of its services is available based on a policy.
  • the dock 222 may send one or more data frames indicating a status for each of its services, whether available or unavailable.
  • only services that are available may be communicated to other devices, such as devices 226 attempting to dock at the dock 222.
  • the service description 270 may identify a category of the services identified in the service name 210 field.
  • One such category may include "bundled,” or similar, to indicate that all of the services offered by the dock 222 may be utilized by the device 226.
  • the "bundled" category may be consistent with using docking as a service, for which all services become available to devices 226 that dock at the dock 222.
  • Another category may include "individual,” or similar, to indicate that a single service is offered in the data frame 200.
  • a device 226 may desire to connect to only a portion of the services offered by the dock 222.
  • the icon 280 may be used to identify a service with which it is associated. In one embodiment, the icon 280 may be a graphical representation of the service.
  • the icon 280 may be displayed at a user device (e.g., the user device 140 in FIG. 1) in association with other information associated with the service to facilitate identification of the service by a user, among other things.
  • the icon 280 may be a graphical illustration of a printer that provides a print service via the Media Agnostic USB protocol service. Numerous other icons 280 may exist in other examples.
  • the data frame 200 in FIG. 2 is for purposes of illustration and is not meant to be limiting. Other data frames may include different fields, information, etc., in other embodiments.
  • examples of communication between devices using the data frame configuration in FIG. 2 may be as follows.
  • the user device 140 may generate and send a data frame that includes a service name 210 of the Media Agnostic USB protocol, a type of device 220 of a device, a device description 230, a connection capability 240 of TCP/IP and MAC, a maximum data payload size 250 of 1028 bytes, a service status 260 of "available,” and a service description 270 of "individual” to a peripheral device 170, which may be a printer.
  • the peripheral device 170 may receive the discovery request and send a response including a data frame that indicates that the printer 170 is configured to communicate via the Media Agnostic USB protocol, a type of device 220 of device, a device description 230, a connection capability 240 of TCP/IP and MAC, a maximum data payload size 250 of 1028 bytes, a service status 260 of "available,” and a service description 270 of "individual" to the user device 140.
  • the user device 140 may determine that the printer 170 may receive requests to print content via the Media Agnostic USB protocol based on the service name 210 field in the response data frame. The user device 140 may subsequently send content for printing by the printer 170 via the Media Agnostic USB protocol.
  • the Media Agnostic USB protocol may be extended for use between devices by virtue of using a discovery protocol, such as the ASP coordination protocol, for sending data frames as described in the examples above.
  • the docking system 1 10 may discover that one or more user devices 140 are attempting to dock at the docking system 1 10. In so doing, the docking system 110 may send a data frame (e.g., the data frame 200 in FIG.
  • a service designated as a "docking service,” or similar may indicate that all or at least a portion of the services associated with the wireless docking system 1 10 may be available for use.
  • a first user device 140 may receive the data frame from the docking system 1 10 and may subsequently connect to the wireless docking system 110 to use one or more bundled services. In so doing, the first user device 140 may determine that the services 212, 214, 216, 218, and 219 are suitable or desired services. The user device 140 may thereafter send contents of a file for printing to the docking system 110, which may in turn send the contents to the peripheral device 170 for performance of the request.
  • a second user device 140 may also receive a data frame from the docking system 110. In one embodiment, such a data frame may indicate a different service offering based on a policy implemented at the docking system 110.
  • a policy may restrict access to bundled services (or use of docking as a service) to a certain number of user devices on a first come, first served basis, or according to any number of criteria, as will be described in greater detail below.
  • the service offering received by the second user device 140 may therefore include an individual service or a portion of the services offered by the docking system 110, in one embodiment.
  • FIG. 3 depicts a block diagram of an example computing environment 300 for discovering and utilizing wireless communication protocols for accessing services, according to an embodiment of the disclosure.
  • the computing environment 300 may include, but is not limited to, a docking system 310, user devices 340, and host or peripheral devices 370. Such devices may embody their counterpart devices in FIG. 1, which may communicate with one another over the networks 302 and 304 as described above.
  • the term “device” may refer to any computing component that includes one or more processors that can be configured to execute computer-readable, computer-implemented, or computer-executable instructions.
  • Example devices may include personal computers, docking systems, server computers, server farms, digital assistants, smart phones, personal digital assistants, digital tablets, smart cards, Internet appliances, application-specific circuits, microcontrollers, minicomputers, transceivers, kiosks, other host devices and client devices, or generally other processor-based devices.
  • the execution of suitable computer-implemented instructions by one or more processors associated with various devices may form special purpose computers or other particular machines that may implement or facilitate the processes described herein.
  • the one or more networks 302 and 304 may facilitate communication between the devices shown in FIG. 3. Such networks may include any number of wireless or wired networks that may enable various computing devices in the example system 300 to communicate with one another. In some embodiments, other networks, intranets, or combinations of different types of networks may be used including, but not limited to, Wi- Fi networks, Wi-Fi Direct networks, NFC networks, Bluetooth® networks, the Internet, intranets, cable networks, cellular networks, landline-based networks, radio networks, satellite networks, other short-range, mid-range, or long-range wireless networks, or other communication mediums connecting multiple computing devices to one another.
  • the one or more networks 305 may embody the one or more networks 102 and 104 in FIG. 1, in some embodiments.
  • an example service may refer to a set of related software functionalities that may be reused for various purposes, together with policies that control its usage.
  • an example service may include a wireless USB protocol, such as the Wi-Fi Serial Bus (WSB), which may enable devices to exchange information using the USB protocol over Wi-Fi links; and the Media Agnostic USB protocol, which may extend USB protocol communication over various types of mediums, such as TCP/IP, MAC, etc.
  • the term "wireless USB protocol” may also be referred to herein as a USB protocol for wireless communication.
  • Another example service may include a wireless docking service, such as the Wi-Fi docking protocol, which may enable a docking system to manage connections and communications with peripheral devices connected to the docking system.
  • Yet another example service may include the ASP coordination protocol, the modification of which may be used to discover services, such as the wireless USB protocol (e.g., Media Agnostic USB protocol) and the wireless docking protocol, as examples.
  • a peripheral device may refer to a device that is separate from the host device and functions to expand the capabilities of the host.
  • Different types of peripheral devices may include input devices, which may be used to send data to the host device; output devices, which may send data from the host device to the peripheral device; and storage devices, which may store data processed by the host device.
  • a data frame may refer to a data unit that encapsulates one or more packets, which may include payloads or data, for transmission across one or more networks.
  • the devices 310, 340, and 370 may include one or more processors configured to communicate with one or more memory devices and various other components or devices.
  • the docking system 310 may include one or more processors 312, one or more input/output (I/O) devices 314, storage 316, one or more communication connections 318, and one or more data stores 322.
  • the one or more processors 312 may be implemented as appropriate in hardware, software, firmware, or a combination thereof.
  • the one or more processors 342 associated with the user device 340 may be the same or at least similar to the processor 312, in one embodiment.
  • the memory 324 associated with the docking system 310 may store program instructions that are loadable and executable on the processor 312, as well as data generated during the execution of these programs.
  • the memory 324 may be volatile, such as random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM); or non-volatile, such as read-only memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc.
  • RAM random access memory
  • SRAM static random access memory
  • DRAM dynamic random access memory
  • non-volatile such as read-only memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc.
  • the memory 354 and 372 associated with the user device 340 and the host device 370, respectively, may be the same or at least similar to the memory 324, in one embodiment.
  • the storage 316 associated with the docking system 310 may include removable and/or non-removable storage including, but not limited to, magnetic storage, optical disks, and/or tape storage.
  • the disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing system.
  • the storage 346 associated with user device 340 may be the same or at least similar to the storage 316, in one embodiment.
  • the memory 324, 354, and 372, and the storage 316 and 346, both removable and non-removable, are all examples of computer-readable storage media.
  • computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
  • the I/O devices 314 associated with the docking system 310 may enable a user to interact with the host devices 370, which may be a wireless docking system, a printer, a server, an audio device, or various other devices or peripherals.
  • the I/O devices 314 may include, but are not limited to, a keyboard, a mouse, a pen, a voice input device, a touch input device, a gesture detection or capture device, a display, a camera or an imaging device, speakers, and/or a printer.
  • the I/O devices 344 associated with the user device 340 may be the same or at least similar to the I/O devices 314, in one embodiment.
  • the one or more communication connections 318 associated with the docking system 310 may allow the docking system 310 to communicate with other devices, such as the user devices 340 over the one or more wireless networks 302.
  • the communication connections 218 may include one or more antennas 320 and one or more radios 319, which may include hardware and software for sending and/or receiving wireless signals over the various types of networks 302 and 304 described above.
  • the communication connections 348 associated with the user device 340 may be the same or similar to the communication connections 318, in one embodiment.
  • the communication connections 348 may include one or more radios 349 and antennas 350 that may enable the user device 340 to receive and/or send wireless signals to the docking system 310 or other devices.
  • the data store 322 may store lists, arrays, databases, flat files, etc. In some implementations, the data store 322 may be stored in a memory external to the docking system 310 but may be accessible via one or more networks, such as with a cloud storage service. The data store 322 may store information that may facilitate the processes described herein, among other functions associated with the docking system 310.
  • the data store 352 associated with the user device 340 may be the same or at least similar to the data store 322, in one embodiment.
  • At least a portion of the host devices 370 may include all or at least a portion of the processors 312, I/O devices 314, storage 316, communication connections 318, and data store 322 associated with the docking system 310, in one embodiment.
  • the memory 324 may include a docking operating system (O/S) 326 and various program modules such as, but not limited to, a docking services manager 328 and a policy management module 334.
  • O/S docking operating system
  • modules may be implemented as individual modules that provide specific functionality associated with discovery and utilizing wireless communication protocols for accessing services, as described herein. Alternatively, one or more of these modules may perform all or at least some of the functionality associated with the other modules.
  • the docking O/S 326 may refer to a collection of program code and data stored in persistent memory (e.g., ROM, flash memory, etc.) as firmware for controlling the operation of the docking system 310, in one embodiment. Such operation may include providing respective interfaces for enabling communication between the user devices 340 and the host devices 370, among other functions.
  • persistent memory e.g., ROM, flash memory, etc.
  • the docking services manager 328 may configure the docking system 310 to manage access to the host devices or peripherals 370, which may each provide a service for the user device 340.
  • the docking services manager 328 may manage a separate protocol for each of the host devices 370.
  • Such protocols may include program code that implements a system of digital rules governing exchange of information between the devices in FIG. 3. Examples of such protocols are described above.
  • the docking services manager 326 may also manage communications with the user devices 340.
  • the docking services manager 326 may include a docking discovery module 330 and a docking protocol service 332 to implement such management.
  • the docking discovery module 330 may discover devices on the wireless networks 302 and 304 and establish a connection with such devices to enable access to services offered by the docking system 310.
  • the docking discovery module 330 may extend the Wi-Fi docking protocol, which may define various services offered by the docking system 310, such that the user devices 340 may determine and utilize such services.
  • the docking discovery module 330 may include a version of the ASP coordination protocol that is modified as described herein.
  • the docking discovery module 330 may also determine services offered by the wireless docking system 310. Such a determination may be performed by identifying host devices 370 to which the docking system 310 has established a connection, in one embodiment. In certain embodiments herein, the services offered by the docking system 310 may be filtered according to one or more policies, which are described in greater detail below. For example, the docking discovery module 330 may determine that although it has allowed access to print, display, and audio services (e.g., the docking service) to a certain number of user devices 340, a current policy that limits the number of user devices 340 that may access the docking service may restrict access for subsequent user devices to display and audio services only. Put another way, all or at least a portion of the services offered by the docking system 310 may be available based on the access policy currently being implemented.
  • the docking discovery module 330 may determine that although it has allowed access to print, display, and audio services (e.g., the docking service) to a certain number of user devices 340,
  • the docking discovery module 330 may also generate a data frame (e.g., the data frame 200 in FIG. 2) for use in discovering services offered by various devices.
  • the data frame may be communicated as a probe request and/or a probe response to enable devices to exchange information regarding services provided by the devices, among other information.
  • a modified version of the ASP coordination protocol may be used to distribute such a data frame, in one embodiment.
  • the probe request may be sent continuously, periodically, or according to any time interval in various embodiments.
  • the docking discovery module 330 may also analyze information in a probe response or other communication to determine services provided by the responding device.
  • the docking discovery module 330 may also determine whether services received in a probe response, or other response to a request for service information, are desired. In one example, the docking discovery module 330 may compare the services indicated in a discovery response with the services offered by the docking system 310. If the services match, then the docking discovery module 330 may establish a connection between the user device 340 and the corresponding host device 370 that may provide the desired service. If the services do not match, then the docking discovery module 330 may modify the service offerings according to those desired by the user device 340, and establish a connection for such services, in one embodiment.
  • the docking discovery module 330 may call (e.g., via an API) the docking protocol service 332, which may perform the requested service.
  • the docking protocol service 332 may perform the requested service.
  • Other techniques for establishing a connection may exist in other embodiments.
  • the docking protocol service 332 may include the Wi-Fi docking protocol, which may enable the wireless docking system 310 to manage services between the user devices 340 and the host devices 370.
  • the docking discovery module 330 may receive a discovery response that includes contents of a file for printing, and may subsequently invoke the docking protocol service 332, which may send the contents of the file to a printer device 370 for printing via the Media Agnostic USB protocol.
  • the Media Agnostic USB protocol, or other protocols may be used by the docking protocol service 332 to enable performance of a service may exist in other embodiments.
  • the policy management module 334 may implement one or more policies for controlling access to services offered by the docking system 310. Such access may be restricted according to first come, first served basis for user devices 340 accessing the docking system 310. For example, all services associated with the docking system 310 may be available for a predetermined number of user devices 340. Once the predetermined number of user devices 340 has been reached, successive user devices 340 may receive none or only a portion of the services associated with the docking system 310. Another example policy may control the number of user devices 340 that are allowed to access individual services. Various other policies may be implemented in other examples.
  • the policy management module 334 may store and track the status of each service associated with the docking system 310 continuously, periodically, upon detecting a change in the status of a service, etc. In one embodiment, such information may be stored in a database (e.g., the data store 322), where it may be accessed by the docking discovery module 330 and included in the generated data frame.
  • a database e.g., the data store 322
  • the host devices 370 may also be configured to facilitate the processes described herein.
  • the memory 372 of the host devices 370 may include a host firmware operating system (O/S) 374 and a host service manager 376, which may include a host discovery module 378, and a host protocol service 380.
  • O/S host firmware operating system
  • a host service manager 376 which may include a host discovery module 378, and a host protocol service 380.
  • the host firmware O/S 374 may refer to a collection of program code and data stored in persistent memory (e.g., ROM, flash memory, etc.) for controlling the operation of the host device 370.
  • a host firmware O/S 374 associated with a printer device may control the receipt and printing of content, among other functions.
  • a host firmware O/S 374 associated with a display device may display received content to a screen where it may be viewed by a user.
  • Such functionality may also be provided by one or more software applications, which may be loaded in RAM or other volatile memory.
  • the host service manager 376 may control the functionality of the host discovery module 378 and the host protocol service 380. For example, the host service manager 376 may invoke the host discovery module 378, which may receive discovery requests from the user devices 340. The host service manager 376 may also invoke the host protocol service 380, for example, in response to receiving a request from the user device 340 to perform a service. In other embodiments, the host discovery module 378 may include one or more APIs that may invoke the host protocol service 380 to perform the requested service.
  • the host protocol service 380 may perform the service associated with the host device 370.
  • the host protocol service 380 may be the Media Agnostic USB protocol.
  • the host protocol service 380 may receive data associated with a file for printing, display, audio, etc., and process the data in performance of the service.
  • the user device 340 may perform the same or similar functions as the host devices 370 to facilitate the processes described herein.
  • the device service manager 360 may control the functionality of the device discovery module 362 and the device protocol service 364.
  • the device service manager 360 may invoke the device discovery module 362, which may send requests to the host devices 370 and/or the docking system 310 to discover services provided by such devices.
  • the device discovery module 362 may determine that the host device 370 performs the requested service, and may subsequently establish a connection with the host device 370 for performance of the service, in one example.
  • the device discovery module 362 may invoke the device protocol service 364 (e.g., the Media Agnostic USB protocol service) to communicate with the host device 370 for performing a requested service.
  • the device service manager 360 may invoke the device discovery module 362 to enable such communication.
  • the user device 340 may also include a device operating system (O/S) 356 and one or more user applications 358.
  • the O/S 356 may refer to a collection of software that manages computer hardware resources and provides common services for computer programs to enable and facilitate operation of such programs.
  • Example operating systems may include UNIX, Microsoft Windows, Apple OS X, etc.
  • the one or more user applications 358 may perform any number of functions, including enabling a user to view and/or interact with content (e.g., text, data, video, multimedia, or other information).
  • Example user applications 358 may enable the user to utilize various services, such as printing content or sharing the content with a display device, and may include one or more device drivers to facilitate such functions.
  • FIG. 3 The above descriptions associated with FIG. 3 are for purposes of illustration and are not meant to be limiting. Other descriptions may involve different embodiments or configurations of the devices in FIG. 3. For example, at least a portion of the functionality performed by the devices 310, 340, and 370 may be performed by other devices. The devices 310, 340, and 370 may also perform additional or alternative functions to implement or facilitate the processes described herein.
  • FIG. 4 depicts a flow diagram of an example process 400 for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with host devices, according to an embodiment of the disclosure.
  • the example process 400 may be performed at least in part by the user device 340 in FIG. 3 and the host devices 370 in FIG. 3.
  • processes on the left side of the dotted line 401 may be performed by the user device 340, and processes on the right side of the dotted line may be performed by the host devices 370.
  • the example process 400 may begin at block 402, where a discovery protocol may be invoked (e.g., via the device service manager 360 in FIG. 3) to discover one or more services, such as a wireless communication protocol, provided by various devices, such as a host or peripheral device, or a docking system.
  • the invoked discovery protocol may include the ASP coordination protocol.
  • a request for the one or more services may be generated (e.g., by the device discovery module 362). Such generation may include generating or modifying a data frame (e.g., the data frame 200 in FIG. 2) to include information including a unique identification of the one or more services requested, a type of the device, a description of the device, one or more connection capabilities supported by the device, a maximum data payload size, a service status associated with each of the uniquely identified services, and a service description, in one embodiment.
  • a data frame e.g., the data frame 200 in FIG. 2
  • Such generation may include generating or modifying a data frame (e.g., the data frame 200 in FIG. 2) to include information including a unique identification of the one or more services requested, a type of the device, a description of the device, one or more connection capabilities supported by the device, a maximum data payload size, a service status associated with each of the uniquely identified services, and a service description, in one embodiment.
  • the generated request may be sent to other devices at block 406.
  • the requests may be sent via the ASP coordination protocol (e.g., via the device discovery module 362) as described above.
  • the Media Agnostic USB protocol may be requested, for example, to communicate data using the USB protocol to another device for performance of a service (e.g., printing the data, displaying the data, etc.).
  • One or more host devices may receive the request for services provided by the host devices (e.g., via the host discovery module 378), at block 408.
  • the host devices may determine the availability of its services, at block 410, and generate a response to the request (e.g., via the host service manager 376) that uniquely identifies its services and corresponding information, at block 412.
  • Such information may include the information in the data frame 200 in FIG. 2, in one embodiment.
  • the generated response may be sent to the requesting device (e.g., the device that sent the request for services) at block 414.
  • the response may include information associated with a print service and a Media Agnostic USB protocol service, both of which may be provided by the host device. Information associated with one or more other services may be included in other examples.
  • the requesting device may receive the response from the host device at block 416. Upon receiving the request, the requesting device may compare identifications of the requested services to identifications of the available services received in the response (e.g., via the device service manager 360), at block 418. If a match is not determined based on the comparison, at block 420, then processing may end. If a match is determined for at least one of the requested services, then the available services may be displayed at the requesting device for user selection. In some embodiments, the requesting device may not display any of the requested services if each of the requested services is not indicated as available in the response, which may have been sent by a docking system or other device.
  • a user selection of one or more services may be received at block 422.
  • the requesting device may send a request to utilize a selected service or services to a host device, or more generally a device from which it received a response to a request for services, at block 424.
  • the host device which may also be a docking system or peripheral device, may receive the request at block 426, and establish a connection to the requesting device (e.g., via the host discovery module 378) at block 428.
  • the host device may send an indication that a connection has been established, and the indication may be received by the requesting device at block 432.
  • a wireless communication protocol may be invoked (e.g., the device protocol service 364 in FIG. 3) to send information associated with the selected service.
  • the discovery protocol e.g., the ASP coordination protocol
  • the wireless communication protocol may invoke the wireless communication protocol in conjunction with sending a request to utilize the service at block 424.
  • the information associated with the selected service may be provided along with the request to utilize the service in this embodiment.
  • the information associated with the service may be received by the host device, at block 436, and the requested service may be performed by the host device at block 438.
  • FIG. 5 depicts a flow diagram of an example process 500 for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with a docking system, according to an embodiment of the disclosure.
  • the example process 500 may be performed at least in part by the docking system 310 in FIG. 3 and the user device 340 in FIG. 3.
  • the example process 500 may begin at block 502, where configuration information associated with one or more policies for controlling access to services provided by the docking system may be received.
  • User devices attempting to dock at the docking system may be discovered (e.g., via the docking discovery module 330) at block 504. In so doing, one or more services available via the docking system may be determined based at least in part on the one or more policies at block 506.
  • a policy may limit the number of user devices that may have access to all of the services provided by the docking system. After a certain number of user devices (e.g., a predetermined number) have gained access to all services, successive user devices may not receive access to any services or only a portion of services provided by the docking system, in one example. Numerous other examples controlling a user device's access to services provided by the docking system may exist.
  • a discovery request that includes a unique identification of the one or more available services and corresponding information, such as information in the data frame 200 in FIG 2, may be generated (e.g., via the docking discovery module 330) at block 508.
  • the docking discovery module 330 may include the ASP coordination protocol developed by the Wi-Fi Alliance.
  • the generated discovery request may be sent to a user device attempting to dock at the docking system at block 510.
  • a request for one or more services is received from a user device (e.g., via the docking discovery module 330, which may be invoked by the docking services manager 328) at block 512, then the requested services may be compared to the available services at block 514. If each of the requested services matches the available services, at block 516, then a connection to the user device may be established (e.g., via the docking discovery module 330) at block 518.
  • Information associated with a request to perform a wireless communication service such as the Media Agnostic USB protocol service, may be received at block 520.
  • the information may be routed (e.g., via the docking protocol service 332) for performance of a requested service (e.g., printing the information by a printer, storing the information by a storage device, etc.) via the wireless communication protocol, at block 522.
  • a requested service e.g., printing the information by a printer, storing the information by a storage device, etc.
  • the operations and processes described and shown above may be carried out or performed in any suitable order as desired in various implementations. Additionally, in certain implementations, at least a portion of the operations may be carried out in parallel. Furthermore, in certain implementations, less than or more than the operations described may be performed.
  • These computer-executable program instructions may be loaded onto a special- purpose computer or other particular machine, a processor, or other programmable data processing apparatus to produce a particular machine, such that the instructions that execute on the computer, processor, or other programmable data processing apparatus create means for implementing one or more functions specified in the flow diagram block or blocks.
  • These computer program instructions may also be stored in a computer- readable storage media or memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage media produce an article of manufacture including instruction means that implement one or more functions specified in the flow diagram block or blocks.
  • certain implementations may provide for a computer program product, comprising a computer-readable storage medium having a computer-readable program code or program instructions implemented therein, said computer-readable program code adapted to be executed to implement one or more functions specified in the flow diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational elements or steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide elements or steps for implementing the functions specified in the flow diagram block or blocks.
  • blocks of the block diagrams and flow diagrams support combinations of means for performing the specified functions, combinations of elements or steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flow diagrams, and combinations of blocks in the block diagrams and flow diagrams, can be implemented by special-purpose, hardware-based computer systems that perform the specified functions, elements or steps, or combinations of special-purpose hardware and computer instructions.
  • Conditional language such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain implementations could include, while other implementations do not include, certain features, elements, and/or operations. Thus, such conditional language is not generally intended to imply that features, elements, and/or operations are in any way required for one or more implementations or that one or more implementations necessarily include logic for deciding, with or without user input or prompting, whether these features, elements, and/or operations are included or are to be performed in any particular implementation.
  • the method may include generating, by a user device, a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device.
  • the method may also include sending, by the user device to the host device, the service request.
  • the service request may be sent using a discovery protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request.
  • the USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol may include an Application Service Platform (ASP) coordination protocol.
  • the one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
  • TCP/IP Transmission Control Protocol / Internet Protocol
  • MAC Media Access Control
  • the method may further include receiving, by the user device, a service response from the host device and establishing, by the user device based at least in part on the service response, a connection to the host device.
  • the discovery protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection.
  • the method may further include sending, by the user device, information to the host device using the USB protocol for wireless communication.
  • the information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication.
  • the second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
  • the service request may be sent to a plurality of devices that include the host device.
  • the method may also include determining, by the user device, a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response.
  • the method may further include determining, by the user device, the host device to which to establish the connection based at least in part on the first indication and the second indication.
  • the host device may include a docking system. Sending the information to the host device may cause performance of a service by a peripheral device in communication with the docking system, in one embodiment. Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
  • a service which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
  • there is disclosed one or more computer- readable media storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform various operations. Such operations may include generating a service request to utilize an Application Service Platform (ASP) coordination protocol. The operations may also include sending, to the host device, the service request.
  • the service request may be sent using a Media Agnostic USB protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the
  • the USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication.
  • the one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
  • TCP/IP Transmission Control Protocol / Internet Protocol
  • MAC Media Access Control
  • the operations may further include receiving a service response from the host device and establishing, based at least in part on the service response, a connection to the host device.
  • the (ASP) coordination protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection.
  • the operations may further include sending information to the host device using the USB protocol for wireless communication.
  • the information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication.
  • the second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
  • the service request may be sent to a plurality of devices that include the host device.
  • the operations may also include determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response.
  • the operations may further include determining the host device to which to establish the connection based at least in part on the first indication and the second indication.
  • the host device may include a docking system. Sending the information to the host device may cause performance of a service by a peripheral device in communication with the docking system, in one embodiment.
  • Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
  • the apparatus may include means for generating a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device.
  • the apparatus may also include sending, to the host device, the service request.
  • the service request may be sent using a discovery protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request.
  • the USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol may include an Application Service Platform (ASP) coordination protocol.
  • the one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
  • TCP/IP Transmission Control Protocol / Internet Protocol
  • MAC Media Access Control
  • the apparatus may further include means for receiving a service response from the host device and establishing, based at least in part on the service response, a connection to the host device.
  • the discovery protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection.
  • the apparatus may further include means for sending information to the host device using the USB protocol for wireless communication.
  • the information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication.
  • the second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
  • the service request may be sent to a plurality of devices that include the host device.
  • the apparatus may also include means for determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response.
  • the apparatus may further include means for determining the host device to which to establish the connection based at least in part on the first indication and the second indication.
  • the host device may include a docking system.
  • the apparatus may also include means for sending the information to the host device.
  • Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
  • the system may include one or more radios, one or more antennas, at least one memory that stores computer-executable instructions, and at least one processor configured to access the at least one memory, wherein the at least one processor is configured to execute the computer-executable instructions perform various functions.
  • the at least one processor may be configured to execute the computer-executable instructions to receive information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system.
  • the at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
  • the at least one processor may also be configured to determine at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy.
  • the at least one processor may further be configured to send, to a user device, a message using the Application Service Platform (ASP) coordination protocol.
  • the message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment.
  • the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
  • the at least one processor may be further configured to receive, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, establish a connection to the user device to enable accessing of the at least one second service.
  • the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service.
  • the at least one processor may be further configured to, after establishing the connection, send the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
  • the at least one processor may be further configured to, when the at least one first service does not include the at least one second service received from the user device, send a message to the user device indicating that a connection to the system has been denied.
  • the at least one processor may be further configured to, when the at least one first service does not include the at least one second service received from the user device, send, to the user device, an indication of at least a portion of the at least one first service.
  • the at least one processor may be further configured to receive, from the user device, a response to the confirmation request. The response may include the at least a portion of the at least one service.
  • the at least one processor may be further configured to enable access to the at least a portion of the at least one service.
  • the user device may include a first user device.
  • the at least one processor may be further configured to receive, from a second user device, a request for at least one third service.
  • the at least one processor may be further configured to determine that the at least one first portion comprises the at least one third service, and determine that the at least one third service is not accessible to the second user device based at least in part on the at least one policy.
  • the at least one processor may further be configured to send an indication to the second user device that a connection to the system has been denied.
  • one or more computer- readable media for storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform various operations.
  • the operations may include receiving information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system.
  • the at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
  • the operations may further include determining at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy.
  • the at least one processor may further be configured to send, to a user device, a message using the Application Service Platform (ASP) coordination protocol.
  • the message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment.
  • the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
  • the operations may further include receiving, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, establishing a connection to the user device to enable accessing of the at least one second service.
  • the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service.
  • the operations may further include, after establishing the connection, sending the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
  • the operations may also include, when the at least one first service does not include the at least one second service received from the user device, sending a message to the user device indicating that a connection to the system has been denied.
  • the operations may further include, when the at least one first service does not include the at least one second service received from the user device, sending, to the user device, an indication of at least a portion of the at least one first service.
  • the operations may further include receiving, from the user device, a response to the confirmation request.
  • the response may include the at least a portion of the at least one service.
  • the operations may further include enabling access to the at least a portion of the at least one service.
  • the user device may include a first user device.
  • the operations performed by the at least one processor may also include receiving, from a second user device, a request for at least one third service.
  • the operations may further include determining that the at least one first portion comprises the at least one third service, and determining that the at least one third service is not accessible to the second user device based at least in part on the at least one policy.
  • the operations may further include sending an indication to the second user device that a connection to the system has been denied.
  • the apparatus may include means for receiving information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system.
  • the at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
  • the apparatus may further include means for determining at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy.
  • the apparatus may further include means for sending, to a user device, a message using the Application Service Platform (ASP) coordination protocol.
  • the message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment.
  • the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
  • the apparatus may further include means for receiving, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, means for establishing a connection to the user device to enable accessing of the at least one second service.
  • the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service.
  • the apparatus may further include, after establishing the connection, means for sending the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
  • the apparatus may also include, when the at least one first service does not include the at least one second service received from the user device, means for sending a message to the user device indicating that a connection to the system has been denied.
  • the apparatus may further include, when the at least one first service does not include the at least one second service received from the user device, means for sending, to the user device, an indication of at least a portion of the at least one first service.
  • the apparatus may further include means for receiving, from the user device, a response to the confirmation request. The response may include the at least a portion of the at least one service.
  • the apparatus may further include means for enabling access to the at least a portion of the at least one service.
  • the user device may include a first user device.
  • the apparatus may also include means for receiving, from a second user device, a request for at least one third service.
  • the apparatus may further include means for determining that the at least one first portion comprises the at least one third service, and means for determining that the at least one third service is not accessible to the second user device based at least in part on the at least one policy.
  • the apparatus may further include means for sending an indication to the second user device that a connection to the system has been denied.

Abstract

Abstract Certain embodiments herein relate to discovering and utilizing wireless communication protocols for accessing services. A wireless device may discover services provided by other devices, such as a docking system, a host device, a peripheral device, etc., to determine whether such devices support a protocol or service desired by a user of the user device. For example, a user may desire to print, display, store, or output audibly the contents of a file using a wireless USB protocol service, such as the Media Agnostic USB (MA USB) protocol service. To discover devices that support such a service, the device may generate and send a discovery request using the Wi-Fi Direct Services (WFDS) Application Service Platform (ASP) coordination protocol. In certain embodiments herein, the ASP coordination protocol may be modified to include certain information associated with the wireless USB protocol and/or other services desired by the user.

Description

SYSTEMS AND METHODS FOR DISCOVERING AND UTILIZING WIRELESS COMMUNICATION PROTOCOLS FOR ACCESSING SERVICES BY WI-FI
DEVICES
RELATED APPLICATIONS
[0001] The present application is a non-provisional application claiming priority to U.S. Provisional Application No. 61/829,391, entitled "Architecture of Wi-Fi Serial Bus in Presence of Wi-Fi Direct Services Application Services Platform," filed May 31, 2013; U.S. Provisional Application No. 61/829,373, entitled "Wi-Fi Docking Architecture in Presence of Wi-Fi Direct Services Application Services Platform," filed May 31, 2013; and U.S. Provisional Application No. 61/823,980, entitled "Methods to Port the Wi-Fi Direct Services ASP for Operation Directly Over the MAC," filed May 16, 2013, wherein each provisional application is hereby incorporated by reference in its entirety as if fully set forth herein.
BACKGROUND
[0002] Traditional Universal Serial Bus (USB) communication may occur over a wired connection between various devices, such as a laptop computer and an external storage device. Recent efforts to utilize the USB protocol for communication over wireless networks (wireless USB communication) may offer numerous benefits over traditional wired USB communication. Such efforts, however, have not addressed discovery or identification of devices that may be configured for wireless USB communication, nor the type of communication mediums over which wireless USB communication may occur, among other things.
[0003] Docking management systems that include a wireless dock, for example, may enable access to peripheral devices providing various services, such as display, print, file transfer, audio, etc. Devices that connect to such systems, however, may be unable to recognize and leverage such services, which may also impact the ability of docking management systems to manage their service offerings. BRIEF DESCRIPTION OF THE FIGURES
[0004] The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
[0005] FIG. 1 illustrates a schematic diagram of an environment in which various types of devices may discover and utilize wireless communication protocols for accessing services, according to an embodiment of the disclosure.
[0006] FIG. 2 illustrates a block diagram of an example data frame used to exchange information associated with wireless communication protocols, according to an embodiment of the disclosure.
[0007] FIG. 3 illustrates a block diagram of an example computing environment for discovering and utilizing wireless communication protocols for accessing services, according to an embodiment of the disclosure.
[0008] FIG. 4 illustrates a flow diagram of an example process for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with host devices, according to an embodiment of the disclosure.
[0009] FIG. 5 illustrates a flow diagram of an example process for discovering and utilizing wireless communication protocols by a user device communicating with a docking system, according to an embodiment of the disclosure.
[0010] Certain implementations will now be described more fully below with reference to the accompanying drawings, in which various implementations and/or aspects are shown. However, various aspects may be implemented in many different forms and should not be construed as limited to the implementations set forth herein; rather, these implementations are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. Like numbers refer to like elements throughout. DETAILED DESCRIPTION
[0011] Certain embodiments herein relate to, among other things, discovering and utilizing wireless communication protocols. A wireless device may discover services provided by other devices, such as a docking system, a host device, a peripheral device, etc., to determine whether such devices support a protocol or service desired by a user and/or compatible with the user device. For example, a user may desire to print, display, store, or output audibly the contents of a file using a wireless USB protocol service, such as the Media Agnostic USB (MA USB) protocol service. To discover devices that support such a service, the device may generate and send a discovery request using the Wi-Fi Direct Services (WFDS) Application Service Platform (ASP) coordination protocol. In certain embodiments herein, the ASP coordination protocol may be modified to include certain information associated with the wireless USB protocol and/or other services desired by the user.
[0012] The ASP coordination protocol may also be modified to include an application programming interface (API) that may invoke the wireless USB protocol service, for example, upon detecting that a host device provides a requested service. As part of the invocation, the API may pass information to the wireless USB protocol service to facilitate performance of a requested service via the wireless USB protocol. In the manner described above, aspects and functions of the Media Agnostic USB protocol may be extended for use by wireless devices over a wireless fidelity (Wi-Fi) network, or other wireless networks, by virtue of utilizing a version of the ASP coordination protocol as described herein.
[0013] Certain embodiments herein also relate to managing access to services provided by host or peripheral devices via a docking system. The docking system may determine which of the services are available based on policies that may restrict access to all or at least a portion of the services according to certain conditions. A user who desires to utilize a device to access a bundle of services by docking the user device at the docking station may therefore obtain access to the entire bundle of services, at least a portion of the services, or none of the services based on availability and policy implementations, in some embodiments.
[0014] Communication between the docking system, user devices, and host devices, may occur via the ASP coordination protocol as described above. In one embodiment, the ASP coordination protocol may indicate a Wi-Fi docking protocol service, which may define the particular services available via the docking system and information corresponding to such services, among other information. In this way, aspects and functions of wireless docking may be extended for use by wireless devices over a Wi-Fi network, or other networks, by virtue of utilizing a version of the ASP coordination protocol as described herein.
[0015] FIG. 1 depicts a schematic diagram of an example environment 100 in which various types of devices may discover and utilize wireless communication protocols for accessing services, according to an embodiment of the disclosure. An example wireless communication protocol may include a wireless USB communication protocol, which may enable devices to distribute video, data, audio, multimedia, or other information, using the USB protocol over a wireless network. Example wireless USB protocols may include, but are not limited to, Wi-Fi Serial Bus (WSB) or Media Agnostic USB protocol.
[0016] As shown in FIG. 1, a user device 140 may communicate with various host devices 170 over one or more networks 102. For example, the user device 140 may send a discovery request to the host devices 170 to determine which of the host devices 170 support a wireless USB protocol. Upon identifying such a host device 170, the user device 140 may establish a connection to the host device 170 to access a service provided by the host device 170, such as a Media Agnostic USB enabled USB peripheral service. Other services, such as printing, displaying, playing audio, transferring content, etc., may also be provided by the host devices 170. An example host device 170 may be a USB peripheral device supporting the wireless USB protocol, such as a printer, a display, a speaker, a server, or other device that may be configured with hardware and software to perform a particular service or operation.
[0017] In other embodiments, the user device 140 may discover services offered by a docking system 110. In so doing, the user device 140 may send a discovery request to the docking system 110 and may receive a response to the request from the docking system 110. In one embodiment, the user device 140 may request a docking service, and the docking system 110 may in turn provide multiple services offered by the docking system 110. Certain embodiments herein relate to identifying and resolving a discrepancy between a docking service as requested by the user device 140 and a docking service as offered by the docking system 110. [0018] In some embodiments, the docking system 110 may generate and send a discovery request to determine user devices 140 that are attempting to dock at the docking system 110. The discovery request may include services that are currently available at the docking system 110 based on one or more policies, as will be described in greater detail below. If a request from the user device 140 meets policy requirements, then the docking system 110 may establish a connection to the user device 140 such that the user device 140 may utilize the one or more available services. The available services may be provided by various host devices 170 (e.g., peripheral devices), such as printers, displays, audio devices, etc., to which the docking system 110 may be connected via the network 104, which may be wired or wireless. In other embodiments, a user device 140 may send a discovery request to discover one or more docking systems 110 at which it may dock to access one or more services, as will be described in greater detail below.
[0019] The docking system 110 may manage communications to each of the host or peripheral devices 170 to which it has a connection. For example, the docking system 110 may implement the Media Agnostic USB protocol for communication with storage devices, the Wi-Fi Display protocol or the WiGig Display Extension protocol for communication with display devices, or various other protocols for communication with other types of devices. The docking system may also manage such communication over various types of mediums, such as Transmission Control Protocol / Internet Protocol (TCP/IP), Media Access Control (MAC), over-the-air, etc. In one example, the docking system 110 may communicate with one peripheral device 170 using a TCP/IP address and may communicate with another peripheral device 170 using a MAC address.
[0020] As described above, any of the devices in FIG. 1 may discover other devices. In so doing, the devices (requesting device) may generate a request, such as a probe request that includes a data frame as described below, and send the request to other devices. The requesting device may thereafter receive a response from other devices that received the request. The response may also include a data frame as described below, which may indicate which services may be provided by the responding device, among other information. Such an exchange of information may be referred to herein as discovering services offered by a device. In certain embodiments herein, such discovery may be performed via a discovery request protocol, such as the Wi-Fi Direct Services (WFDS) Application Service Platform (ASP) coordination protocol developed by the Wi-Fi Alliance. As will be described below, the ASP coordination protocol may be modified to facilitate the processes described herein, in certain embodiments.
[0021] In one embodiment, the discovery request may be sent as a data frame that includes various information. In one aspect of the embodiment, the discovery request may be sent as a probe request that may be broadcasted to wireless devices on the networks 102 or 104, as well as a probe response that may be distributed to a requesting device. FIG. 2 depicts a block diagram of an example data frame 200 used for discovery requests to discover services provided by devices. Such a data frame 200 may include, but is not limited to, one or more service names 210, a type of device 220, a device description 230, one or more connection capabilities 240, a maximum data payload size 250, a service status 260, a service description 270, and an icon 280 identifying the service.
[0022] The service name 210 may uniquely identify a service provided by a device. One or more services may be indicated in the service name 210 field. Example services may include, but are not limited to, a print service 212, an audio service 214, a display service 216, and various wireless communication protocols (e.g., a wireless USB protocol 218 and a wireless docking protocol 219). Multiple services may be indicated in the service name 210 field. For example, a print service and the Media Agnostic USB protocol service may be identified in the serve name 210 field. An indication of the print service may mean that a device provides a printing service. An indication of the Media Agnostic USB protocol service may means that the device is configured to use the Media Agnostic USB protocol service, and so forth, such that any number of services may be indicated in the data frame 200 for identification by another device that receives the data frame 200. The other types of fields in the data frame 200 may relate to each individual service name 210 identified in the data frame 200, in one embodiment. In certain embodiments herein, a first device may discover that a second device is configured to utilize the wireless USB protocol 218 and may subsequently establish a connection to utilize the protocol for communication with the second device.
[0023] The type of device 220 may identify the type of device with which the information in the data packet is associated. Example types of devices may include a dock 222 (e.g., the docking system 1 10 in FIG. 1), a host or peripheral 224 (e.g., the host device 170 in FIG. 1), a device 226 (e.g., a user device 140 in FIG. 1), etc. [0024] The device description 230 may include various information associated with the type of device 220. Such information may include a description of the device (e.g., a printer, a speaker, a USB storage drive, etc.). The information may also include service information 232, such as Media Agnostic USB service information. Such information may enable devices to determine whether they are compatible with one another, among other things. Example information that may include an identification of device drivers supported by the device, a USB device class associated with a device, etc.
[0025] The connection capability 240 may identify a communication mode for transmitting information over a wireless network, such as a Wi-Fi network. Example types of connection modes may include, but are not limited to, TCP/IP 242, or MAC 244.
[0026] The maximum data payload size 250 may identify a maximum allowable size (e.g., a number of bytes) for a payload. In one embodiment, the Media Agnostic USB protocol Programmable Array Logic (PAL) may pass such information to the physical layer to facilitate generation of suitable packets for transmission of the packets according to the protocol and communication mode used in the transmission.
[0027] The service status 260 may indicate whether a service 210 is available or unavailable 262, as examples. For example, a type of device that is a dock 222 may determine that only a portion of its services is available based on a policy. In one embodiment, the dock 222 may send one or more data frames indicating a status for each of its services, whether available or unavailable. In other embodiments, only services that are available may be communicated to other devices, such as devices 226 attempting to dock at the dock 222.
[0028] The service description 270 may identify a category of the services identified in the service name 210 field. One such category may include "bundled," or similar, to indicate that all of the services offered by the dock 222 may be utilized by the device 226. The "bundled" category may be consistent with using docking as a service, for which all services become available to devices 226 that dock at the dock 222. Another category may include "individual," or similar, to indicate that a single service is offered in the data frame 200. In some instances, a device 226 may desire to connect to only a portion of the services offered by the dock 222. [0029] The icon 280 may be used to identify a service with which it is associated. In one embodiment, the icon 280 may be a graphical representation of the service. The icon 280 may be displayed at a user device (e.g., the user device 140 in FIG. 1) in association with other information associated with the service to facilitate identification of the service by a user, among other things. In one example, the icon 280 may be a graphical illustration of a printer that provides a print service via the Media Agnostic USB protocol service. Numerous other icons 280 may exist in other examples.
[0030] The data frame 200 in FIG. 2 is for purposes of illustration and is not meant to be limiting. Other data frames may include different fields, information, etc., in other embodiments.
[0031] Returning to FIG. 1, examples of communication between devices using the data frame configuration in FIG. 2 may be as follows. In one example in which a user device 140 desires information about services provided by other devices, the user device 140 may generate and send a data frame that includes a service name 210 of the Media Agnostic USB protocol, a type of device 220 of a device, a device description 230, a connection capability 240 of TCP/IP and MAC, a maximum data payload size 250 of 1028 bytes, a service status 260 of "available," and a service description 270 of "individual" to a peripheral device 170, which may be a printer. The peripheral device 170 may receive the discovery request and send a response including a data frame that indicates that the printer 170 is configured to communicate via the Media Agnostic USB protocol, a type of device 220 of device, a device description 230, a connection capability 240 of TCP/IP and MAC, a maximum data payload size 250 of 1028 bytes, a service status 260 of "available," and a service description 270 of "individual" to the user device 140.
[0032] Upon receiving the response from the printer 170, the user device 140 may determine that the printer 170 may receive requests to print content via the Media Agnostic USB protocol based on the service name 210 field in the response data frame. The user device 140 may subsequently send content for printing by the printer 170 via the Media Agnostic USB protocol. In this way, the Media Agnostic USB protocol may be extended for use between devices by virtue of using a discovery protocol, such as the ASP coordination protocol, for sending data frames as described in the examples above.
[0033] According to another example, the docking system 1 10 may discover that one or more user devices 140 are attempting to dock at the docking system 1 10. In so doing, the docking system 110 may send a data frame (e.g., the data frame 200 in FIG. 2) that indicates that each of the services 212, 214, 216, 218, and 219 are available as service names 210; a type of device 220 of dock; a device description 230; connection capabilities 240 of TCP/IP and MAC; a maximum data payload size 250 of 1028 bytes; a service status 260 of "available" for each of the service names 210; and a service description 270 of "bundled" to indicate that all of the services indicated in the service name 210 are available upon docking at the wireless docking system 1 10. In one embodiment, a service designated as a "docking service," or similar, may indicate that all or at least a portion of the services associated with the wireless docking system 1 10 may be available for use.
[0034] A first user device 140 may receive the data frame from the docking system 1 10 and may subsequently connect to the wireless docking system 110 to use one or more bundled services. In so doing, the first user device 140 may determine that the services 212, 214, 216, 218, and 219 are suitable or desired services. The user device 140 may thereafter send contents of a file for printing to the docking system 110, which may in turn send the contents to the peripheral device 170 for performance of the request. A second user device 140 may also receive a data frame from the docking system 110. In one embodiment, such a data frame may indicate a different service offering based on a policy implemented at the docking system 110. For example, a policy may restrict access to bundled services (or use of docking as a service) to a certain number of user devices on a first come, first served basis, or according to any number of criteria, as will be described in greater detail below. The service offering received by the second user device 140 may therefore include an individual service or a portion of the services offered by the docking system 110, in one embodiment.
[0035] FIG. 3 depicts a block diagram of an example computing environment 300 for discovering and utilizing wireless communication protocols for accessing services, according to an embodiment of the disclosure. The computing environment 300 may include, but is not limited to, a docking system 310, user devices 340, and host or peripheral devices 370. Such devices may embody their counterpart devices in FIG. 1, which may communicate with one another over the networks 302 and 304 as described above.
[0036] As used herein, the term "device" may refer to any computing component that includes one or more processors that can be configured to execute computer-readable, computer-implemented, or computer-executable instructions. Example devices may include personal computers, docking systems, server computers, server farms, digital assistants, smart phones, personal digital assistants, digital tablets, smart cards, Internet appliances, application-specific circuits, microcontrollers, minicomputers, transceivers, kiosks, other host devices and client devices, or generally other processor-based devices. The execution of suitable computer-implemented instructions by one or more processors associated with various devices may form special purpose computers or other particular machines that may implement or facilitate the processes described herein.
[0037] The one or more networks 302 and 304 may facilitate communication between the devices shown in FIG. 3. Such networks may include any number of wireless or wired networks that may enable various computing devices in the example system 300 to communicate with one another. In some embodiments, other networks, intranets, or combinations of different types of networks may be used including, but not limited to, Wi- Fi networks, Wi-Fi Direct networks, NFC networks, Bluetooth® networks, the Internet, intranets, cable networks, cellular networks, landline-based networks, radio networks, satellite networks, other short-range, mid-range, or long-range wireless networks, or other communication mediums connecting multiple computing devices to one another. The one or more networks 305 may embody the one or more networks 102 and 104 in FIG. 1, in some embodiments.
[0038] As used herein, the term "service" may refer to a set of related software functionalities that may be reused for various purposes, together with policies that control its usage. As described above, an example service may include a wireless USB protocol, such as the Wi-Fi Serial Bus (WSB), which may enable devices to exchange information using the USB protocol over Wi-Fi links; and the Media Agnostic USB protocol, which may extend USB protocol communication over various types of mediums, such as TCP/IP, MAC, etc. The term "wireless USB protocol" may also be referred to herein as a USB protocol for wireless communication. Another example service may include a wireless docking service, such as the Wi-Fi docking protocol, which may enable a docking system to manage connections and communications with peripheral devices connected to the docking system. Yet another example service may include the ASP coordination protocol, the modification of which may be used to discover services, such as the wireless USB protocol (e.g., Media Agnostic USB protocol) and the wireless docking protocol, as examples.
[0039] As used herein, a peripheral device may refer to a device that is separate from the host device and functions to expand the capabilities of the host. Different types of peripheral devices may include input devices, which may be used to send data to the host device; output devices, which may send data from the host device to the peripheral device; and storage devices, which may store data processed by the host device.
[0040] As used herein, a data frame may refer to a data unit that encapsulates one or more packets, which may include payloads or data, for transmission across one or more networks.
[0041] The devices 310, 340, and 370 may include one or more processors configured to communicate with one or more memory devices and various other components or devices. For example, the docking system 310 may include one or more processors 312, one or more input/output (I/O) devices 314, storage 316, one or more communication connections 318, and one or more data stores 322. The one or more processors 312 may be implemented as appropriate in hardware, software, firmware, or a combination thereof. The one or more processors 342 associated with the user device 340 may be the same or at least similar to the processor 312, in one embodiment.
[0042] The memory 324 associated with the docking system 310 may store program instructions that are loadable and executable on the processor 312, as well as data generated during the execution of these programs. Depending on the configuration and type of docking system 310, the memory 324 may be volatile, such as random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM); or non-volatile, such as read-only memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc. The memory 354 and 372 associated with the user device 340 and the host device 370, respectively, may be the same or at least similar to the memory 324, in one embodiment.
[0043] The storage 316 associated with the docking system 310 may include removable and/or non-removable storage including, but not limited to, magnetic storage, optical disks, and/or tape storage. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing system. The storage 346 associated with user device 340 may be the same or at least similar to the storage 316, in one embodiment.
[0044] The memory 324, 354, and 372, and the storage 316 and 346, both removable and non-removable, are all examples of computer-readable storage media. For example, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
[0045] The I/O devices 314 associated with the docking system 310 may enable a user to interact with the host devices 370, which may be a wireless docking system, a printer, a server, an audio device, or various other devices or peripherals. The I/O devices 314 may include, but are not limited to, a keyboard, a mouse, a pen, a voice input device, a touch input device, a gesture detection or capture device, a display, a camera or an imaging device, speakers, and/or a printer. The I/O devices 344 associated with the user device 340 may be the same or at least similar to the I/O devices 314, in one embodiment.
[0046] The one or more communication connections 318 associated with the docking system 310 may allow the docking system 310 to communicate with other devices, such as the user devices 340 over the one or more wireless networks 302. The communication connections 218 may include one or more antennas 320 and one or more radios 319, which may include hardware and software for sending and/or receiving wireless signals over the various types of networks 302 and 304 described above. The communication connections 348 associated with the user device 340 may be the same or similar to the communication connections 318, in one embodiment. For example, the communication connections 348 may include one or more radios 349 and antennas 350 that may enable the user device 340 to receive and/or send wireless signals to the docking system 310 or other devices.
[0047] The data store 322 may store lists, arrays, databases, flat files, etc. In some implementations, the data store 322 may be stored in a memory external to the docking system 310 but may be accessible via one or more networks, such as with a cloud storage service. The data store 322 may store information that may facilitate the processes described herein, among other functions associated with the docking system 310. The data store 352 associated with the user device 340 may be the same or at least similar to the data store 322, in one embodiment.
[0048] At least a portion of the host devices 370 may include all or at least a portion of the processors 312, I/O devices 314, storage 316, communication connections 318, and data store 322 associated with the docking system 310, in one embodiment.
[0049] Turning to the contents of the memory 324 of the docking system 310, the memory 324 may include a docking operating system (O/S) 326 and various program modules such as, but not limited to, a docking services manager 328 and a policy management module 334. Each of these modules may be implemented as individual modules that provide specific functionality associated with discovery and utilizing wireless communication protocols for accessing services, as described herein. Alternatively, one or more of these modules may perform all or at least some of the functionality associated with the other modules.
[0050] The docking O/S 326 may refer to a collection of program code and data stored in persistent memory (e.g., ROM, flash memory, etc.) as firmware for controlling the operation of the docking system 310, in one embodiment. Such operation may include providing respective interfaces for enabling communication between the user devices 340 and the host devices 370, among other functions.
[0051] The docking services manager 328 may configure the docking system 310 to manage access to the host devices or peripherals 370, which may each provide a service for the user device 340. The docking services manager 328 may manage a separate protocol for each of the host devices 370. Such protocols may include program code that implements a system of digital rules governing exchange of information between the devices in FIG. 3. Examples of such protocols are described above.
[0052] The docking services manager 326 may also manage communications with the user devices 340. In one embodiment, the docking services manager 326 may include a docking discovery module 330 and a docking protocol service 332 to implement such management. The docking discovery module 330 may discover devices on the wireless networks 302 and 304 and establish a connection with such devices to enable access to services offered by the docking system 310. In this way, the docking discovery module 330 may extend the Wi-Fi docking protocol, which may define various services offered by the docking system 310, such that the user devices 340 may determine and utilize such services. In one embodiment, the docking discovery module 330 may include a version of the ASP coordination protocol that is modified as described herein.
[0053] The docking discovery module 330 may also determine services offered by the wireless docking system 310. Such a determination may be performed by identifying host devices 370 to which the docking system 310 has established a connection, in one embodiment. In certain embodiments herein, the services offered by the docking system 310 may be filtered according to one or more policies, which are described in greater detail below. For example, the docking discovery module 330 may determine that although it has allowed access to print, display, and audio services (e.g., the docking service) to a certain number of user devices 340, a current policy that limits the number of user devices 340 that may access the docking service may restrict access for subsequent user devices to display and audio services only. Put another way, all or at least a portion of the services offered by the docking system 310 may be available based on the access policy currently being implemented.
[0054] The docking discovery module 330 may also generate a data frame (e.g., the data frame 200 in FIG. 2) for use in discovering services offered by various devices. In one embodiment, the data frame may be communicated as a probe request and/or a probe response to enable devices to exchange information regarding services provided by the devices, among other information. As described above, a modified version of the ASP coordination protocol may be used to distribute such a data frame, in one embodiment. The probe request may be sent continuously, periodically, or according to any time interval in various embodiments. The docking discovery module 330 may also analyze information in a probe response or other communication to determine services provided by the responding device.
[0055] The docking discovery module 330 may also determine whether services received in a probe response, or other response to a request for service information, are desired. In one example, the docking discovery module 330 may compare the services indicated in a discovery response with the services offered by the docking system 310. If the services match, then the docking discovery module 330 may establish a connection between the user device 340 and the corresponding host device 370 that may provide the desired service. If the services do not match, then the docking discovery module 330 may modify the service offerings according to those desired by the user device 340, and establish a connection for such services, in one embodiment.
[0056] To establish a connection between the user device 340 and a peripheral device 370 providing a desired service, the docking discovery module 330 may call (e.g., via an API) the docking protocol service 332, which may perform the requested service. Other techniques for establishing a connection may exist in other embodiments.
[0057] In one embodiment, the docking protocol service 332 may include the Wi-Fi docking protocol, which may enable the wireless docking system 310 to manage services between the user devices 340 and the host devices 370. For example, the docking discovery module 330 may receive a discovery response that includes contents of a file for printing, and may subsequently invoke the docking protocol service 332, which may send the contents of the file to a printer device 370 for printing via the Media Agnostic USB protocol. Other examples in which the Media Agnostic USB protocol, or other protocols, may be used by the docking protocol service 332 to enable performance of a service may exist in other embodiments.
[0058] The policy management module 334 may implement one or more policies for controlling access to services offered by the docking system 310. Such access may be restricted according to first come, first served basis for user devices 340 accessing the docking system 310. For example, all services associated with the docking system 310 may be available for a predetermined number of user devices 340. Once the predetermined number of user devices 340 has been reached, successive user devices 340 may receive none or only a portion of the services associated with the docking system 310. Another example policy may control the number of user devices 340 that are allowed to access individual services. Various other policies may be implemented in other examples.
[0059] The policy management module 334 may store and track the status of each service associated with the docking system 310 continuously, periodically, upon detecting a change in the status of a service, etc. In one embodiment, such information may be stored in a database (e.g., the data store 322), where it may be accessed by the docking discovery module 330 and included in the generated data frame.
[0060] The host devices 370 may also be configured to facilitate the processes described herein. In one embodiment, the memory 372 of the host devices 370 may include a host firmware operating system (O/S) 374 and a host service manager 376, which may include a host discovery module 378, and a host protocol service 380.
[0061] The host firmware O/S 374 may refer to a collection of program code and data stored in persistent memory (e.g., ROM, flash memory, etc.) for controlling the operation of the host device 370. For example, a host firmware O/S 374 associated with a printer device may control the receipt and printing of content, among other functions. As another example, a host firmware O/S 374 associated with a display device may display received content to a screen where it may be viewed by a user. Such functionality may also be provided by one or more software applications, which may be loaded in RAM or other volatile memory.
[0062] The host service manager 376 may control the functionality of the host discovery module 378 and the host protocol service 380. For example, the host service manager 376 may invoke the host discovery module 378, which may receive discovery requests from the user devices 340. The host service manager 376 may also invoke the host protocol service 380, for example, in response to receiving a request from the user device 340 to perform a service. In other embodiments, the host discovery module 378 may include one or more APIs that may invoke the host protocol service 380 to perform the requested service.
[0063] As described above, the host protocol service 380 may perform the service associated with the host device 370. In one embodiment, the host protocol service 380 may be the Media Agnostic USB protocol. As examples, the host protocol service 380 may receive data associated with a file for printing, display, audio, etc., and process the data in performance of the service.
[0064] In certain embodiments, the user device 340 may perform the same or similar functions as the host devices 370 to facilitate the processes described herein. For example, the device service manager 360 may control the functionality of the device discovery module 362 and the device protocol service 364. In one embodiment, the device service manager 360 may invoke the device discovery module 362, which may send requests to the host devices 370 and/or the docking system 310 to discover services provided by such devices. Upon receiving a response from these devices, the device discovery module 362 may determine that the host device 370 performs the requested service, and may subsequently establish a connection with the host device 370 for performance of the service, in one example.
[0065] In one embodiment, the device discovery module 362 may invoke the device protocol service 364 (e.g., the Media Agnostic USB protocol service) to communicate with the host device 370 for performing a requested service. In another embodiment, the device service manager 360 may invoke the device discovery module 362 to enable such communication.
[0066] The user device 340 may also include a device operating system (O/S) 356 and one or more user applications 358. The O/S 356 may refer to a collection of software that manages computer hardware resources and provides common services for computer programs to enable and facilitate operation of such programs. Example operating systems may include UNIX, Microsoft Windows, Apple OS X, etc. The one or more user applications 358 may perform any number of functions, including enabling a user to view and/or interact with content (e.g., text, data, video, multimedia, or other information). Example user applications 358 may enable the user to utilize various services, such as printing content or sharing the content with a display device, and may include one or more device drivers to facilitate such functions.
[0067] The above descriptions associated with FIG. 3 are for purposes of illustration and are not meant to be limiting. Other descriptions may involve different embodiments or configurations of the devices in FIG. 3. For example, at least a portion of the functionality performed by the devices 310, 340, and 370 may be performed by other devices. The devices 310, 340, and 370 may also perform additional or alternative functions to implement or facilitate the processes described herein.
[0068] FIG. 4 depicts a flow diagram of an example process 400 for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with host devices, according to an embodiment of the disclosure. In one embodiment, the example process 400 may be performed at least in part by the user device 340 in FIG. 3 and the host devices 370 in FIG. 3. In one configuration, processes on the left side of the dotted line 401 may be performed by the user device 340, and processes on the right side of the dotted line may be performed by the host devices 370. [0069] The example process 400 may begin at block 402, where a discovery protocol may be invoked (e.g., via the device service manager 360 in FIG. 3) to discover one or more services, such as a wireless communication protocol, provided by various devices, such as a host or peripheral device, or a docking system. In one embodiment, the invoked discovery protocol may include the ASP coordination protocol.
[0070] At block 404, a request for the one or more services may be generated (e.g., by the device discovery module 362). Such generation may include generating or modifying a data frame (e.g., the data frame 200 in FIG. 2) to include information including a unique identification of the one or more services requested, a type of the device, a description of the device, one or more connection capabilities supported by the device, a maximum data payload size, a service status associated with each of the uniquely identified services, and a service description, in one embodiment.
[0071] The generated request may be sent to other devices at block 406. In one embodiment, the requests may be sent via the ASP coordination protocol (e.g., via the device discovery module 362) as described above. In certain embodiments herein, the Media Agnostic USB protocol may be requested, for example, to communicate data using the USB protocol to another device for performance of a service (e.g., printing the data, displaying the data, etc.).
[0072] One or more host devices may receive the request for services provided by the host devices (e.g., via the host discovery module 378), at block 408. Upon receiving the request, the host devices may determine the availability of its services, at block 410, and generate a response to the request (e.g., via the host service manager 376) that uniquely identifies its services and corresponding information, at block 412. Such information may include the information in the data frame 200 in FIG. 2, in one embodiment. The generated response may be sent to the requesting device (e.g., the device that sent the request for services) at block 414. In one example, the response may include information associated with a print service and a Media Agnostic USB protocol service, both of which may be provided by the host device. Information associated with one or more other services may be included in other examples.
[0073] The requesting device may receive the response from the host device at block 416. Upon receiving the request, the requesting device may compare identifications of the requested services to identifications of the available services received in the response (e.g., via the device service manager 360), at block 418. If a match is not determined based on the comparison, at block 420, then processing may end. If a match is determined for at least one of the requested services, then the available services may be displayed at the requesting device for user selection. In some embodiments, the requesting device may not display any of the requested services if each of the requested services is not indicated as available in the response, which may have been sent by a docking system or other device.
[0074] A user selection of one or more services may be received at block 422. In one embodiment, the requesting device may send a request to utilize a selected service or services to a host device, or more generally a device from which it received a response to a request for services, at block 424. The host device, which may also be a docking system or peripheral device, may receive the request at block 426, and establish a connection to the requesting device (e.g., via the host discovery module 378) at block 428.
[0075] At block 430, the host device may send an indication that a connection has been established, and the indication may be received by the requesting device at block 432.
[0076] At block 434, a wireless communication protocol may be invoked (e.g., the device protocol service 364 in FIG. 3) to send information associated with the selected service. In one embodiment, the discovery protocol (e.g., the ASP coordination protocol) may invoke the wireless communication protocol in conjunction with sending a request to utilize the service at block 424. The information associated with the selected service may be provided along with the request to utilize the service in this embodiment. The information associated with the service may be received by the host device, at block 436, and the requested service may be performed by the host device at block 438.
[0077] FIG. 5 depicts a flow diagram of an example process 500 for discovering and utilizing wireless communication protocols for accessing services by a user device communicating with a docking system, according to an embodiment of the disclosure. In one embodiment, the example process 500 may be performed at least in part by the docking system 310 in FIG. 3 and the user device 340 in FIG. 3. The example process 500 may begin at block 502, where configuration information associated with one or more policies for controlling access to services provided by the docking system may be received. [0078] User devices attempting to dock at the docking system may be discovered (e.g., via the docking discovery module 330) at block 504. In so doing, one or more services available via the docking system may be determined based at least in part on the one or more policies at block 506. As an example, a policy may limit the number of user devices that may have access to all of the services provided by the docking system. After a certain number of user devices (e.g., a predetermined number) have gained access to all services, successive user devices may not receive access to any services or only a portion of services provided by the docking system, in one example. Numerous other examples controlling a user device's access to services provided by the docking system may exist.
[0079] A discovery request that includes a unique identification of the one or more available services and corresponding information, such as information in the data frame 200 in FIG 2, may be generated (e.g., via the docking discovery module 330) at block 508. In one embodiment, the docking discovery module 330 may include the ASP coordination protocol developed by the Wi-Fi Alliance. The generated discovery request may be sent to a user device attempting to dock at the docking system at block 510.
[0080] If a request for one or more services is received from a user device (e.g., via the docking discovery module 330, which may be invoked by the docking services manager 328) at block 512, then the requested services may be compared to the available services at block 514. If each of the requested services matches the available services, at block 516, then a connection to the user device may be established (e.g., via the docking discovery module 330) at block 518. Information associated with a request to perform a wireless communication service, such as the Media Agnostic USB protocol service, may be received at block 520. The information may be routed (e.g., via the docking protocol service 332) for performance of a requested service (e.g., printing the information by a printer, storing the information by a storage device, etc.) via the wireless communication protocol, at block 522.
[0081] If the services requested by the user device do not match the available services at block 516, then a determination may be made as to whether the one or more policies permit utilization of a portion of the available services at block 524. If the policies permit such utilization, then a connection to the user device for performing the requested services may be established at block 518. If the policies do permit such utilization, then processing may end. [0082] The operations and processes described and shown above may be carried out or performed in any suitable order as desired in various implementations. Additionally, in certain implementations, at least a portion of the operations may be carried out in parallel. Furthermore, in certain implementations, less than or more than the operations described may be performed.
[0083] Certain aspects of the disclosure are described above with reference to block and flow diagrams of systems, methods, apparatuses, and/or computer program products according to various implementations. It will be understood that one or more blocks of the block diagrams and flow diagrams, and combinations of blocks in the block diagrams and the flow diagrams, respectively, can be implemented by computer-executable program instructions. Likewise, some blocks of the block diagrams and flow diagrams may not necessarily need to be performed in the order presented, or may not necessarily need to be performed at all, according to some implementations.
[0084] These computer-executable program instructions may be loaded onto a special- purpose computer or other particular machine, a processor, or other programmable data processing apparatus to produce a particular machine, such that the instructions that execute on the computer, processor, or other programmable data processing apparatus create means for implementing one or more functions specified in the flow diagram block or blocks. These computer program instructions may also be stored in a computer- readable storage media or memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage media produce an article of manufacture including instruction means that implement one or more functions specified in the flow diagram block or blocks.
[0085] As an example, certain implementations may provide for a computer program product, comprising a computer-readable storage medium having a computer-readable program code or program instructions implemented therein, said computer-readable program code adapted to be executed to implement one or more functions specified in the flow diagram block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational elements or steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide elements or steps for implementing the functions specified in the flow diagram block or blocks.
[0086] Accordingly, blocks of the block diagrams and flow diagrams support combinations of means for performing the specified functions, combinations of elements or steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flow diagrams, and combinations of blocks in the block diagrams and flow diagrams, can be implemented by special-purpose, hardware-based computer systems that perform the specified functions, elements or steps, or combinations of special-purpose hardware and computer instructions.
[0087] Conditional language, such as, among others, "can," "could," "might," or "may," unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain implementations could include, while other implementations do not include, certain features, elements, and/or operations. Thus, such conditional language is not generally intended to imply that features, elements, and/or operations are in any way required for one or more implementations or that one or more implementations necessarily include logic for deciding, with or without user input or prompting, whether these features, elements, and/or operations are included or are to be performed in any particular implementation.
[0088] Many modifications and other implementations of the disclosure set forth herein will be apparent having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the disclosure is not to be limited to the specific implementations disclosed and that modifications and other implementations are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
[0089] In one example embodiment, there is disclosed a method. The method may include generating, by a user device, a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device. The method may also include sending, by the user device to the host device, the service request. The service request may be sent using a discovery protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request.
[0090] The USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol may include an Application Service Platform (ASP) coordination protocol. The one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
[0091] The method may further include receiving, by the user device, a service response from the host device and establishing, by the user device based at least in part on the service response, a connection to the host device. The discovery protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection. The method may further include sending, by the user device, information to the host device using the USB protocol for wireless communication. The information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication. The second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
[0092] In one embodiment, the service request may be sent to a plurality of devices that include the host device. The method may also include determining, by the user device, a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response. The method may further include determining, by the user device, the host device to which to establish the connection based at least in part on the first indication and the second indication.
[0093] In one embodiment, the host device may include a docking system. Sending the information to the host device may cause performance of a service by a peripheral device in communication with the docking system, in one embodiment. Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information. [0094] In another example embodiment, there is disclosed one or more computer- readable media storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform various operations. Such operations may include generating a service request to utilize an Application Service Platform (ASP) coordination protocol. The operations may also include sending, to the host device, the service request. The service request may be sent using a Media Agnostic USB protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request.
[0095] The USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication. The one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
[0096] The operations may further include receiving a service response from the host device and establishing, based at least in part on the service response, a connection to the host device. The (ASP) coordination protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection. The operations may further include sending information to the host device using the USB protocol for wireless communication. The information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication. The second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
[0097] In one embodiment, the service request may be sent to a plurality of devices that include the host device. The operations may also include determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response. The operations may further include determining the host device to which to establish the connection based at least in part on the first indication and the second indication. [0098] In one embodiment, the host device may include a docking system. Sending the information to the host device may cause performance of a service by a peripheral device in communication with the docking system, in one embodiment. Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
[0099] In another example embodiment, there is disclosed an apparatus. The apparatus may include means for generating a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device. The apparatus may also include sending, to the host device, the service request. The service request may be sent using a discovery protocol, which may include an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request.
[00100] The USB protocol for wireless communication may include a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol may include an Application Service Platform (ASP) coordination protocol. The one or more connection capabilities may include at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
[00101] The apparatus may further include means for receiving a service response from the host device and establishing, based at least in part on the service response, a connection to the host device. The discovery protocol of the user device may invoke the USB protocol for wireless communication with the host device over the established connection. The apparatus may further include means for sending information to the host device using the USB protocol for wireless communication. The information sent to the host device may include first information associated with a service and second information associated with the USB protocol for wireless communication. The second information may include the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
[00102] In one embodiment, the service request may be sent to a plurality of devices that include the host device. The apparatus may also include means for determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response. The apparatus may further include means for determining the host device to which to establish the connection based at least in part on the first indication and the second indication.
[00103] In one embodiment, the host device may include a docking system. The apparatus may also include means for sending the information to the host device. Such information may be associated with a service, which may include at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
[00104] In another example embodiment, there is disclosed a system. The system may include one or more radios, one or more antennas, at least one memory that stores computer-executable instructions, and at least one processor configured to access the at least one memory, wherein the at least one processor is configured to execute the computer-executable instructions perform various functions. For example, the at least one processor may be configured to execute the computer-executable instructions to receive information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system. The at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
[00105] The at least one processor may also be configured to determine at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy. The at least one processor may further be configured to send, to a user device, a message using the Application Service Platform (ASP) coordination protocol. The message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment. In another embodiment, the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
[00106] The at least one processor may be further configured to receive, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, establish a connection to the user device to enable accessing of the at least one second service.
[00107] In one embodiment, the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service. The at least one processor may be further configured to, after establishing the connection, send the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
[00108] In one embodiment, the at least one processor may be further configured to, when the at least one first service does not include the at least one second service received from the user device, send a message to the user device indicating that a connection to the system has been denied. In another embodiment, the at least one processor may be further configured to, when the at least one first service does not include the at least one second service received from the user device, send, to the user device, an indication of at least a portion of the at least one first service. The at least one processor may be further configured to receive, from the user device, a response to the confirmation request. The response may include the at least a portion of the at least one service. The at least one processor may be further configured to enable access to the at least a portion of the at least one service.
[00109] In one embodiment, the user device may include a first user device. According to this embodiment, the at least one processor may be further configured to receive, from a second user device, a request for at least one third service. The at least one processor may be further configured to determine that the at least one first portion comprises the at least one third service, and determine that the at least one third service is not accessible to the second user device based at least in part on the at least one policy. The at least one processor may further be configured to send an indication to the second user device that a connection to the system has been denied.
[00110] In another example embodiment, there is disclosed one or more computer- readable media for storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform various operations. The operations may include receiving information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system. The at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
[00111] The operations may further include determining at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy. The at least one processor may further be configured to send, to a user device, a message using the Application Service Platform (ASP) coordination protocol. The message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment. In another embodiment, the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
[00112] The operations may further include receiving, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, establishing a connection to the user device to enable accessing of the at least one second service.
[00113] In one embodiment, the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service. The operations may further include, after establishing the connection, sending the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
[00114] In one embodiment, the operations may also include, when the at least one first service does not include the at least one second service received from the user device, sending a message to the user device indicating that a connection to the system has been denied. In another embodiment, the operations may further include, when the at least one first service does not include the at least one second service received from the user device, sending, to the user device, an indication of at least a portion of the at least one first service. The operations may further include receiving, from the user device, a response to the confirmation request. The response may include the at least a portion of the at least one service. The operations may further include enabling access to the at least a portion of the at least one service.
[00115] In one embodiment, the user device may include a first user device. According to this embodiment, the operations performed by the at least one processor may also include receiving, from a second user device, a request for at least one third service. The operations may further include determining that the at least one first portion comprises the at least one third service, and determining that the at least one third service is not accessible to the second user device based at least in part on the at least one policy. The operations may further include sending an indication to the second user device that a connection to the system has been denied.
[00116] In another example embodiment, there is disclosed an apparatus. The apparatus may include means for receiving information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system. The at least one policy may indicate a predetermined number of user devices that are permitted to access the one or more services.
[00117] The apparatus may further include means for determining at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy. The apparatus may further include means for sending, to a user device, a message using the Application Service Platform (ASP) coordination protocol. The message may include an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service, in one embodiment. In another embodiment, the message may further include a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
[00118] The apparatus may further include means for receiving, from the user device, a request for at least one second service, and when the at least one first service includes the at least one second service, means for establishing a connection to the user device to enable accessing of the at least one second service.
[00119] In one embodiment, the at least one second service from the user device may include an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service. The apparatus may further include, after establishing the connection, means for sending the information to a host device of the one or more respective host devices. The sending may cause performance of the third service using the USB protocol for wireless communication.
[00120] In one embodiment, the apparatus may also include, when the at least one first service does not include the at least one second service received from the user device, means for sending a message to the user device indicating that a connection to the system has been denied. In another embodiment, the apparatus may further include, when the at least one first service does not include the at least one second service received from the user device, means for sending, to the user device, an indication of at least a portion of the at least one first service. The apparatus may further include means for receiving, from the user device, a response to the confirmation request. The response may include the at least a portion of the at least one service. The apparatus may further include means for enabling access to the at least a portion of the at least one service.
[00121] In one embodiment, the user device may include a first user device. According to this embodiment, the apparatus may also include means for receiving, from a second user device, a request for at least one third service. The apparatus may further include means for determining that the at least one first portion comprises the at least one third service, and means for determining that the at least one third service is not accessible to the second user device based at least in part on the at least one policy. The apparatus may further include means for sending an indication to the second user device that a connection to the system has been denied.

Claims

Claims What is claimed is:
1. A method comprising:
generating, by a user device, a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device;
sending, by the user device to the host device, the service request, wherein the service request is sent using a discovery protocol, the discovery protocol comprising an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request;
receiving, by the user device, a service response from the host device;
establishing, by the user device based at least in part on the service response, a connection to the host device;
invoking, by the discovery protocol of the user device, the USB protocol for wireless communication with the host device over the established connection; and
sending, by the user device to the host device, information using the USB protocol for wireless communication.
2. The method of claim 1, wherein the USB protocol for wireless communication comprises a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol comprises an Application Service Platform (ASP) coordination protocol.
3. The method of claim 1, wherein the service request is sent to a plurality of devices, the plurality of devices comprising the host device, and wherein the method further comprises:
determining, by the user device, a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response; and
determining, by the user device, the host device to which to establish the connection based at least in part on the first indication and the second indication.
4. The method of claim 1, wherein the one or more connection capabilities comprise at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
5. The method of claim 1, wherein the information sent to the host device comprises: first information associated with a service; and
second information associated with the USB protocol for wireless communication, the second information comprising the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
6. The method of claim 1, wherein the host device comprises a docking system, and wherein sending the information to the host device causes performance of a service by a peripheral device in communication with the docking system.
7. The method of claim 1, wherein the information is associated with a service, the service comprising at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
8. One or more computer-readable media storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform operations comprising:
generating a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device;
sending the service request, wherein the service request is sent using an
Application Service Platform (ASP) coordination protocol, the ASP coordination protocol comprising an identification of the USB protocol for wireless communication, one or more connection capabilities, and a maximum data payload size of one or more packets associated with the service request;
receiving a service response from the host device;
establishing, based at least in part on the service response, a connection to the host device; invoking, by the ASP coordination protocol, the USB protocol for wireless communication with the host device over the established connection; and
sending information to the host device using the USB protocol for wireless communication.
9. The one or more computer-readable media of claim 8, wherein the USB protocol for wireless communication comprises a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication.
10. The one or more computer-readable media of claim 8, wherein the service request is sent to a plurality of devices, the plurality of devices comprising the host device, and wherein the at least one processor is further configured to execute the computer- executable instructions to perform the operations comprising:
determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response; and
determining the host device to which to establish the connection based at least in part on the first indication and the second indication.
11. The one or more computer-readable media of claim 8, wherein the one or more connection capabilities comprise at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
12. The one or more computer-readable media of claim 8, wherein the information sent to the host device comprises:
first information associated with a service; and
second information associated with the USB protocol for wireless communication, the second information comprising the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
13. The one or more computer-readable media of claim 8, wherein the host device comprises a docking system, and wherein sending the information to the host device causes performance of a service by a peripheral device in communication with the docking system.
14. The one or more computer-readable media of claim 8, wherein the information is associated with a service, the service comprising at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
15. A system comprising:
one or more radios;
one or more antennas;
at least one memory that stores computer-executable instructions; and
at least one processor configured to access the at least one memory, wherein the at least one processor is configured to execute the computer-executable instructions to:
receive information associated with at least one policy for controlling access to one or more services provided by one or more respective host devices in communication with the system;
determine at least one first service of the one or more services for accessing, the determination based at least in part on the at least one policy;
send, to a user device, a message using the Application Service Platform (ASP) coordination protocol, the message comprising an identification of the at least one first service, a status associated with the at least one first service, and a description of the at least one first service;
receive, from the user device, a request for at least one second service; and when the at least one first service comprises the at least one second service, establish a connection to the user device to enable accessing of the at least one second service.
16. The system of claim 15, wherein the at least one second service from the user device comprises an indication of a USB protocol for wireless communication and an indication of a third service, wherein the request comprises information associated with the third service, and wherein the at least one processor is further configured to: after establishing the connection, send the information to a host device of the one or more respective host devices, the sending causing performance of the third service using the USB protocol for wireless communication.
17. The system of claim 15, the at least one processor further configured to:
when the at least one first service does not comprise the at least one second service received from the user device, send a message to the user device indicating that a connection to the system has been denied.
18. The system of claim 15, the at least one processor further configured to:
when the at least one first service does not comprise the at least one second service received from the user device, send, to the user device, an indication of at least a portion of the at least one first service;
receive, from the user device, a response to the confirmation request, the response comprising the at least a portion of the at least one service; and
after receiving the response, establish a connection to the user device to enable access to the at least a portion of the at least one service.
19. The system of claim 15, wherein the user device comprises a first user device, and wherein the at least one processor is further configured to:
receive, from a second user device, a request for at least one third service;
determine that the at least one first portion comprises the at least one third service; determine that the at least one third service is not accessible to the second user device based at least in part on the at least one policy; and
send an indication to the second user device that a connection to the system has been denied.
20. The system of claim 15, wherein the at least one policy indicates a predetermined number of user devices that are permitted to access the one or more services.
21. The system of claim 15, wherein the message further comprises a type of the system, one or more connection capabilities of the system, a description of the system, and a maximum data payload size for one or more packets associated with the message.
22. An apparatus comprising:
means for generating a service request to utilize a Universal Serial Bus (USB) protocol for wireless communication with a host device;
means for sending the service request, wherein the service request is sent using a discovery protocol, the discovery protocol comprising an identification of the USB protocol for wireless communication, one or more connection capabilities of the user device, and a maximum data payload size of one or more packets associated with the service request;
means for receiving a service response from the host device;
means for establishing, based at least in part on the service response, a connection to the host device;
means for invoking the USB protocol for wireless communication with the host device over the established connection; and
means for sending information to the host device using the USB protocol for wireless communication.
23. The apparatus of claim 22, wherein the USB protocol for wireless communication comprises a Media Agnostic USB protocol that enables multiple modes of communication for the wireless communication, and the discovery protocol comprises an Application Service Platform (ASP) coordination protocol.
24. The apparatus of claim 22, wherein the service request is sent to a plurality of devices, the plurality of devices comprising the host device, and wherein the apparatus further comprises:
means for determining a first indication of the USB protocol for wireless communication and a second indication of at least a portion of the one or more connection capabilities in the service response; and
means for determining the host device to which to establish the connection based at least in part on the first indication and the second indication.
25. The apparatus of claim 22, wherein the one or more connection capabilities comprise at least one of Transmission Control Protocol / Internet Protocol (TCP/IP) or Media Access Control (MAC) for sending the information to the host device.
26. The apparatus of claim 22, wherein the information sent to the host device comprises:
first information associated with a service; and
second information associated with the USB protocol for wireless communication, the second information comprising the identification of the USB protocol for wireless communication, the one or more connection capabilities, a type of the user device, a description of the user device, the maximum data payload size, a status associated with the service, and a description of the service.
27. The apparatus of claim 22, wherein the host device comprises a docking system, and wherein means for sending the information to the host device causes performance of a service by a peripheral device in communication with the docking system.
28. The apparatus of claim 22, wherein the information is associated with a service, the service comprising at least one of printing the information, displaying the information, storing the information, or playing audibly the information.
29. One or more computer-readable media for storing computer-executable instructions that, when executed by at least one processor, configure the at least one processor to perform any of the operations of claims 15-21.
PCT/US2013/077516 2013-05-16 2013-12-23 Systems and methods for discovering and utilizing wireless communication protocols for accessing services by wi-fi devices WO2014185955A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361823980P 2013-05-16 2013-05-16
US61/823,980 2013-05-16
US201361829391P 2013-05-31 2013-05-31
US201361829373P 2013-05-31 2013-05-31
US61/829,391 2013-05-31
US61/829,373 2013-05-31

Publications (1)

Publication Number Publication Date
WO2014185955A1 true WO2014185955A1 (en) 2014-11-20

Family

ID=51898750

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2013/077516 WO2014185955A1 (en) 2013-05-16 2013-12-23 Systems and methods for discovering and utilizing wireless communication protocols for accessing services by wi-fi devices

Country Status (1)

Country Link
WO (1) WO2014185955A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018199501A1 (en) * 2017-04-28 2018-11-01 삼성전자주식회사 Method for wireless connection and electronic device therefor
RU2701489C2 (en) * 2014-12-03 2019-09-26 Конинклейке Филипс Н.В. Wireless docking system for audio-video broadcasting
WO2019225829A1 (en) * 2018-05-23 2019-11-28 엘지전자 주식회사 Method for ma-usb-based p2p communication, and wireless device using same
CN116708062A (en) * 2022-09-30 2023-09-05 荣耀终端有限公司 Equipment management method and electronic equipment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040246909A1 (en) * 2003-06-03 2004-12-09 Samsung Electronics Co., Ltd. Apparatus and method for transferring USB transaction over wireless personal area network
JP2008072533A (en) * 2006-09-15 2008-03-27 Ricoh Co Ltd Wireless usb adapter, data processor, communication method and program
US20090047991A1 (en) * 2007-08-13 2009-02-19 Sony Ericsson Mobile Communications Ab Automatically enabling and disabling wireless networks
US20100069006A1 (en) * 2006-12-04 2010-03-18 Seung Ho Baek Priority-based wireless usb transfer service management apparatus and method thereof
US20100131687A1 (en) * 2008-11-26 2010-05-27 Azurewave Technologies, Inc. wireless remote usb hub apparatus and system thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040246909A1 (en) * 2003-06-03 2004-12-09 Samsung Electronics Co., Ltd. Apparatus and method for transferring USB transaction over wireless personal area network
JP2008072533A (en) * 2006-09-15 2008-03-27 Ricoh Co Ltd Wireless usb adapter, data processor, communication method and program
US20100069006A1 (en) * 2006-12-04 2010-03-18 Seung Ho Baek Priority-based wireless usb transfer service management apparatus and method thereof
US20090047991A1 (en) * 2007-08-13 2009-02-19 Sony Ericsson Mobile Communications Ab Automatically enabling and disabling wireless networks
US20100131687A1 (en) * 2008-11-26 2010-05-27 Azurewave Technologies, Inc. wireless remote usb hub apparatus and system thereof

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2701489C2 (en) * 2014-12-03 2019-09-26 Конинклейке Филипс Н.В. Wireless docking system for audio-video broadcasting
WO2018199501A1 (en) * 2017-04-28 2018-11-01 삼성전자주식회사 Method for wireless connection and electronic device therefor
KR20180121178A (en) * 2017-04-28 2018-11-07 삼성전자주식회사 Method for wireless connection and electronic device thereof
KR102343301B1 (en) * 2017-04-28 2021-12-24 삼성전자주식회사 Method for wireless connection and electronic device thereof
US11323880B2 (en) 2017-04-28 2022-05-03 Samsung Electronics Co., Ltd Method for wireless connection and electronic device therefor
WO2019225829A1 (en) * 2018-05-23 2019-11-28 엘지전자 주식회사 Method for ma-usb-based p2p communication, and wireless device using same
CN116708062A (en) * 2022-09-30 2023-09-05 荣耀终端有限公司 Equipment management method and electronic equipment

Similar Documents

Publication Publication Date Title
US11178236B2 (en) Systems and methods for enabling service interoperability functionality for wifi direct devices connected to a network via a wireless access point
JP5940733B2 (en) Host device, client device and method for wireless docking in a dynamic environment for multiple clients
US9418372B2 (en) Advertising, discovering, and using services through virtual access point interfaces
US10506068B2 (en) Cloud-based cross-device digital pen pairing
EP3005759B1 (en) Access control for wireless docking
US20130309973A1 (en) System and method for persistent wireless docking
WO2014113163A1 (en) Wireless docking service with direct connection to peripherals
US20140177615A1 (en) Method for scanning a wireless fidelity (wi-fi) direct device and terminal device for the same
EP3923549A1 (en) Data downloading method and related apparatus
US8942213B2 (en) Method and system for accessing storage devices
JP6001099B2 (en) System and method for performing a peer-to-peer connection
US20150012973A1 (en) Methods and apparatus for sharing a service between multiple virtual machines
WO2014185955A1 (en) Systems and methods for discovering and utilizing wireless communication protocols for accessing services by wi-fi devices
EP4050475B1 (en) Image forming apparatus, method, and system for firmware upgrade
US20150121364A1 (en) Method, User Equipment, and Application Server for Downloading Application
WO2019184107A1 (en) System and method for establishing data transmission channel, network storage apparatus, server, and storage medium
CN109981778B (en) Method, device, equipment and storage medium for realizing service of content distribution network
US20150012654A1 (en) Methods and apparatus for sharing a physical device between multiple physical machines
US20150012918A1 (en) Methods and apparatus for sharing a physical device between multiple virtual machines
US20170126855A1 (en) Packet Processing Method and Related Device That are Applied to Network Device
CN112383617A (en) Method, device, terminal equipment and medium for long connection
US20150010015A1 (en) Methods and apparatus for sharing a service between multiple physical machines
US10171984B2 (en) Method and device for enabling virtual docking in a wireless network
CN117014842A (en) Host connection method, device, system, equipment and storage medium
US9203958B1 (en) System, method, and computer program for communication channel-independent business flow management

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13884889

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13884889

Country of ref document: EP

Kind code of ref document: A1