Abstract:
A method for filtering requests in portable devices is described. Nonvolatile flash memory is used to store allowable client addresses. The discovery, service discovery, and connection filter algorithms reduces power and processing bandwidth required from portable, mobile devices.

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention pertains to wireless communication devices. More particularly, the present invention relates to a method to minimize interrupt service and power consumption for wireless connectivity devices based on device address and service endpoint filtering.  
         BACKGROUND OF THE INVENTION  
         [0002]    Wireless communication devices that are designed for mobile applications are typically implemented as short-range, short-lived connections. To establish connection, wireless devices utilize a protocol that includes discovery, service query, connection request, connection response, and connection. In addition, some protocols include a security phase, in which an authentication algorithm is used to verify the validity of the requesting device.  
           [0003]    Discovery is the process of determining which devices are currently within range. Typically, the initiator of the discovery exchanges device addresses and other information with the responder.  
           [0004]    A portable device can potentially encounter several devices which roam in and out of range. A device in search of services is often called a client. A device that offers the services is known as a server. Clients in constant search of a new domain will periodically discover what devices are in range. Examples of server devices include internet gateways, vending machines, printers, and other public service machines.  
           [0005]    When new devices are found, a portable roaming device will perform a service query to ascertain what services are available on the new devices. The service query involves establishing a connection to the new device at a well known service access point and exchanging database queries and responses in a format appropriate for the protocol. The response to a discovery, the negotiation of a connection to the service database, and the exchange of information all require bandwidth.  
           [0006]    Further, the responding device uses bandwidth in executing the protocol, searching its database, and formatting a response. One disadvantage of the prior art is that as personal information devices proliferate, and contain more and more ad-hoc wireless protocols, the possibility that hundreds of devices come into range, and each device must query all of the others, and collect service information, is high. As a result, an enormous amount of bandwidth will be required to execute the protocol, search the database, and format a response for each and every request.  
           [0007]    In addition, power is consumed in sending responses. Wireless communication devices mostly communicate either through radio or optical links. Radio links typically use a baseband protocol engine and a radio transceiver. One example of a radio link is Bluetooth.  
           [0008]    In contrast, optical links are usually achieved through infrared light. The Infra-red Data Association (IrDA) has a defined standard for linking two devices at any data rate up to the current maximum data rate of 4 Mbps. The power required to transfer either radio frequency energy or infrared energy is considerable. Therefore, responding to hundreds of service requests will also greatly reduce the battery life of devices.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]    The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:  
         [0010]    [0010]FIG. 1 shows a flowchart of one embodiment of a discovery filter algorithm;  
         [0011]    [0011]FIG. 2 shows a flowchart of one embodiment of a service discovery filter algorithm;  
         [0012]    [0012]FIG. 3 shows a flowchart of one embodiment of a connection filter algorithm;  
         [0013]    [0013]FIG. 4 shows a wireless communication system.  
     
    
     DETAILED DESCRIPTION  
       [0014]    A method of storing selected addresses as an authorized list of “friendly devices” is described. The devices of the authorized list are granted various levels of permission to discover, to view the services database, and to connect to a service endpoint through the use of filtering algorithms. The authorized list helps to minimize the use of bandwidth and reduce power consumption.  
         [0015]    [0015]FIG. 1 depicts an embodiment of a discovery filter algorithm. The algorithm is designed to filter out inquiries from unsupported client or server devices at the hardware, baseband controller, or communications processor engine level. The algorithm is initiated in operation  100  when one device makes a discovery inquiry with another device. Typically, the requesting device is the client device and the responding device is the server device. The requesting device, however, is not necessarily the client device and the responding device is not necessarily the server device. For example, a printer may actively seek to discover potential roaming devices to service. Even though the printer is the initiating device, the printer is a server device rather than a client device. The discovery algorithm does not change regardless of whether the initiating device is a server device or a client device. The discovery algorithm is available for use in both client and server devices.  
         [0016]    For one embodiment of the discovery filter algorithm of FIG. 1, the initiating device is the client device and the responding device is the server device. After receiving the discovery request from the client device in operation  110 , the algorithm of operation  120  determines whether the device is set to filter mode. The filter state bit is set by the user application stored in nonvolatile flash memory. If the filter state bit is not on, the algorithm of operation  190  sends the normal discovery response to the requesting device. If, however, the filter state bit is asserted, operation  130  determines if the client device address is in the filter list. The device addresses of approved or friendly devices are stored in a cache of non-volatile flash memory in this embodiment of the invention.  
         [0017]    If the address of the client device is found in the filter list in operation  130 , the algorithm determines whether the permission bit is set for the device in operation  140 . The server device will not approve the discovery request unless the client device is on the filter list. If the device is on the list, the permission bits are stored in the non-volatile memory array.  
         [0018]    If the discovery permission bit for the client device in operation  140  is not set, the client device is denied inquiry permission and the algorithm is terminated by operation  160 . Otherwise, if the discovery permission bit for the client device is set, then the server device sends the normal discovery response to the client device in operation  190 .  
         [0019]    If the server device does not find the address of the client address in the filter list in operation  130 , the algorithm in operation  150  determines whether the prompt state bit is asserted. The prompt state bit gives the user the option of being notified of discovery attempts. If the prompt state bit is not asserted, the client device is denied inquiry permission and the algorithm is terminated in operation  160 .  
         [0020]    If the prompt state bit is to be asserted, the user is given the option of deciding whether to allow the discovery operation in operation  170 . Like the discover filter list, the prompt state bit is set by the user application in the nonvolatile flash memory. In the event that the user does not allow the discovery operation, the client device is denied inquiry permission and the algorithm is terminated in operation  160 . Otherwise, the user allows the discovery operation and the server device sends the normal response to the discovery request in operation  190 .  
         [0021]    For a second embodiment of the discovery algorithm, the user is not given the option of allowing the inquiry attempt in operation  180 . In some protocols, the time span for the discovery process is too short for a user to reasonably respond to the prompt before the discovery process has ended. Therefore, the client device is denied the discovery request and the flow is the same as if a ‘no’ response had been received from the user.  
         [0022]    For a third embodiment of the discovery algorithm, the client device address is added to the filter list in the nonvolatile flash memory. The addition can be made either automatically or following the user&#39;s approval. The device address would then be available to the client device should the client device subsequently request a service discovery.  
         [0023]    The discovery algorithm can be implemented in either hardware or software. If a hardware design is chosen, the filter mechanism is implemented in the baseband protocol engine. If, however, a software design is chosen, the filter mechanism is implemented in the upper layer host stack. It is also possible for the algorithm to be implemented using both hardware and software at the same time.  
         [0024]    If the client device successfully discovers the address of the server device, the client device will next attempt to determine what services are available on the server device. FIG. 2 depicts an embodiment of a service discovery filter algorithm. In one example of FIG. 2, the client device is the initiating device and the server device is the responding device. The roaming client device is typically searching for public services such as internet gateways and printers.  
         [0025]    When the service discovery filter algorithm is initiated in operation  200 , a connection at the first layer of the protocol that supports service endpoints between two hosts is opened if software is used to implement the service discovery algorithm. If a hardware design is chosen instead, a state machine in a baseband processor will carry out the service discovery algorithm. The server device receives and decodes the client device&#39;s request to the service discovery address endpoint in operation  210 . A specific endpoint address is usually reserved for the service discovery traffic.  
         [0026]    In a software design of the service discovery filter algorithm, all implementations of the stack typically involve the same layers of the stack from the multiplexer layer on down. Because there are no other paths to top level services of the stack between the physical layer and the multiplexer layer that supports multiple endpoints, stack hardware or firmware engines can safely assume that all data traffic will have at least the headers necessary for layers up to the multiplexer layer. Therefore, filter engines, such as baseband processors, can pre-extract requests for connection to the service database server by looking at the endpoint address requested. The filter algorithm can be built into the host protocol stack at the multiplexer layer if the implementation of the device does not have baseband processing on the device hardware.  
         [0027]    A connection request for most protocols includes the device address of the device requesting the connection. Thus, in operation  230 , it is possible to filter service discovery requests by the requesting client device providing that the filter state bit is on in operation  220 . If the filter state bit is not on, then the service database endpoint connection request is passed on to the upper layer host protocol stack for normal processing in operation  290 . The filter state bit is stored in nonvolatile flash memory.  
         [0028]    If the filter state bit is on, the service discovery filter algorithm checks if the initiating client device address is in the filter list. If the device is not on the approved client list, the algorithm checks if the prompt state bit is on in operation  250 . The prompt state bit is typically stored in nonvolatile flash memory. If the prompt state bit is deasserted, operation  260  permits the connection to be rejected or the server device may choose to not respond at all. Otherwise, if the prompt state bit is asserted, the user is prompted to decide whether the request operation will be allowed in operation  270 . If the request is not allowed, in operation  260 , the server can either refuse to respond to the request or send a rejection for the connection request. If, however, the request is allowed, the service database endpoint connection request is passed on to the upper layer host protocol stack for normal processing in operation  290 .  
         [0029]    If in operation  230 , the requesting device is found in the filter list, then the algorithm of operation  240  determines whether the service discovery permission bit is set in the device. The permission bit is stored in nonvolatile memory along with the allowed or friendly device address. If the discovery permission bit is set in the server device, then the service database endpoint connection request is passed on to the upper layer host protocol stack for normal processing in operation  290 . If, however, the service discovery permission bit is not set in the server device, then the connection is rejected in operation  260 . The server device may choose to send a rejection to the client device or the server device may choose not to respond. Failing to respond will save power on the server device. However, failing to respond will leave the client device hanging until the request times out.  
         [0030]    For a second embodiment of the service discovery filter algorithm, the client device address is added to the approval list with an expiration time after the owner of the device is prompted for approval in operation  270 . It is possible that following the service discovery, a service endpoint for a particular service will be requested.  
         [0031]    If the roaming client device has been permitted to discover and connect to the server device&#39;s database, the roaming client device might want to connect to a service endpoint discovered during the services query from the database. Some services available on a device may be exposed to the public, however, and some other services may be kept private. The set of services exposed to the public is defined as a public service list. The connection filter algorithm shown in FIG. 3 determines whether to allow or disallow the connection. Like the discovery filter algorithm and the service discovery filter algorithm, the filter algorithm for the connection filter algorithm can exist either in the baseband protocol engine, which is likely part of the protocol device or in the upper layer host stack. The baseband protocol engine is often used because it saves bandwidth of the host processor by not needlessly interrupting the host processor. Regardless of whether the filter algorithm is stored in the baseband protocol engine or in the upper layer host stack, power is saved if the filter algorithm chooses not to respond to the request after filtering out the request.  
         [0032]    Once the connection filter algorithm is initiated in operation  300 , the connection request to the device endpoint is received and decoded in operation  310 . Next, the algorithm determines whether the filter state bit is on in operation  320 . The filter state bit is stored in nonvolatile flash memory. If the filter state bit is not on, the filter is bypassed and the service database endpoint connection request is passed on to the upper layer host protocol stack for normal processing in operation  390 .  
         [0033]    If the filter state bit is on, however, the connection filter algorithm determines if the initiating device address is in the filter list and if the request endpoint is on the public service list. If the initiating device address is in the filter list and the request endpoint is on the public service list, the connection filter algorithm determines whether the connection bit is set for the device in operation  340 . If the connection bit is set for the device, then the service database endpoint connection request is passed to the upper layer host protocol stack for normal processing in operation  390 . Otherwise, if the connection bit of the device is not set, the connection in operation  360  is rejected or fails to respond. Failing to respond will save power for the server device. The initiating device will time out when it does not receive the requested connection.  
         [0034]    If the initiating device address is not in the filter list or the request endpoint is not on the public service list, then the connection filter algorithm checks if the prompt state bit is on in operation  350 . The prompt state bit is typically stored in nonvolatile flash memory. If the prompt state bit is not on, the connection in operation  360  is either rejected or the server fails to respond. If the prompt state bit is on, the user is prompted to decide if the operation will be allowed in operation  370 . If the user allows the issuance in operation  380 , the service database endpoint connection request is passed on to the upper layer host protocol stack for normal processing in operation  390 . If, however, the user does not allow the issuance in operation  380 , the connection is either rejected of the server fails to respond in operation  360 .  
         [0035]    Some server and client devices may not offer services of general interest to roaming devices. It is desirable, however, for all devices to make services available to any device in a specific instance, such as exchanging business card information. As personal information devices proliferate, and contain more and more wireless protocols, there is a high probability that a large number of devices will come into range of each other. When the devices come into range of each other, the devices are likely to query each other to collect service information. This will be an order of n squared where n is the number of devices. The queries will take up bandwidth and consume power. Therefore, the ability to limit the ability of a random client to discover, view the services database, and connect to a service endpoint becomes even more valuable. Some processing power is still expended in order to filter the requests. Nevertheless, checking an authorized list of devices and avoiding unnecessary responses will require less power than to execute protocol and form a response every time.  
         [0036]    Embodiments of the present invention may be implemented in hardware or software, or a combination of both. However, preferably, embodiments of the invention may be implemented in computer programs executing on programmable computer systems each comprising at least one processor, a data storage system (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input data to perform the functions described herein and generate output information. The output information may be applied to one or more output devices, in known fashion.  
         [0037]    Each program may be implemented in a high level procedural or object oriented programming language to communicate with the computer system. However, the programs may be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language.  
         [0038]    Each such computer program may be stored on a storage media or device (e.g., hard disk drive, floppy disk drive, read only memory (ROM), CD-ROM device, flash memory device, digital versatile disk (DVD), or other storage device) readable by a general or special purpose programmable computer system, for configuring and operating the computer system when the storage media or device is read by the computer system to perform the procedures described herein. Embodiments of the invention may also be considered to be implemented as a machine-readable storage medium, configured for use with a computer system, where the storage medium so configured causes the computer system to operate in a specific and predefined manner to perform the functions described herein.  
         [0039]    An example of one such type of computer system is shown in FIG. 4. The components of a wireless communication computer system  400  includes a processor  410 , main memory  420 , read only memory  430 , voltage supply  440 , peripheral devices  450 , input device  460 , flash memory  470 , output device  480 , and bus  490 . The processor  410  is coupled to main memory  420  and the system bus  490 . In addition, the system bus is also coupled to read only memory  430 , a voltage supply  440 , peripheral devices  450 , an input device  460 , flash memory  470 , and an output device  480 . Wireless communication devices often utilize a battery to provide the voltage supply  440 . An example of a peripheral device  450  would be a baseband controller. The input  460  and output  480  devices enable the user to make operation requests and to respond to system queries. Finally, the flash memory  470  stores information such as device addresses  471 , filtering algorithms  472 , permission bits  473 , and state bits  474 .  
         [0040]    In the foregoing specification the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modification and changes may be made thereto without departure from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense.