Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEMS AND METHODS OF USING A MESH NETWORK TO SUPPORT A LEGACY PROTOCOL
Document Type and Number:
WIPO Patent Application WO/2016/137378
Kind Code:
A1
Abstract:
Systems and methods of using a mesh network to support a legacy protocol in a communication network are provided. In one exemplary embodiment, a method (1100, 1200) may be implemented by a mesh node (603, 703, 900) in a mesh network (602, 702) for emulating (1101) direct wireless communication between a client (601, 701) and a server (607, 707) according to a legacy attribute protocol (ATT) that does not support mesh networking. Further, the step of emulating may include replicating (1201), by each mesh node of the mesh network, a server database of the server to obtain a network proxy database. Further, the step of emulating may include forwarding (1203), by each mesh node, an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

Inventors:
ELMDAHL PER (SE)
SHEN WEI (SE)
ZHANG JINGCHENG (SE)
RIMHAGEN THOMAS (SE)
Application Number:
PCT/SE2015/051387
Publication Date:
September 01, 2016
Filing Date:
December 22, 2015
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ERICSSON TELEFON AB L M (PUBL) (SE)
International Classes:
G06F9/455; G06F17/30; H04L67/1095; H04L67/12; H04L67/56; H04L67/563; H04W84/20
Domestic Patent References:
WO2006120650A12006-11-16
Foreign References:
GB2512733A2014-10-08
US20080317047A12008-12-25
GB2517086A2015-02-11
US20060259617A12006-11-16
Other References:
"BLUETOOTH SPECIFICATION Version 4.2 Covered Core Package version: 4.2", BLUETOOTH SIG PROPRIETARY, 2 December 2014 (2014-12-02)
MIKHAYLOV K. ET AL.: "Multihop data transfer service for Bluetooth Low Energy''.", ITS TELECOMMUNICATIONS (ITST), 2013 13TH INTERNATIONAL CONFERENCE, pages 319 - 324
BOUCKAERT, S. ET AL.: "Strategies and Challenges for Interconnecting Wireless Mesh and Wireless Sensor Networks''.", WIRELESS PERSONAL COMMUNICATIONS, vol. 53, no. 3, pages 443 - 463, XP019796347, ISSN: 1572-834X
Attorney, Agent or Firm:
AYOUB, Nabil (Patent Unit Kista RAN2, Stockholm, SE)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1 . A method (1 100, 1200) performed by a mesh node (603, 703, 900) of a mesh network (602, 702) in a wireless communication system having a legacy protocol that requires a client (601 , 701 ) and a server (607, 707) to directly communicate wirelessly, comprising:

when the client and server are unable to directly communicate wirelessly, emulating

(1 101 ), by the mesh node in the mesh network, direct wireless communications between the client and the server, including:

replicating (1201 ) a server database of the server to obtain a network proxy database (800); and

forwarding (1203) an attribute protocol (ATT) procedure of the legacy protocol between the client and the server using the network proxy database. 2. The method of claim 1 , wherein replicating the server database includes:

receiving (1303), by the mesh node, from the server, an advertisement;

in response to receiving the advertisement, determining (1307), by the mesh node, whether the server database is represented by the network proxy database, wherein the network proxy database is a proxy for a plurality of server databases;

in response to determining that the server database is not represented by the network proxy database, downloading (1309), by the mesh node, from the server, the server database;

converting (131 1 ), by the mesh node, the server database to a proxy database (801 ,

803, 805), wherein the proxy database is a proxy for the server database; adding (1313), by the mesh node, the proxy database to the network proxy database;

and

sending (1315), from the mesh node, to another mesh node, the proxy database. 3. The method of claim 2, further comprising:

in response to receiving the advertisement, establishing (1305), by the mesh node, a connection to the server; and

in response to establishing the connection to the server, determining whether the server database is represented by the network proxy database.

4. The method of claim 3, further comprising:

delaying (1317), by the mesh node, a closing of the connection to the server to allow for the proxy database to be propagated through the mesh network. 5. The method of claim 2, wherein downloading the server database includes downloading at least a portion of the server database.

6. The method of claim 1 , further comprising:

discovering (1301 ), by the mesh node, the server.

7. The method of claim 2, wherein determining whether the server database is represented by the network proxy database includes determining whether the server is associated with the network proxy database. 8. The method of claim 2, wherein determining whether the server database is represented by the network proxy database includes determining whether a reference of the server is associated with the network proxy database.

9. The method of claim 2, wherein sending the proxy database includes sending, from the mesh node, to the other mesh node, a reference to the server.

10. The method of claim 2, wherein adding the proxy database to the network proxy database includes adding a reference of the server to the network proxy database. 1 1 . The method of claims 8-10, wherein the reference to the server includes an address of the server.

12. The method of claims 8-10, wherein the reference to the server includes a route to the server.

13. The method of claim 2, wherein adding the proxy database to the network proxy database includes recalculating an attribute handle for a field in the proxy database.

14. The method of claim 2, wherein forwarding the ATT procedure includes:

receiving (1401 ), by the mesh node, from the client, an attribute protocol request to read data;

in response to the request, determining (1403), by the mesh node, that the data is

available in the local network proxy database; and

in response to determining that the data is available in the local network proxy database, sending (1407), from the mesh node, to the client, the data.

15. The method of claim 2, wherein forwarding the ATT procedure includes: receiving (1501 ), by the mesh node, from the client, an attribute protocol request to read data;

in response to the request, determining (1503), by the mesh node, that the data is not available in the local network proxy database; and

in response to determining that the data is not available in the local network proxy

database, sending (1505), from the mesh node, towards the server using another mesh node, the request. 16. The method of claim 2, wherein forwarding the ATT procedure includes:

receiving (1601 ), by the mesh node, from the client, an attribute protocol request to write data; and

in response to the request, sending (1603), from the mesh node, towards the server using another mesh node, the request.

17. The method of claim 2, wherein forwarding the ATT procedure includes:

receiving (1601 ), by the mesh node, from the client, an attribute protocol command; and in response to the command, sending (1603), from the mesh node, towards the server using another mesh node, the command.

18. The method of claim 2, wherein forwarding the ATT procedure includes:

receiving (1601 ), by the mesh node, from the client, an attribute protocol indication; and in response to the indication, sending (1603), from the mesh node, towards the server using another mesh node, the indication.

19. The method of claim 2, wherein forwarding the ATT procedure includes:

receiving (1601 ), by the mesh node, from the client, an attribute protocol notification; and in response to the notification, forwarding (1603), from the mesh node, towards the

server using another mesh node, the notification.

20. The method of claim 1 , wherein replicating the server database includes:

receiving (1701 ), by the mesh node, from a second mesh node, a proxy database;

determining (1703), by the mesh node, that the proxy database is not represented by the network proxy database;

in response to the proxy database not being represented by the network proxy database, adding (1705), by the mesh node, the proxy database to the network proxy database; and

sending (1707), by the mesh node, to a third mesh node, the proxy database.

21 . A mesh node (603, 703, 900) of a mesh network (602, 702) in a wireless communication system having a legacy protocol that requires a client (601 , 701 ) and a server (607, 707) to directly communicate wirelessly, comprising a processor (901 ) and a memory (917, 919, 921 ), the memory containing instructions executable by the processor whereby the mesh node is operative to:

when the client and server are unable to directly communicate wirelessly, emulate

(1 101 ) direct wireless communications between the client and the server, including to:

replicate (1201 ) a server database of the server to obtain a network proxy database; and

forward (1203) an attribute protocol (ATT) procedure of the legacy protocol between the client and the server using the network proxy database.

22. A mesh node (603, 703, 900) of a mesh network (602, 702) in a wireless communication system having a legacy protocol that requires a client (601 , 701 ) and a server (607, 707) to directly communicate wirelessly, comprising:

when the client and server are unable to directly communicate wirelessly, means for emulating (181 1 ) direct wireless communications between the client and the server, including:

means for replicating (1813) a server database of the server to obtain a

network proxy database; and

means for forwarding (1815) an attribute protocol (ATT) procedure of the

legacy protocol between the client and the server using the network proxy database.

23. A non-transitory computer-readable medium encoded with a computer program, the computer program comprising computer-executable instructions that, when executed by a computing device of a mesh node (603, 703, 900) of a mesh network (602, 702) in a wireless communication system having a legacy protocol that requires a client (601 , 701 ) and a server (607, 707) to directly communicate wirelessly, causes the computing device to perform operations, wherein the operations are configured to:

when the client and the server are unable to directly communicate wirelessly, emulate

(1 101 ), by a mesh node (603, 703, 900) in a mesh network (602, 702), direct wireless communications between the client and the server, including:

replicating (1201 ) a server database of the server to obtain a network proxy database; and

forwarding (1203) an attribute protocol (ATT) procedure of the legacy protocol between the client and the server using the network proxy database.

Description:
SYSTEMS AND METHODS OF USING A MESH NETWORK TO

SUPPORT A LEGACY PROTOCOL

RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application Serial No.

62/126225, filed February 27, 2015, which is hereby incorporated by reference as if fully set forth herein.

FIELD OF DISCLOSURE

This application generally relates to wireless communications and more specifically to systems and methods of using a mesh network to support a legacy protocol. BACKGROUND

Bluetooth Low Energy (BLE) is a radio technology designed for low bitrate

communication between devices, consuming low amounts of energy. BLE devices such as temperature sensors are expected to work for long periods of time on a coin battery cell. The wireless radio range of these devices is typically on the order of meters to tens of meters.

BLE is a client-server architecture allowing clients to connect to servers within radio range, but not beyond that. In order to achieve wider range, mesh network solutions have been proposed. With mesh network solutions, a client may send messages to servers beyond radio range, by intermediate mesh nodes of a mesh network relaying the message.

FIG. 1 illustrates a BLE system. The legacy BLE architecture, on the Attribute Protocol (ATT) layer, consists of a client which connects to a server. The server holds a database of attributes, which the client acts upon. Clients discover servers by the servers advertising.

Advertisements are sent on special broadcast channels. There are several kinds of

advertisements; some of them are invitations for clients to connect. A server may only have one client connected to it at a time. FIG. 2 illustrates an attribute database for use in a BLE system. The attribute database contains records with three fields: Attribute Handle, Attribute Type, and Attribute Value.

A client connecting to server will be able to see the attribute database of the server. Through different procedures, it may read parts of the table. For example, some commands are used to retrieve Attribute Types. Other commands retrieve Attribute Types together with their corresponding Attribute Values. FIGS. 3A to 3D provides signal flow diagrams of ATT signals in a BLE system. The Attribute protocol has four classes of procedures: ATT Request/Response procedure, ATT Command procedure, ATT Indication/Confirmation procedure, and ATT Notification procedure. For BLE, there exist proprietary solutions for mesh networking. The Bluetooth Special Interest Group (BT SIG) is currently working on a standardized BLE mesh network solution.

Existing BLE mesh network proposals are based on the fact that all devices participating need to be upgraded to understand a new mesh network protocol. This means that existing (legacy) BLE devices cannot participate in a mesh network solution. Also, existing BLE mesh proposals lack the energy efficiency of legacy BLE. Furthermore, existing BLE mesh network proposals are inefficient in that they use only the three Advertisement Channels of BLE, and are not using the thirty-seven (37) data channels. Accordingly, there is a need for techniques to improve using a mesh network to support a legacy protocol. Furthermore, other desirable features and characteristics of the present disclosure may become apparent from the subsequent detailed description and claims, taken in conjunction with the accompanying figures and the foregoing technical field and background.

The Background section of this document is provided to place embodiments of the present disclosure in technological and operational context, to assist those of skill in the art in understanding their scope and utility. Unless explicitly identified as such, no statement herein is admitted to be prior art merely by its inclusion in the Background section.

SUMMARY

The following presents a simplified summary of the disclosure in order to provide a basic understanding to those of skill in the art. This summary is not an extensive overview of the disclosure and is not intended to identify key/critical elements of embodiments of the disclosure or to delineate the scope of the disclosure. The sole purpose of this summary is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.

In one exemplary embodiment, a method may facilitate wireless communication between a client node and a server node via a mesh network, even though neither the client node nor the server node may support mesh networking. The server node may expose a database of attributes to be acted upon by client nodes. Further, the method may be implemented by one of multiple mesh nodes forming the mesh network. The method may include storing a proxy representation of the server node's database at the mesh node. Further, the method may include receiving a message from the client node indicating an action to perform on an attribute in the server node's database. Also, the method may include serving as a proxy for the server node by acting upon the corresponding attribute in the proxy representation according to the message.

In another exemplary embodiment, a method may be implemented in a mesh network for emulating direct wireless communication between a client and a server according to a legacy attribute protocol (ATT) that does not support mesh networking. Further, the method may include replicating, by each mesh node of the mesh network, a server database of the server to obtain a network proxy database. Further, the method may include forwarding, by each mesh node, an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a method may include receiving, by a mesh node having a network proxy database, from a server having a server database, an advertisement. The network proxy database may be a proxy for one or more server databases. In response to the advertisement, the method may include establishing, by the mesh node, a connection to the server. In response to establishing the connection to the server, the method may include determining, by the mesh node, whether the server database is represented by the network proxy database. In response to determining that the server database is not represented by the network proxy database, the method may include downloading, by the mesh node, from the server, the server database. The method may include converting, by the mesh node, the server database to a proxy database. The proxy database may be a proxy for the server database. Also, the method may include adding, by the mesh node, the proxy database to the network proxy database. In addition, the method may include sending, from the mesh node, to another mesh node, the proxy database.

In another exemplary embodiment, a method may include receiving, by a mesh node, from a second mesh node, a proxy database. Further, the method may include determining, by the mesh node, that the proxy database is not represented by a network proxy database of the mesh node. In response to the proxy database not being represented by the network proxy database, the method may include adding, by the mesh node, the proxy database to the network proxy database. Also, the method may include sending, by the mesh node, to a third mesh node, the proxy database.

In another exemplary embodiment, a mesh network may be configured for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking. Further, the mesh network may include a plurality of mesh nodes. Each of the plurality of mesh nodes may be configured to replicate a server database of the server to obtain a network proxy database. Further, each of the plurality of mesh nodes may be configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a mesh node of a mesh network may be configured for emulating direct wireless communication between a client and a server according to a ATT that does not support mesh networking. The mesh node may be configured to include a processor operatively coupled to a memory. The memory may be configured to store instructions executable by the processor and data such as a network proxy database. The processor may be configured to replicate a server database of the server to obtain a network proxy database. Also, the processor may be configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a non-transitory computer-readable medium encoded with a computer program, the computer program comprising computer-executable instructions that when executed by a computing device causes the computing device to perform operations, wherein the operations may be configured to, in a mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking, replicate a server database of the server to obtain a network proxy database. Further, the operations configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is illustrated by way of examples, embodiments and the like and is not limited by the accompanying figures, in which like reference numbers indicate similar elements. Elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. The figures along with the detailed description are

incorporated and form part of the specification and serve to further illustrate examples, embodiments and the like, and explain various principles and advantages, in accordance with the present disclosure, where:

FIG. 1 illustrates a Bluetooth Low Energy (BLE) system.

FIG. 2 illustrates an attribute database for use in a Bluetooth Low Energy (BLE) system.

FIGS. 3A-3D provides signal flow diagrams of Attribute Protocol (ATT) signals in a Bluetooth Low Energy (BLE) system.

FIG. 4 provides a flow chart of one embodiment of a method of replicating a server database by a mesh node of a mesh network in accordance with various aspects described herein.

FIG. 5 provides a flow chart of another embodiment of a method of replicating a server database by a mesh node of a mesh network in accordance with various aspects described herein.

FIG. 6 provides a signal flow diagram of one embodiment of a system using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 7 provides a signal flow diagram of another embodiment of a system using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 8 illustrates one embodiment of a proxy database and a network proxy database of a mesh node in accordance with various aspects described herein. FIG. 9 illustrates one embodiment of a mesh node in accordance with various aspects described herein.

FIG. 10 is a flowchart of one embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 11 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 12 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 13 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 14 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 15 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 16 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 17 is a flowchart of another embodiment of a method of using a mesh network to support a legacy protocol in accordance with various aspects described herein.

FIG. 18 illustrates another embodiment of a mesh node in accordance with various aspects described herein.

DETAILED DESCRIPTION

For simplicity and illustrative purposes, the present disclosure is described by referring mainly to exemplary embodiments thereof. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, it will be readily apparent to one of ordinary skill in the art that the present disclosure may be practiced without limitation to these specific details. In this description, well known methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure.

The present disclosure includes a description of systems and methods of using a mesh network to support a legacy protocol. To perform this, mesh nodes may interrogate all servers which are part of the network. The database of each server may then be distributed to all mesh nodes, as a proxy database. The result is that all mesh nodes may contain a proxy

representation of the union of all server databases, herein called the network proxy database. As a result, a client connecting to any mesh node may "see" the database of all servers in the network.

The mesh nodes may have the task of discovering new servers entering the network, then may obtain a copy of all or a portion of the database of the server, and then may distribute the copy among all or a portion of the mesh nodes in the mesh network.

This disclosure describes systems and methods of using a mesh network to support a legacy protocol including database replication and ATT procedure forwarding. For example, FIG. 4 provides a flow chart of one embodiment of a method 400 of replicating a server database by a mesh node of a mesh network in accordance with various aspects described herein. Mesh nodes may discover new servers by listening to the servers' advertising, as referenced at blocks 401 and 403. By comparing the address of an advertising server with a network proxy database of the mesh node, the mesh node may determine if it already has a proxy database of the advertising server, as referenced at block 405. If the mesh node already has the proxy database of the advertising server, then the mesh node may take no further action.

If the mesh node does not have a proxy database of the advertising server, the mesh node may try to connect to the advertising server, as referenced at blocks 407 and 409. If the mesh node fails to connect to the advertising server (maybe because of another mesh node succeeding), the mesh node may try again until it succeeds or it receives the proxy database from another (possibly the succeeding) mesh node. If the mesh node succeeds, the mesh node may download all or a portion of the database of the advertising server, which may then become the proxy database of the advertising server, as referenced at blocks 411 and 413. The mesh node may then distribute a copy of the proxy database to all or a portion of mesh nodes in the mesh network, as referenced at block 415. The mesh node may also supply an address or route or reference to the advertising server, so a remote mesh node may find a route from itself through the mesh network to the advertising server. A mesh node receiving a proxy database adds it to its network proxy database, together with the address, route, reference or the like of the advertising server.

As only one client may connect to a server at a time, the mesh node (acting as a client) essentially locks the server from being connected to other mesh nodes which have received the same advertisement. By doing so, only one mesh node may download the database of the server. Furthermore, if the connection to the server is open for a certain time after downloading the database of the server, the mesh node may have time to distribute the proxy database to its (and the server's) neighbor mesh nodes, as referenced at block 417. Hence, it may not be necessary for other mesh nodes to download the database from the server. The mesh node may then close the connection to the server, as referenced at block 419.

FIG. 5 provides a flow chart of another embodiment of a method 500 of replicating a server database by a mesh node of a mesh network in accordance with various aspects described herein. The mesh node may receive all or a portion of a proxy database from another mesh node, as referenced at block 501 . The mesh node may determine whether it already has the proxy database, as referenced at block 503. As the Attribute handle needs to be unique for each proxy database (including a mesh node's network proxy database), each mesh node needs to recalculate Attribute Handles for all fields in the proxy database. The Attribute Type needs to be kept. The Attribute Value may be omitted, as it may be retrieved by ATT procedure forwarding. If the mesh node determines that it does not have the proxy database, then the mesh node may add the proxy database to its own network proxy database, as referenced at block 505.

Some records of the server database may not be relevant to forward to other mesh nodes. This may include some housekeeping records such as at the start of the server database. A client connecting to the mesh node may be able to see the network proxy database. The mesh node may store in its network proxy database all or a portion of each server's attribute table. If a client requests data which exists locally in the network proxy database of the mesh node, then the mesh node may immediately reply with a value (as in legacy BLE) read from the network proxy database.

Furthermore, the mesh node that the client connects to may route the connection to the mesh node that distributed the database of the server, as referenced at block 507. The mesh node that distributed the server's database may then establish a connection to the server in order to handle ATT Indications or ATT notifications.

A client doing an ATT Request for reading data, if the value is stored locally, the mesh node immediately responds with the data. If the data is not stored locally, or if the request is a write request, the mesh node routes the request, through the mesh network, to the server. The server then replies back with the value. For a client doing an ATT Command, the mesh node routes the ATT Command, through the mesh network, to the server. For a server sending an ATT Indication, the mesh node forwards the ATT Indication, through the mesh network, to the client. For a server sending an ATT Notification, the mesh node forwards the ATT Notification, through the mesh network, to the client.

For example, FIG. 6 provides a signal flow diagram of one embodiment of a system 600 using a mesh network 602 to support a legacy protocol in accordance with various aspects described herein. In FIG. 6, the system 600 may include a client 601 , the mesh network 602, and a server 607. The mesh network 602 may include a first mesh node 603 and a second mesh node 605. As shown in FIG. 6, the client 601 may send, towards the server 607, an ATT Request message, as described at reference 611. In one example, the ATT Request message may indicate a request to perform a function such as reading data, writing data, providing status or control information, or the like. The mesh network 602 may receive the ATT Request message such as the first mesh node 603 receiving the ATT Request message from the client 601 . In one example, the first mesh node 603 may be proximate the client 601 sufficient to allow the client 601 and the first mesh node 603 to directly communicate wirelessly. The first mesh node 603 may determine that the ATT Request message indicates a request to perform a function. The first mesh node 603, acting as a proxy for the server 607, may determine that it is capable of performing the function on behalf of the server 607. In response, the first mesh node 603 may perform the function and may send an ATT Response message that includes an indication associated with performing the function, as described at reference 621. In one example, the first mesh node 603 may determine that the ATT Request message indicates a request to read certain data. In response, the first mesh node 603 may determine that the certain data is stored in its network proxy database. In response, the first mesh node 603 may read the certain data and may send an ATT Response message that includes the certain data to the client 601 .

In another example, FIG. 7 provides a signal flow diagram of another embodiment of a system 700 using a mesh network to support a legacy protocol in accordance with various aspects described herein. In FIG. 7, the system 700 may include a client 701 , a mesh network 702, and a server 707. The mesh network 702 may include a first mesh node 703 and a second mesh node 705. The client 701 may send, towards the server 707, an ATT Request message to read data, as described at reference 711. The first mesh node 703, acting as a proxy for the server 707, may determine that the data is not stored in its network proxy database. In response, the first mesh node 703 may forward the ATT Request message towards the second mesh node 705, as described at reference 713. The second mesh node 705 may be the mesh node that distributed the database of the server 707. In one example, the second mesh node 705 may be proximate the server 707 sufficient to allow them to directly communicate wirelessly. The second mesh node 705, acting as a proxy for the server 707, may determine that the data is not stored in its network proxy database. In response, the second mesh node 705 may forward the ATT Request message to the sever 707, as described at reference 715.

In FIG. 7, the server 707 may receive the ATT Request message, may read the data from its database, and may send an ATT Response message having the read data towards the client 701 , as described at reference 717. The mesh network 702 may receive the ATT

Response message such as the second mesh node 705 may receive the ATT Response message from the server 707. The second mesh node 705 may forward the ATT Response message towards the client 701 , as described at reference 719. The mesh network 702 may propagate the ATT Response message using one or more mesh nodes of the mesh network 702 towards the client 701. The first mesh node 703 may receive the ATT Response message and may forward the ATT Response message to the client 701 , as described at reference 721. The client 701 may receive the ATT Response message from the first mesh node 703 to obtain the read data.

FIG. 8 illustrates one embodiment of a network proxy database 800 of a mesh node in accordance with various aspects described herein. Each mesh node may include the network proxy database 800. Further, the network proxy database 800 may include one or more proxy databases 801 , 802 and 803. Each proxy database 801 , 802 and 803 may be a proxy for all or a portion of a database of a certain server.

FIG. 9 illustrates one embodiment of a mesh node 900 in accordance with various aspects described herein. In FIG. 9, the mesh node 900 may be configured to include a processor 901 that is operatively coupled to an input/output interface 905, a radio frequency (RF) interface 909, a network connection interface 911 , a random access memory (RAM) 917, a read only memory (ROM) 919, a storage medium 921 , an operating system 923, an application program 925, data 927, a communication subsystem 931 , a power source 933, another element, or any combination thereof. In FIG. 9, the processor 901 , which may also be referred to as a computing device, may be configured to process computer instructions and data. The processor 901 may be configured to be a computer processor or a controller. For example, the processor 901 may include two computer processors. In one definition, data is information in a form suitable for use by a computer. It is important to note that a person having ordinary skill in the art will recognize that the subject matter of this disclosure may be implemented using various operating systems or combinations of operating systems.

In the current embodiment, the input/output interface 905 may be configured to provide a communication interface to an input device, output device, or input and output device. The mesh node 900 may be configured to use an output device via the input/output interface 905. A person of ordinary skill will recognize that an output device may use the same type of interface port as an input device. For example, a USB port may be used to provide input to and output from the mesh node 900. The output device may be a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. The mesh node 900 may be configured to use an input device via the input/output interface 905 to allow a user to capture information into the mesh node 900. The input device may include a mouse, a trackball, a directional pad, a trackpad, a presence- sensitive input device, a presence-sensitive display, a scroll wheel, a digital camera, a digital video camera, a web camera, a microphone, a sensor, a smartcard, and the like. The presence-sensitive input device may include a digital camera, a digital video camera, a web camera, a microphone, a sensor, or the like to sense input from a user. The presence-sensitive input device may be combined with a display to form a presence-sensitive display. Further, the presence-sensitive input device may be coupled to the processor. The sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, another like sensor, or any combination thereof. For example, the input device 915 may be an accelerometer, a magnetometer, a digital camera, a microphone, and an optical sensor.

In FIG. 9, the RF interface 909 may be configured to provide a communication interface to RF components such as a transmitter, a receiver, and an antenna. The network connection interface 911 may be configured to provide a communication interface to a network 943a. The network 943a may encompass wired and wireless communication networks such as a local- area network (LAN), a wide-area network (WAN), a computer network, a wireless network, a telecommunications network, another like network or any combination thereof. For example, the network 943a may be a cellular network, a Wi-Fi network, and a near-field network. As previously discussed, the display interface 903 may be in communication with the network connection interface 911 , for example, to provide information for display on a remote display that is operatively coupled to the mesh node 900.

In this embodiment, the RAM 917 may be configured to interface via the bus 902 to the processor 901 to provide storage or caching of data or computer instructions during the execution of software programs such as the operating system, application programs, and device drivers. In one example, the mesh node 900 may include at least one hundred and twenty-eight megabytes (128 Mbytes) of RAM. The ROM 919 may be configured to provide computer instructions or data to the processor 901 . For example, the ROM 919 may be configured to be invariant low-level system code or data for basic system functions such as basic input and output (I/O), startup, or reception of keystrokes from a keyboard that are stored in a non-volatile memory. The storage medium 921 may be configured to include memory such as RAM, ROM, programmable read-only memory (PROM), erasable programmable read-only memory

(EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, floppy disks, hard disks, removable cartridges, flash drives. In one example, the storage medium 921 may be configured to include an operating system 923, an application program 925 such as a web browser application, a widget or gadget engine or another application, and a data file 927.

In FIG. 9, the processor 901 may be configured to communicate with a network 943b using the communication subsystem 931 . The network 943a and the network 943b may be the same network or networks or different network or networks. The communication functions of the communication subsystem 931 may include data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. For example, the communication subsystem 931 may include cellular communication, Wi-Fi communication, Bluetooth communication, and GPS communication. The network 943b may encompass wired and wireless communication networks such as a local-area network (LAN), a wide-area network (WAN), a computer network, a wireless network, a telecommunications network, another like network or any combination thereof. For example, the network 943b may be a cellular network, a Wi-Fi network, and a near-field network. The power source 933 may be configured to provide an alternating current (AC) or direct current (DC) power to components of the mesh node 900.

In FIG. 9, the storage medium 921 may be configured to include a number of physical drive units, such as a redundant array of independent disks (RAID), a floppy disk drive, a flash memory, a USB flash drive, an external hard disk drive, thumb drive, pen drive, key drive, a high-density digital versatile disc (HD-DVD) optical disc drive, an internal hard disk drive, a Blu- Ray optical disc drive, a holographic digital data storage (HDDS) optical disc drive, an external mini-dual in-line memory module (DIMM) synchronous dynamic random access memory (SDRAM), an external micro-DIMM SDRAM, a smartcard memory such as a subscriber identity module or a removable user identity (SIM/RUIM) module, other memory, or any combination thereof. The storage medium 921 may allow the mesh node 900 to access computer- executable instructions, application programs or the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied in storage medium 921 , which may comprise a computer-readable medium.

One or more embodiments herein may route Attribute Protocol (ATT) procedures (e.g., GATT procedures associated with Bluetooth Low Energy) through a mesh network between a client-side mesh node in direct wireless communication with a client and a server-side mesh node in direct wireless communication with a server. The client-side mesh node may emulate the server by relaying ATT procedures to and from the client on behalf of the server, as well as by storing and exposing to the client a replicated version of the server's attribute database. The server-side mesh node may emulate the client by relaying ATT procedures to and from the server on behalf of the client. In at least some embodiments, the server-side mesh node may also store and expose the replicated version of the server's attribute database. Regardless, routing the ATT procedures through the mesh network in this way may insulate the client and server from the network's mesh nature, meaning that the client and server need not support mesh networking. This in turn means that the client and server may wirelessly communicate even when they are not within wireless communication range of one another, an advantage that has heretofore required mesh networking support.

FIG. 10 is a flowchart of one embodiment of a method 1000 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1000 may facilitate wireless communication between a client node and a server node via a mesh network, even though neither the client node nor the server node supports mesh networking. Further, the server node may expose a database of attributes to be acted upon by client nodes. In FIG. 10, the method 1000 may start, for instance, at block 1001 where it may include storing, by one of multiple mesh nodes forming the mesh network, a proxy

representation of the server node's database at the mesh node. At block 1003, the method 1000 may include receiving a message from the client node indicating an action to perform on an attribute in the server node's database. At block 1005, the method 1000 may include serving as a proxy for the server node by acting upon the corresponding attribute in the proxy representation according to the message.

FIG. 11 is a flowchart of another embodiment of a method 1100 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1100 may be performed by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 11 , the method 1100 may start, for instance, at block 1101 where it may emulate, by the mesh node in the mesh network, direct wireless communications between the client and the server.

FIG. 12 is a flowchart of one embodiment of a method 1200 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1200 may be implemented by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 12, the method 1200 may start, for instance, at block 1201 where it may include replicating, by each mesh node of the mesh network, a server database of the server to obtain a network proxy database. At block 1203, the method 1200 may include forwarding, by each mesh node, an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

FIG. 13 is a flowchart of another embodiment of a method 1300 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1300 may be implemented by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. The server may be configured to include a server database. The mesh node may be configured to include a network proxy database. The network proxy database may be a proxy for one or more server databases. In FIG. 13, the method 1300 may start, for instance, at block 1301 where it may include discovering, by the mesh node, a server. At block 1303, the method 1300 may include receiving, by the mesh node, from the server, an advertisement. In response to receiving the advertisement, at block 1305, the method 1300 may include establishing, by the mesh node, a connection to the server. In response to establishing the connection to the server, at block 1307, the method 1300 may include determining, by the mesh node, whether the server database is represented by the network proxy database.

In FIG. 13, in response to determining that the server database is not represented by the network proxy database, at block 1309, the method 1300 may include downloading, by the mesh node, from the server, the server database. At block 1311 , the method 1300 may include converting, by the mesh node, the server database to a proxy database. The proxy database may be a proxy for the server database. At block 1313, the method 1300 may include adding, by the mesh node, the proxy database to the network proxy database. At block 1315, the method 1300 may include sending, from the mesh node, to another mesh node, the proxy database. At block 1317, the method 1300 may include delaying, by the mesh node, a closing of the connection to the server to allow for the proxy database to be propagated through the mesh network.

FIG. 14 is a flowchart of another embodiment of a method 1400 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1400 may be implemented by a mesh node of the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 14, the method 1400 may start, for instance, at block 1401 where it may include receiving, by the mesh node, from the client, an attribute protocol request to read data. In response to the request to read data, at block 1403, the method 1400 may include determining that the data is available in a network proxy database of the mesh node. In response to determining that the data is available, at block 1405, the method 400 may include reading the data from the network proxy database. At block 1407, the method 1400 may include sending, from the mesh node, to the client, the data.

FIG. 15 is a flowchart of another embodiment of a method 1500 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1500 may be implemented by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 15, the method 1500 may start, for instance, at block 1501 where it may include receiving, by the mesh node, from the client, an attribute protocol request to read data. In response to the request, at block 1503, the method 1500 may include determining that the data is not available in a network proxy database of the mesh node. In response to determining that the data is not available, at block 1505, the method may include sending, from the mesh node, towards the server using another mesh node, the request to read data.

FIG. 16 is a flowchart of another embodiment of a method 1600 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1600 may be implemented by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 16, the method 1600 may start, for instance, at block 1601 where it may include receiving, by the mesh node, from the client, an attribute protocol message corresponding to at least one of an attribute protocol request to write data, an attribute protocol command, an attribute protocol indication and an attribute protocol notification. In response to the message, at block 1603, the method 1600 may include forwarding, from the mesh node, towards the server using another mesh node, the attribute protocol message.

FIG. 17 is a flowchart of another embodiment of a method 1700 of using a mesh network to support a legacy protocol in accordance with various aspects described herein. The method 1700 may be implemented by a mesh node in the mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that may not support mesh networking. In FIG. 17, the method 1700 may start, for instance, at block 1701 where it may include receiving, from the mesh node, from a second mesh node, a proxy database. At block 1703, the method 1700 may include determining, by the mesh node, that the proxy database is not represented by a network proxy database of the mesh node. In response to the proxy database not being represented by the network proxy database, at block 1705, the method 1700 may include adding, by the mesh node, the proxy database to the network proxy database. At block 1707, the method 1700 may include sending, by the mesh node, to a third mesh node, the proxy database.

FIG. 18 illustrates another embodiment of a mesh node 1800 in accordance with various aspects described herein. In FIG. 18, the mesh node 1800 may include one or more processing circuits 1801 , a memory 1803, an RF component 1805, one or more antennas 1807, the like, or any combination thereof. The one or more processing circuits 1801 may include an emulating component or module 1811 . The emulating module 1811 may be configured to emulate direct wireless communications between a client and a server. Further, the emulating module 1811 may include a replicating component or module 1813, a forwarding component or module 1815, the like, or any combination thereof. The replicating module 1811 may be configured to replicate a server database of the server to obtain a network proxy database. Also, the forwarding module 1815 may be configured to forward an attribute protocol procedure of the legacy attribute protocol between the client and the server using the network proxy database.

In another embodiment, a method may facilitate wireless communication between a client node and a server node via a mesh network, even though neither the client node nor the server node support mesh networking. The server node may expose a database of attributes to be acted upon by client nodes. Further, the method may be implemented by one of multiple mesh nodes forming the mesh network. The method may include storing a proxy representation of the server node's database at the mesh node. Further, the method may include receiving a message from the client node indicating an action to perform on an attribute in the server node's database. Also, the method may include serving as a proxy for the server node by acting upon the corresponding attribute in the proxy representation according to the message.

In another embodiment, the method may include distributing the proxy representation to one or more other mesh nodes, as needed, for replication throughout the mesh network. In another embodiment, the method may include forwarding the message towards the server node, via zero or more other mesh nodes.

In another embodiment, the method may include performing an action on the attribute such as to read a type and/or value of the attribute.

In another embodiment, the method may include sending a response towards the client node that includes the type and/or value of the attribute.

In another embodiment, the method may include sending a response towards the client node that includes the type and/or value of the attribute and without forwarding the message towards the server.

In another embodiment, the method may include performing an action on the attribute such as to write a value of the attribute.

In another embodiment, the method may include serving as a proxy for the server node by emulating the server node from the perspective of the client node.

In another embodiment, the method may include acting as a client node from the perspective of the server node and acting as a server node from the perspective of the client node.

In another embodiment, the wireless communication may include Bluetooth Low Energy (BLE) communication.

In another embodiment, the method may include connecting to the server node as a client node to retrieve at least a portion of the server node's database.

In another embodiment, the method may include distributing the proxy representation to one or more other mesh nodes, as needed, for replication throughout the mesh network, and delaying closing of the connection to the server node until after said distribution is completed.

In another embodiment, the method may include generating the proxy representation as a replicated version of the server node's database, with unique attribute handles.

In another exemplary embodiment, a method may be implemented in a mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking. Further, the method may include replicating, by each mesh node of the mesh network, a server database of the server to obtain a network proxy database. Further, the method may include forwarding, by each mesh node, an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a method may be implemented in a mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking. Further, the method may include replicating, by each mesh node of the mesh network, a server database of the server to obtain a network proxy database. Further, the method may include forwarding, by each mesh node, an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another embodiment, the method may include receiving, by the mesh node having the network proxy database, from the server having the server database, an advertisement.

Further, the network proxy database may be a proxy for a plurality of server databases. In response to receiving the advertisement, the method may include establishing, by the mesh node, a connection to the server. In response to establishing the connection to the server, the method may include determining, by the mesh node, whether the server database is

represented by the network proxy database. In response to determining that the server database is not represented by the network proxy database, the method may include downloading, by the mesh node, from the server, the server database. The method may include converting, by the mesh node, the server database to a proxy database. The proxy database may be a proxy for the server database. Also, the method may include adding, by the mesh node, the proxy database to the network proxy database. In addition, the method may include sending, from the mesh node, to another mesh node, the proxy database.

In another embodiment, the method may include delaying, by the mesh node, a closing of the connection to the server to allow for the proxy database to be propagated through the mesh network.

In another embodiment, the method may include downloading the server database by downloading at least a portion of the server database.

In another embodiment, the method may include discovering, by the mesh node, the server.

In another embodiment, the method may include determining that the network proxy database is not associated with the server database by determining that the server is not associated with the network proxy database.

In another embodiment, the method may include determining that the network proxy database is not associated with the server database by determining that a reference of the server is not associated with the network proxy database.

In another embodiment, the method may include sending, from the mesh node, to the other mesh node, a reference to the server.

In another embodiment, the reference to the server may include an address of the server.

In another embodiment, the reference to the server may include a route to the server. In another embodiment, the method may include adding a reference of the server to the network proxy database.

In another embodiment, the method may include adding the proxy database to the network proxy database by recalculating an attribute handle for a field in the proxy database.

In another embodiment, the method may include receiving, by the mesh node, from the client, an attribute protocol request to read data. In response to the request, the method may include determining, by the mesh node, that the data is available. In response to determining that the data is available, the method may include sending, from the mesh node, to the client, the data.

In another embodiment, the method may include receiving, by the mesh node, from the client, an attribute protocol request to read data. In response to the request, the method may include determining, by the mesh node, that the data is not available. In response to determining that the data is not available, the method may include sending, from the mesh node, to a server using another mesh node, the request.

In another embodiment, the method may include receiving, by the mesh node, from the client, an attribute protocol request to write data. In response to the request, the method may include sending, from the mesh node, to a server using another mesh node, the request.

In another embodiment, the method may include receiving, by the mesh node, from the client, an attribute protocol command. In response to the command, the method may include sending, from the mesh node, to a server using another mesh node, the command.

In another embodiment, the method may include receiving, by the mesh node, from the client, an attribute protocol indication. In response to the indication, the method may include sending, from the mesh node, to a server using another mesh node, the indication.

In another embodiment, the method may include receiving, by the mesh node, from a client, an attribute protocol notification. In response to the notification, the method may include sending, from the mesh node, to a server using another mesh node, the notification.

In another embodiment, the method may include receiving, by the mesh node, from a second mesh node, a proxy database. Further, the method may include determining, by the mesh node, that the proxy database is not represented by the network proxy database. In response to the proxy database not being represented by the network proxy database, the method may include adding, by the mesh node, the proxy database to the network proxy database. Also, the method may include sending, by the mesh node, to a third mesh node, the proxy database.

In another exemplary embodiment, a mesh network may be configured for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking. Further, the mesh network may include a plurality of mesh nodes. Each of the plurality of mesh nodes may be configured to replicate a server database of the server to obtain a network proxy database. Further, each of the plurality of mesh nodes may be configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a mesh node of a mesh network may be configured for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking. The mesh node may be configured to include a memory configured to store a network proxy database and a processor operatively coupled to the memory. The processor may be configured to replicate a server database of the server to obtain a network proxy database. Also, the processor may be configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another exemplary embodiment, a non-transitory computer-readable medium encoded with a computer program, the computer program comprising computer-executable instructions that when executed by a computing device causes the computing device to perform operations, wherein the operations may be configured to, in a mesh network for emulating direct wireless communication between a client and a server according to a legacy ATT that does not support mesh networking, replicate a server database of the server to obtain a network proxy database. Further, the operations configured to forward an ATT procedure of the legacy ATT between the client and the server using the network proxy database.

In another embodiment, a mesh node of a mesh network in a wireless communication system having a legacy protocol that requires a client and a server to directly communicate wirelessly may allow the client and the server to indirectly communicate wirelessly. When the client and server are unable to directly communicate wirelessly, the mesh node may include means for emulating direct wireless communications between the client and the server. The means for emulating direct wireless communications between the client and the server may include means for replicating a server database of the server to obtain a network proxy database, and means for forwarding an ATT procedure of the legacy protocol between the client and the server using the network proxy database.

The previous detailed description is merely illustrative in nature and is not intended to limit the present disclosure, or the application and uses of the present disclosure. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding field of use, background or summary of the disclosure or the following detailed description. The present disclosure provides various examples, embodiments and the like, which may be described herein in terms of functional or logical block elements. Various techniques described herein may use a mesh network to support a legacy protocol. The various aspects described herein are presented as methods, devices (or apparatus), systems, or articles of manufacture that may include a number of components, elements, members, modules, nodes, peripherals, or the like. Further, these methods, devices, systems, or articles of manufacture may include or not include additional components, elements, members, modules, nodes, peripherals, or the like. References to "one embodiment," "an embodiment," "example embodiment," "various embodiments," and other like terms indicate that the embodiments of the disclosed technology so described may include a particular function, feature, structure, or characteristic, but not every embodiment necessarily includes the particular function, feature, structure, or characteristic. Further, repeated use of the phrase "in one embodiment" does not necessarily refer to the same embodiment, although it may.

Furthermore, the various aspects described herein may be implemented using standard programming or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computing device to implement the disclosed subject matter. The term "article of manufacture" as used herein is intended to encompass a computer program accessible from any computing device, carrier, or media. For example, a computer-readable medium may include: a magnetic storage device such as a hard disk, a floppy disk or a magnetic strip; an optical disk such as a compact disk (CD) or digital versatile disk (DVD); a smart card; and a flash memory device such as a card, stick or key drive. Additionally, it should be appreciated that a carrier wave may be employed to carry computer-readable electronic data including those used in transmitting and receiving electronic data such as electronic mail (e- mail) or in accessing a computer network such as the Internet or a local area network (LAN). Of course, a person of ordinary skill in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.

Throughout the specification and the claims, the following terms take at least the meanings explicitly associated herein, unless the context clearly dictates otherwise. Relational terms such as "first" and "second," and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The term "or" is intended to mean an inclusive "or" unless specified otherwise or clear from the context to be directed to an exclusive form. Further, the terms "a," "an," and "the" are intended to mean one or more unless specified otherwise or clear from the context to be directed to a singular form. The term "include" and its various forms are intended to mean including but not limited to.

Although the present disclosure describes specific examples, embodiments, and the like, various modifications and changes may be made without departing from the scope of the present disclosure as set forth in the claims below. For example, although the example methods, devices, systems, or articles of manufacture described herein are in conjunction with using a mesh network to support a legacy protocol, the skilled artisan will readily recognize that the example methods, devices, systems, or articles of manufacture may be used in other methods, devices, systems, or articles of manufacture and may be configured to correspond to such other example methods, devices, systems, or articles of manufacture as needed. Further, while at least one example, embodiment, or the like has been presented in the foregoing detailed description, many variations exist. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present disclosure. Any benefits, advantages, or solutions to problems that are described herein with regard to specific embodiments are not intended to be construed as a critical, required, or essential feature or element of any or all of the claims.

It is important to recognize that it is impractical to describe every conceivable

combination of components or methodologies for purposes of describing the claimed subject matter. However, a person having ordinary skill in the art will recognize that many further combinations and permutations of the subject innovations are possible. Accordingly, the claimed subject matter is intended to cover all such alterations, modifications and variations that are within the spirit and scope of the claimed subject matter.