Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

In embodiments of the present invention improved capabilities are
described for sending a single cast frame from a first node to a second
node in a mesh network; sending the single cast frame from the second
node to a third node in a mesh network; using the first node to detect
the single cast frame sent from the second node to the third node; and
interpreting this detection within the first node as an acknowledgement
of success in sending the single cast frame from the first node to the
second node. An additional method described herein may send a second
single cast from the second node to a third node in a mesh network,
interpret detection of the second single class frame within the first
node as an acknowledgement of success in sending the first single cast
frame from the first node to the second node.

Claims:

1. A method comprising: transmitting a frame from a source node to an
intermediate node; at the source node and during a time interval, failing
to detect transmission of the frame by the intermediate node; and
retransmitting the frame from the source node to the intermediate node
after expiration of the time interval.

2. The method of claim 1, further comprising: at the source node and
during the time interval, failing to receive a routed acknowledgement
frame from the intermediate node to the source node.

3. The method of claim 1, wherein the time interval includes a randomly
generated time interval.

6. The method of claim 1, wherein each of the source node and
intermediate node includes a mesh network node in a wireless mesh
network, and wherein the transmitting and retransmitting occur wirelessly
within the wireless mesh network.

7. A method comprising: receiving a frame at a destination node from an
intermediate node; transmitting a routed acknowledgement frame from the
destination node to the intermediate node; at the destination node and
during a time interval, failing to detect transmission of the routed
acknowledgement frame by the intermediate node; and retransmitting the
routed acknowledgement frame from the destination node to the
intermediate node after expiration of the time interval.

8. The method of claim 7, wherein the time interval includes a randomly
generated time interval.

11. The method of claim 7, wherein each of the destination node and the
intermediate node includes a mesh network node in a wireless mesh
network, and wherein the transmitting, retransmitting, and receiving all
occur wirelessly within the wireless mesh network.

12. A method comprising: transmitting a frame from a node to an
intermediate node; at the node and during a first time interval, failing
to detect transmission of the frame by the intermediate node; at the node
and during the first time interval, failing to detect transmission of a
routed acknowledgement frame from the intermediate node to the node;
retransmitting the frame from the node to the intermediate node after
expiration of the first time interval; receiving a second frame at the
node from the intermediate node; transmitting a second routed
acknowledgement frame from the node to the intermediate node; at the node
and during a second time interval, failing to detect transmission of the
second routed acknowledgement frame by the intermediate node; and
retransmitting the second routed acknowledgement frame from the node to
the intermediate node after expiration of the second time interval.

13. The method of claim 12, wherein the first time interval includes a
randomly generated time interval.

14. The method of claim 12, wherein the second time interval includes a
randomly generated time interval.

17. The method of claim 12, wherein each of the node and the intermediate
node includes a mesh network node in a wireless mesh network, and wherein
the transmitting, retransmitting, and receiving all occur wirelessly
within the wireless mesh network.

18. A system comprising: a mesh network node adapted to transmit a frame,
to detect transmission of the frame, to retransmit the frame after
failing to detect transmission of the frame during a first time interval,
to receive a second frame, to transmit a routed acknowledgement frame in
response to receiving the second frame, to detect transmission of the
routed acknowledgement frame, and to retransmit the routed
acknowledgement frame after failing to detect transmission of the routed
acknowledgement frame during a second time interval, wherein the mesh
network node retransmits the frame to an intermediate node after both
failing to detect transmission of the frame by the intermediate node
during the first time interval and failing to receive a routed
acknowledgement frame from the intermediate node during the first time
interval.

19. The system of claim 18, wherein the first time interval includes a
randomly generated time interval.

20. The system of claim 18, wherein the second time interval includes a
randomly generated time interval.

21. The system of claim 18, wherein the frame includes a unicast frame.

22. The system of claim 18, wherein the routed acknowledgement frame
includes a unicast routed acknowledgement frame.

Description:

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of U.S. application Ser. No.
13/525,491 filed Jun. 18, 2012, which is a continuation of U.S.
application Ser. No. 11/681,417 filed Mar. 2, 2007 (now U.S. Pat. No.
8,219,705 issued Jul. 10, 2012), which is a continuation-in-part of
commonly owned U.S. application Ser. No. 11/456,029 filed on Jul. 6,
2006, and is a continuation-in-part of commonly owned U.S. application
Ser. No. 11/425,917 filed on Jun. 22, 2006, which claims benefit of the
following commonly-owned U.S. Provisional Patent Applications: App. No.
60/763,835 filed on Jan. 31, 2006; App. No. 60/764,394 filed on Feb. 1,
2006; App. No. 60/765,810 filed on Feb. 7, 2006; and, App. No. 60/772,089
filed on Feb. 10, 2006. Each of the foregoing applications is
incorporated herein by reference in its entirety.

FIELD OF INVENTION

[0002] The invention herein disclosed generally refers to wireless
networks, and specifically to methods and systems for silent
acknowledgement of a routing in a mesh network.

BACKGROUND

[0003] Wireless communication networks have limitations when used for
building automation. Structural barriers that deflect or cause the radio
frequency signals of wireless networks can prevent timely transmission on
the network. Introduction of noise sources from other radio frequency
sources contribute to a reduction in quality and reliability. However,
wiring building automation devices is very costly and intrusive, while
severely limiting in flexibility and expandability.

[0004] Therefore there exists a need for a robust communication network
for building automation that overcomes the problems associated with
wireless networks without the high costs and inconvenience of wired
networks.

SUMMARY

[0005] In embodiments, the present invention provides a method and system
for sending a single cast frame from a first node to a second node in a
mesh network; sending the single cast frame from the second node to a
third node in a mesh network; using the first node to detect the single
cast frame sent from the second node to the third node; and interpreting
this detection within the first node as an acknowledgement of success in
sending the single cast frame from the first node to the second node.

[0006] In embodiments, a second single cast frame may be sent from the
second node to a third node in a mesh network, and detection of the
second single cast frame by the first node interpreted as an
acknowledgement of success in sending the first single cast frame from
the first node to the second node.

[0007] In embodiments, a single cast frame may be a routed single cast
frame. It may be routed based at least in part on a routing table.

[0008] In embodiments, a single cast frame may be related to a metadata, a
command, or some other form of data. A command may relate to including
and or excluding a node in a mesh network, to enabling a security
functionality, to a communication speed, to a communication channel, to a
communication channel availability, to a network security level, to a
network topology, to a network routing strategy, or some other command
type.

[0009] In embodiments, a network mandated speed may be 9.6 kbps, 40 kbps,
100 kbps, or some other communication speed.

[0010] In embodiments, a communication channel availability may be
associated with a single channel or a plurality of channels.

[0011] In embodiments, a network security level may be high, medium, low,
or some other network security level.

[0012] In embodiments, a single cast frame may be routed over a mesh
network topology that is an automation system network for controlling a
device. A device may be a plurality of devices. In embodiments, the mesh
network topology may be implemented within a home. A home mesh network
topology may be related to an audiovisual system, such as an audiovisual
system including an entertainment device. An entertainment device may be
a television, a signal conversion device, a DVR, a networked device, a
UPnP networked device, a satellite receiver, a cable converter, a VCR, a
digital video disc player, a video accessory, an audio amplifier, an
audio tuner, an audio amplifier-tuner combination, a CD player, a DVD
player, a high definition DVD player, an audio cassette player, a digital
audio tape player, an audio equipment, an equalizer, a phonograph player,
a video component, a streaming media player, an mp3 player, an audio file
player, and audio component, an audio-visual component, or some other
entertainment device.

[0013] In embodiments, the mesh network topology may be related to a
security system. A security system may include an alarm, a lock, a
sensor, a detector (such as a motion detector), or some other security
system component.

[0014] In embodiments, the mesh network may be a wireless mesh network.

[0015] In embodiments, a node within the mesh network may be a multi-speed
node.

[0016] These and other systems, methods, objects, features, and advantages
of the present invention will be apparent to those skilled in the art
from the following detailed description of the preferred embodiment and
the drawings.

BRIEF DESCRIPTION OF FIGURES

[0017] The invention will be more fully understood by reference to the
detailed description, in conjunction with the following figures, wherein:

[0018] FIG. 1 illustrates a mesh network which includes a number of
network nodes;

[0019]FIG. 2 illustrates a schematic of mesh network and node control
software;

[0020]FIG. 3 shows an example of a type of re-transmission hand shaking;

[0021]FIG. 4 shows an example of a type of re-transmission hand shaking;

[0022] FIG. 5 shows how simultaneous communication to even a small number
of nodes impacts communication on a mesh network;

[0023] FIG. 5A shows an inclusion controller used to include a new slave
on behalf of the network SIS.

[0056] FIG. 33B illustrates a simplified embodiment of the use of a
preamble during a dynamic enablement of a secondary channel selection.

DETAILED DESCRIPTION

[0057] The present invention relates to a reliable and low-cost control
and monitoring technology which enables embedded intelligence and
wireless communication for a variety of residential and light commercial
applications such as lighting and appliance control, automated meter
reading, thermostat and ventilation control, security, and residential
gateway connectivity. In embodiments, a mesh network node may transform
any stand-alone device into an intelligent networked device that may be
controlled and monitored wirelessly. The mesh network delivers high
reliability networking at a fraction of the cost of other technologies by
focusing on narrow bandwidth applications and substituting costly
hardware with innovative software solutions such as frame
acknowledgement, retransmission, collision avoidance, frame checksum, and
sophisticated routing algorithms to assure full home coverage.

[0058] One of the key features of the mesh network technology is the
routing capability of all the nodes in the network. The mesh network
automatically routes the signal from one node to the next thereby
extending the range. Rather than depending solely on line-of-sight
communications like other technologies, the mesh network is able to get
around obstacles by routing commands through other device-nodes in the
network when required. The mesh network technology also minimizes noise
and distortion problems caused by architectural obstacles and radio dead
spots using innovative transmission techniques such as 2-way
acknowledgement and alternative route seeking.

[0059] For example, FIG. 1 illustrates a mesh network 100 which includes a
number of network nodes. The user may command a light associated with
Node1 100A in a garage to turn off from Node4 100F in a master bedroom.
If the direct transmission to Node1 100A is blocked by some Radio
Frequency (RF) obstruction 102 (e.g. a stainless steel refrigerator in a
kitchen) Node4 100F automatically selects an alternate route, such as
through Node3 100C (e.g. a thermostat in a hallway), rerouting as many
times as is necessary to complete delivery of a command. An
acknowledgement is then sent back to Node4 100F confirming that the
command has been executed by Node1 100A.

[0060] The mesh network infrastructure is decentralized, with nodes
running as both client and as repeater to avoid central points of failure
and control. Every new component that is added to the network increases
path redundancy and reliability, with the degree of redundancy and signal
strength increasing as a function of node density. If the distance
between nodes is decreased by a factor of two, the resulting signal is at
least four times more powerful at the receiver.

[0061] A mesh network is also self-organizing and doesn't require manual
configuration. Because of this, adding new equipment or relocating
existing equipment may be as simple as plugging it in and turning it on.
The network discovers the new node and may automatically incorporate it
into the existing system. The mesh network technology may provide vastly
improved area coverage and reliability with virtually unlimited range.

[0062] Referring to FIG. 2, mesh network software 200 may be designed on
polling of functions, command complete callback function calls, and
delayed function calls. Software 200 may be split into two groups of
program modules: basis software and application software. Basis software
may include system startup code, low-level poll function 222, main poll
loop 202, protocol layers 204, and memory and timer 224 service
functions. Application software may include application hardware
initialization 210 and software initialization 212 functions, application
state machine 214, command complete callback functions 218, and a
received command handler 220 function. The application software may also
include hardware drivers.

[0063] Main loop 202 may call a list of protocol functions. Functions may
be designed to return to the caller as fast as possible to allow the
Central Processing Unit (CPU) to do other tasks. It is possible to
receive data, transfer data via the Universal Asynchronous Receive
Transmit (UART) and check user-activated buttons simultaneously.

[0064] When the application layer 208 requests a transmission of data to
another node in network 100, the protocol layer may add a frame header
and a checksum to the data before transmission. The protocol layer may
also handle frame retransmissions, as well as routing of frames through
repeater nodes to nodes that are not within direct RF reach. When the
frame transmission is completed an application specified transmit
complete callback function 218 may be called. The transmission complete
callback function 218 may include a parameter that indicates the
transmission result.

[0065] Application layer 208 may provide the interface to the
communications environment which is used by the application process. The
application software may consist of the following functions: the hardware
initialization function 210, software initialization function 212,
application state machine 214, command complete callback functions 218,
and a receive command handler function 220. The application implements
communication on the application level with other nodes in network 100.
At the application level may be a framework defined of device and command
classes to obtain interoperability between mesh network enabled products
from different vendors. The basic structure of these commands may provide
the capability to set parameters in a node and to request parameters from
a node responding with a report containing the requested parameters.

[0066] Wireless communication is by nature unreliable because a well
defined coverage area simply does not exist since propagation
characteristics are dynamic and unpredictable. The mesh network protocol
may minimize noise and distortion problems by using a transmission
mechanism that may include two re-transmissions to ensure reliable
communication. In addition, single casts are acknowledged by a receiving
node so the application is notified about how the transmission went.

[0067] FIGS. 3 and 4 show examples of this type of re-transmission hand
shaking The mesh network protocol may be designed to trade low latency at
the expense of handling simultaneously communication to a number of nodes
in the network. To obtain this the number of random backoff values is
limited to 4 (0, 1, 2, and 3).

[0068] FIG. 5 shows how simultaneous communication to even a small number
of nodes 100 may block the communication completely. Simultaneous
communication to nodes in the network which require a response from the
nodes in question should therefore be avoided in the application.

[0069] From a protocol point of view there may be many different types of
nodes, for example: Control nodes, Static Controller nodes, Installer
Controller nodes, Controller bridge nodes, Slave nodes, Routing Slave
nodes, and Enhanced Slave nodes. Controller nodes may store information
about other nodes in the network. The node information includes the nodes
each of the nodes can communication with (routing information). The
Installation node may present itself as a Controller node, which may
include extra functionality to help a professional installer setup,
configure, and troubleshoot a network. The Controller bridge node may
store information about the nodes in the network and in addition it may
generate Virtual Slave nodes. A virtual Slave node is a node residing on
another network accessible through the bridge.

[0070] A network may consist of slaves, a primary controller, and
secondary controllers. New nodes may be added and removed to or from the
network by using the primary controller. This may cause secondary
controllers and routing slaves to malfunction if, for instance, a
preferred repeater node is removed. Without automatic network updating a
new replication has to be made from the primary controller to all
secondary controllers, routing slaves should also be manually updated
with the changes. In networks with several controller and routing slave
nodes, this could cause difficulties the process is not automated. To
automate the process, an automatic network update scheme may be included
in the network protocol. To use this scheme a static controller could be
available in the network. This static controller may be dedicated to hold
a copy of the network topology and the latest changes that have occurred
to the network. The static controller used in the automatic update scheme
is called the Static Update Controller (SUC).

[0071] Each time a node is added, deleted or a routing change occurs, the
primary controller may send the node information to the SUC. Secondary
controllers may then ask the SUC if any updates are pending. The SUC may
then in turn respond with any changes since last time this controller
asked for updates. On the controller requesting an update may be called
to notify the application that a new node may have been added or removed
in the network. The SUC may hold a large number of changes of the
network. If a secondary controller requests an updated after more than
the maximum changes occurred, then it may not get updates and the request
may fail. In this situation a manual replication from the primary
controller may be necessary to update information on the secondary
controller. Routing slaves may have the ability to request updates for
its known destination nodes. If any changes have occurred to the network,
the SUC may send updated route information for the destination nodes to
the Routing slave that requested the update. The Routing slave
application may be notified when the process is done, but may not get
information about changes to its routes. Routing slaves may have the
ability to request updates for its known destination nodes. If any
changes have occurred to the network, the SUC may send updated route
information for the designation nodes to the Routing slave that requested
the update. The Routing slave application may be notified when the
process is done.

[0072] A network can optionally have a SUC with enabled node ID server
functionality (SIS). The SIS enables other controllers to include/exclude
nodes in the network on its behalf. This makes it easier to install
complex networks because multiple controllers support inclusion of nodes
instead of one dedicated primary controller.

[0073] The SIS is the primary controller in the network and it has the
latest update of the network topology and capability to include/exclude
nodes in the network. Further, it is safer to keep the latest network
topology on the SIS (static controller) than a portable primary
controller used extensively during network installation. In embodiments,
a network may contain only one SIS. A primary controller can instruct a
SUC to enable the node ID server functionality (SIS). In case the SUC is
primary then the SUC application can enable the node ID server
functionality locally.

[0074] When including additional controllers to a network containing a SIS
they may become inclusion controllers and as such they may obtain the
capability to include/exclude nodes in the network on behalf of the SIS.
Both portable and static controllers can be inclusion controllers. The
inclusion controller's network topology data may be dated from last time
a node was included or the last time it requested a network update from
the SIS and therefore it may not be classified as a primary controller.

[0075] FIG. 5A shows an inclusion controller 510 used to include a new
slave node 520 on behalf of an SIS 530. Inclusion controller 510
performing the inclusion may first request the latest network topology
changes 540 and a free node ID 550 from SIS 530. Inclusion controller 510
may receive node information and range information 560 from newly
included slave 520 and may forward such information 570 onto SIS 530. In
embodiments, inclusion controller 510 may be within direct range of the
node to include.

[0076] A failing node may be replaced with a node inheriting the node ID
from the failed node. Thereby the user avoids updating nodes having
associations to the failed node. Associations within the failed node may
be re-established in the new node.

[0077] Software components of a system according to the present invention
may allow a routing slave to extend to a particular number of
destinations (e.g. five) having return routes in very low latency
applications. In embodiments a routing slave may need to support more
than the particular number of destinations and this may require the
controller to support favoring return routes for destinations out of
direct range with the routing slave. In embodiments, software components
may enable a controller to determine if two nodes are within direct
range. A routing slave can request new return route destinations from the
SUC/SIS node in case the available return routes fails. Furthermore the
routing slave can check if a node ID is within direct range in any of the
existing return routes.

[0078] A software component may be used to cancel ongoing routing
attempts. This software component can be used to abort a transmission to
a malfunctioning node, thereby eliminating a large amount of routing
attempts in a large network.

[0079] The software components of a mesh network controller may be split
into the controller application and the controller basis software, which
may include the mesh network protocol layers and control of the various
data stored into memory. Controller nodes may include an external memory
in which the application data area may be placed. The controller node may
have a unique home ID number assigned, which may be stored in the basis
area of memory. When the new slave nodes are registered to the mesh
network, the controller node may assign the home ID and a unique node ID
to the slave node. The slave node may store the home ID and the node ID.
When a controller is primary, it may send any network changes from the
SUC node. The use of macros while developing application software may
allow adjustments to the interface without changing the application
source files.

[0080] The software components of a mesh network static controller node
may be split into a static controller application and the static
controller basis software, which may include the mesh network protocol
layers and control of the various data stored into memory. The difference
between the Static Controller Node and the Controller Node is that the
static controller may not be powered down, that is it may not be used for
battery-operated devices. The static controller may have the ability to
look for neighbors when requested by a controller. This ability may make
it possible for a primary controller to assign static routes from a
routing slave to a static controller. The static controller may be set as
a SUC node, so it may send network topology updates to any requesting
secondary controller. A secondary static controller not functioning as
SUC may also request network topology updates.

[0081] The software components of a mesh network installer controller may
be split into an installer controller application and static controller
basis software, which includes the mesh network protocol layer. The
installer controller may be a mesh network controller node, which
incorporates extra functionality that may be used to implement
controllers especially targeted towards professional installers who
support and setup a large number of networks.

[0082] The software components of a mesh network controller bridge node
may be split into a controller bridge application and basis software,
which may include the mesh network protocol layer. The controller bridge
node may be a mesh network static controller node, which incorporates
extra functionality targeted for bridging between the mesh network and
other networks.

[0083] The software components of a mesh network slave node may be split
into a slave application and basis software, which may include the mesh
network protocol layer. Slave nodes may have a block of memory reserved
for storing data, and may have limited direct access to the block. The
home ID and node ID of a new node may be zero. When registering a slave
node to a mesh network the slave node may receive home and node ID from
the networks primary controller node. These ID's may be stored in the
basis data area in memory. The slave may send unsolicited broadcasts and
non-routed singlecasts. Further it may be able to respond with a routed
singlecast (response route) in case another node has requested this by
sending a routed singlecast to it. A received multicast or broadcast may
result in a response route without routing.

[0084] FIG. 6 shows how the software components of a mesh network routing
slave node may be split into a slave application and basis software,
which may include the mesh network protocol layer. Routing slave nodes
have a block of memory reserved for storing data, and may have limited
direct access to the block. The mesh network basis software may reserve
the first part of this area, and the last part of the area may be
reserved for the application data. The home ID and node ID of a new node
may be zero. When registering a slave node to a mesh network the slave
node may receive home and node ID from the network's primary controller
node. These ID's may be stored in the mesh network basis data area in
memory. The routing slave may send unsolicited broadcasts and single
casts (routed or non-routed). Further it may respond with a routed
singlecast (response route) in case another node has requested this by
sending a routed singlecast to it. A received multicast or broadcast
results in a response route without routing.

[0085] FIG. 7 shows how the enhanced slave node may have the same basic
functionality as a routing slave node, but because it may have more
features on the hardware, more software components may be available.
Enhanced slave nodes may have an external memory and a Real-Time Clock
(RTC) 700 and Wake-Up Timer (WUT) 824. The basis software may reserve the
first area of external memory, and the last area of external memory may
be reserved for the application data.

[0086] An internal ring oscillator is used as a base for a wake up timer.
The oscillator has a very low power consumption but is highly dependant
on temperature, supply voltage and process variation. In order to
compensate for the high variation a calibration circuit is built into the
chip. The calibration circuit measures the oscillation frequency against
the system clock and derives a calibration constant. As the ring
oscillator runs at several kHz the calibration is as fast compared to
wake up period. The calibration is performed automatically before
entering WUT mode (wake up timer mode).

[0087] A node in mesh network 100 may be implemented with a single
integrated circuit (e.g. an IC, ASIC, FPGA, etc.). FIG. 8 shows a block
diagram of the a mesh network node, which may consist of many
sub-components such as an integrated RF transceiver 802, an 8051
Microcontroller Unit (MCU) 830 with Random Access Memory (RAM) 832, mesh
network software Application Programming Interface (API) 828, and memory
storage for user application software 828 such as Flash memory. In
addition to these major functional blocks a single chip implementation
may contain an Analog-to-Digital Converter (ADC) 822, general purpose
Input/Output (I/O) pins 808, Power-On Reset (POR) circuit/brown-out
detector 812, Triac controller 820, Serial Peripheral Interface (SPI)
824, interrupt controller, and UART 814 serial interface for connecting
to peripheral devices. Such a device may be designed for very low power
and low voltage applications and highly optimized for battery-powered
applications and easy integration to products with demanding size
constraints.

[0089] A single chip implementation of the embodiment of FIG. 8 may run on
a system clock that is derived from an XTAL. For example, clock control
810 divides an external crystal (not shown) into two internal clocks. In
the preferred embodiment of FIG. 1, an external crystal of either 16 MHz
or 32 MHZ would allow clock control 810 to generate an 8 MHz clock for RF
circuits and a 16 MHz clock for MCU 830 and peripherals. Alternatively,
clock control 810 may interface to an external crystal controlled
oscillator.

[0090] The POR circuit 812 may eliminate the need for external reset
circuitry, holding reset during power-on and brown-out situations. POR
812 may be designed with glitch immunity and hysteresis for noise and
transient stability. POR 810 circuit may have extremely low power
consumption and is active even in a sleep mode.

[0091] Referring further to FIG. 8 and FIG. 9, a transceiver 802 may be
able to transmit and receive Manchester coded data 9.6 kbits. FIG. 9
shows the invention communicating NRZ coded data at approximately 40
kb/s. RF transceiver 802 may handle all the RF related functions such as
Manchester encoding/decoding 900, pre-ample detection and
serialization/deserialization. The output power of the transmitter Power
Amplifier 902 may be adjustable in steps of 2 dB. The different parts of
the RF transceiver 802 may be powered up and down so only the required
circuits may be powered at a time. The RF transceiver 802 may only need
external components for input and output matching. A block diagram of the
Transceiver 802 including RF modem 842 is given in FIG. 9.

[0092] Transceiver 802 includes multiple parallel receive demodulators,
each for detecting a different received communication signal frequency,
enabling the single chip embodiment to operate in an environment with a
plurality of communication signal frequencies as may occur in networks of
current and older technology devices, and/or different types of devices.
The multiple demodulators are configured to receive output signals from
RF transceiver 802 interface, allowing the first demodulator that detects
a valid signal to take control, thus transparently receiving a signal at
any of a plurality of supported data rates, without prior negotiation
with an external device. No communication overhead results from
supporting multiple receive data frequencies, allowing fast reception of
unsolicited transmissions from unknown sources.

[0093] An auto-speed receiver may include feeding the output of one radio
front-end to multiple demodulators, each for a different data rate, and
then allowing the first demodulator detecting a valid signal to take
control, thus transparently receiving a signal at any of the supported
data rates without prior negotiation. This results in benefits including
no overhead from using multiple data rates, and fast reception of
unsolicited transmissions from unknown source without overhead of data
rate negotiation.

[0094] The solution provides seamless installation of nodes only
supporting multi-speed nodes (e.g. 9.6 kbps and 9.6/40 kbps) in the same
network. The transceiver 802 is used to detect speed (e.g. 9.6/40 kbps)
of the frames received to make a speed independent receiver. In
embodiments, an optimal speed (e.g. fastest speed) to the destination
node may be known (e.g. through testing and storing of information in
association with a routing table) and a transmitting node may transmit at
the optimal speed.

[0095] The transmitter side may use a method where the highest known speed
that can be used to reach the end destination will be used. In
embodiments, a controller may send a multicast frame using the optimal
speed. For example, if a transmitter knows all destination nodes of a
multicast frame supports 40 kbps, the transmitter will transmit the
multicast at 40 kps. As a further example, to ensure all nodes within
direct range of a transmitter receive a broadcast frame, a transmitter
will send a the broadcast frame at 9.6 kbps

[0096] A transmitting controller may select a specific route of nodes for
a single cast or a routed single cast frame based on the route comprising
only nodes which support a preferred transmission speed. For example, if
a transmission controller can determine a route of nodes in which all the
nodes support 40 kbps, the controller may select this route for a routed
single cast frame. Alternatively if such a route cannot be determined,
the controller will transmit at the optimal speed for any route.
Continuing the example of above, in such a route the controller would
transmit a single cast or routed single cast frame at 9.6 kbps.

[0097] Likewise the controller may try to achieve the highest possible
speed when assigning return routes to a routing slave. Since a routing
slave may store the speed for each route to a destination, a routing
slave can have a mixed set of stored speeds (e.g. 40 kbps and 9.6 kbps)
for routes to each destination.

[0098] A node information frame or a transfer presentation frame may be
sent out at a low speed (for example 9.6 kbps) to allow nodes that
support only the low speed, or nodes that support a plurality of speeds,
to be included/excluded by the controller.

[0099] In embodiments, channel selection may be dynamically performed
locally on each node without need of distributing network information,
nor requiring user intervention. Dynamic channel selection may not
require additional installation steps. The dynamic nature may also enable
the network to maximize the usage of free communications slots on the
available channels. The nodes in the network may listen on the available
channels based at least in part on a predefined algorithm (e.g., limited
to round robin). A node may select a next communication channel, and stay
on each selected channel for a predefined duration. The node may stay on
the selected communication channel and receive messages. Once the node is
ready to receive new frames, it may once again select a next
communication channel and repeat the process.

[0100] In embodiments, a communication channel may have multi-speed
capabilities within a single carrier frequency, and/or it may have
multi-speed capabilities across multiple carrier frequencies.

[0101] In embodiments, a node in a mesh network may be used to perceive a
plurality of channels within a mesh network. A node may select a first
channel from the plurality of channels within the mesh network and remain
on the first channel for a predefined duration. If during the predefined
duration, a signal is not detected, the node may select a second channel
and remain on the second channel for predefined duration in order to
detect a signal. If during the predefined duration of remaining on the
first channel a signal is detected, the node may remain on that channel
beyond the predefined duration in order to receive a message. The node
may then select a second channel once the message on the first channel is
received. This process of channel selection may include a plurality of
nodes and or a plurality of channels within a mesh network.

[0102] An aspect of the present invention relates to a portable node (e.g.
portable mesh node) where the portable node may be associated with a user
interface or other device. The portable node may be similar to other
nodes as described herein and it may communicate to and from the network
either directly to a master controller or through other nodes in the mesh
network. The portable node may be discoverable as other nodes are
discoverable. For example, the portable node may be located by other
nodes sending `find` requests to the portable node. Once the portable
node receives a find request, it may respond and a communication link and
hand-offs to other nodes in the network may then be completed. In other
embodiments, the portable node may be programmed to send `find`
identifiers periodically. For example, the portable node may send a data
packet to all nodes in the area (i.e. within its range) and the nearby
nodes may identify that they can communicate with the portable node. In
other embodiments, the surrounding nodes may be used to physically locate
the portable node through triangulation techniques or the like.

[0103] Software components of a system according to the present invention
may involve interfacing with or otherwise controlling streaming data
within a network. For example, a user interface may be associated with
the portable node and it may be adapted to scan through a set of
entertainment titles (e.g. music titles, video titles, movie titles) to
select a title to play on an entertainment device (e.g. audio/video
equipment) controlled by another node in the network. The entertainment
system may provide functionality similar to known high end mp3 players
for example. In embodiments, an entertainment device may be a television,
a signal conversion device, a DVR, a networked device, a UPnP networked
device, a satellite receiver, a cable converter, a VCR, a digital video
disc player, a video accessory, an audio amplifier, an audio tuner, an
audio amplifier-tuner combination, a CD player, a DVD player, a high
definition DVD player, an audio cassette player, a digital audio tape
player, an audio equipment, an equalizer, a phonograph player, a video
component, a streaming media player, an mp3 player, an audio file player,
and audio component, an audio-visual component, or some other
entertainment device.

[0104] In embodiments, information relating to entertainment devices
and/or entertainment media may be distributed through a mesh network in a
data structure. A data structure may include metadata. In embodiments,
metadata may be related to an image, a photo, audio, a music track, an
audio broadcast, an audio book, a video, a movie, a video broadcast, a
stored video, a live video, a digital video recorder file, a music video,
audio-visual equipment, an appliance, a content directory, and other
metadata types. Metadata may be a description of content being delivered,
a rating, a title, a music title, a movie title, a publisher, a right, a
plurality of rights, a genre, a language, a relation, a region, a radio
call signal, a radio station, a radio band, a channel number, an image
name, an artist name, a music track, a playlist, a storage medium, a
contributor, a date, a producer, a director, a DVD region code, a channel
name, a scheduled start time, a scheduled end time, an icon, and the
like.

[0105] In embodiments, such as that illustrated in FIG. 30, a media server
3000 may provide entertainment content (e.g., video, song, image, etc.)
and may provide the content to a media renderer 3002. A media renderer
3002 may be capable of rendering entertainment content provided by a
media server 3000. A media renderer 3002 may be identified with an
endpoint identifier that is unique to a media renderer 3002. A control
point 3004 may coordinate the operation of a media server and media
renderer 3002. For example, through a control point, an end-user may be
able to select what they want to view and/or hear, and where they want to
hear and/or view it. Content that is available on a media server 3000 may
be accessed through a control point's 3004 content directory
functionality. This directory may comprise a hierarchical organization of
content categories in which a superhierarchy is "Music," a sub-category
within Music is "Artist," a sub-category within Artist is "Album 1," and
so forth.

[0106] In embodiments, to cite one example among many potential
embodiments, a media server 3000, media renderer 3002, and control point
3004 combination may be used to control a home audio visual system such
as one including a compact disc player 3100, DVD player 3102 and a
projection screen 3104. In this home audio-visual example, a remote
controller 3108 may be used to communicate with a plurality of control
points 3004, each of which is associated with a device within the
audio-visual system. For example, the remote controller 3108 may
communicate with a control point 3004 associated with a compact disc
player 3100. The compact disc player 3100 may relay data to a media
server 3000 that, in turn, relays the data to the media renderer 3002 and
on to the control point 3004. Similarly, a DVD player 3102 and screen
3104 may be controlled by a remote controller using a media server 3000,
media renderer 3002, and control point 3004 combination.

[0107] In embodiments, the portable node may be associated with a user
interface for controlling other aspects of the entertainment system. For
example, a user may be able to control output channels, input channels,
volume, pitch, balance, treble, bass, brightness, sharpness, HDTV
functions and the like. A portable node with a user interface may be
adapted as a controller/receiver for other devices, sensors and the like
in the network.

[0108] A Subscriber Identity/Information Module (SIM) may uniquely
identify a connected mobile device and permit a mobile communication
device to interface with a mesh network. A SIM card may also provide
configurable storage for additional information related to a subscriber.
As an example, a SIM card may provide storage for subscriber personal
information such as address books, preferences, telephone numbers,
network passwords, and such other information that may be beneficial or
useful for a mobile user for accessing a wireless network.

[0109] Additionally, the SIM may facilitate accessing a mobile network. In
an example, the SIM may contain unique information that a GSM mobile
device network may detect when the SIM is installed in a GSM compatible
phone and operated in a GSM network coverage area. Therefore when a
mobile communication device, such as a mobile phone, is operating with a
SIM in the range of a wireless network, such as a wireless mesh network,
the mobile device may be detected by the network. In this way a SIM may
facilitate making a mobile or portable device discoverable by a mesh
network. Additionally, subscriber and/or network node identification
information on the SIM may be used in an authentication process prior to
allowing the mobile phone to join the wireless mesh network.

[0110] In embodiments, a mobile communication device equipped with a SIM
card may facilitate a user of the mobile device gaining authorized access
to a mesh network and further access facilities on the mesh network. For
example, an authenticated user of a mobile device on a mesh network may
download to the configurable memory of the SIM a list of movies stored on
a digital video recorder connected to the network. The mobile device may
then use the downloaded list along with display format information stored
in the SIM to display the list in a user interface on the mobile device
display. In another example, the user may upload digital content such as
photos or a video on the mobile device (e.g. a camera phone with video
capability) to a home entertainment system for presentation to a user
viewing the display of the home entertainment system. Such an example may
be used by an international traveler wishing to show images from their
travels, or an Emergency Medical Technician providing images of an
emergency patient in the field to an emergency room doctor.

[0111] Because a SIM may provide both access to a wireless network and may
provide authentication for access to a mesh network, a SIM based mobile
device, such as a cell phone, may be used to access the facilities of a
mesh network from a location that may be far outside the range of nodes
on the wireless mesh network by accessing the mesh network through a
portal from the mesh network to the cell phone network.

[0112] A portable or mobile node may be discoverable through information
contained in the SIM, as other nodes are discoverable. For example, the
portable node may be located by other nodes sending `find` requests to
the portable node. Once the portable node configured with a SIM card
receives a find request, it may respond and a communication link that
hand-offs to other nodes in the network may then be completed. In other
embodiments, the SIM card may include configured storage information that
directs the mobile device or portable node to send `find` identifiers
periodically. For example, the mobile device may send a broadcast type
data packet such that the nearby nodes that receive the data may identify
that they can communicate with the SIM based mobile device.

[0113] An aspect of the present invention relates to streaming data (e.g.
entertainment data) through the mesh network. Streaming data may be
adapted such that control frames can be transmitted over the mesh network
while streaming data is transmitted. In embodiments, a software component
supporting streaming data may include a minimum delay of 35 ms after each
frame carrying streaming data for example.

[0114] In embodiments, streaming data is preferably performed at a high
transmission rate (e.g. a 40 kbps transmission rate). A controller
streaming the data may determine and select the optimal speed, preferably
high speed (e.g. 40 kbps, or the highest speed available), for the stream
transmission. Depending on the network topology, a slave may not check
communication speed of routed streaming data, and therefore the
controller may preferably select a low speed (for example 9.6 kbps) for a
routed data stream. In embodiments, a master controller and/or the nodes
in the mesh network that are handling the streaming information may
select the highest speed path available for transmission of the streaming
data. For example, the streaming data may reach a node and the node may
have the ability to pass the information to anyone of a plurality of
nodes because the plurality is in range. The node may determine that one
of the plurality is a high speed node and select that node for receiving
the next data transmission. Once a high speed path from source to
ultimate receiver is determined, the routing information for the high
speed path may be saved and used for later transmissions requiring high
speed transmissions.

[0115] In embodiments, a number of methods and systems may be used for
large data file transmission. For example, large data files, such as text
files, audio files, video files, and like, may be transferred in a single
block of data for an end-processing element to utilize when a transfer is
complete. A large file may also be transferred in such a way that the
end-processing element buffers the incoming data, and after a short
delay, begins to utilize the data before the transfer is complete. A
large data file may also be transferred in such a way that the data is
sent to the user in real-time, or near real-time.

[0116] Transferring a large data file, which may not be used immediately
by the end-processing element, may be transferred as a single block of
data. An example of this may be a television guide that is distributed to
end-processing elements once a day for subsequent use. The lack of
immediacy of this task may allow the sending unit to schedule the
transfer when bandwidth is available, transfer the data with or without
data compression, and data may only need to be stored, reducing
processing requirements. This method of transferring a large data file
may be the least burdensome for the processing elements, but may not be
the best choice for large data files that may require immediate action,
such as real-time audio and video files.

[0117] In embodiments, a large data file may be transferred for immediate
use based at least in part on buffering the data at the receiving end of
the transfer. This method is often referred to as progressive downloading
or pseudo-streaming, and may not be fundamentally different from other
methods for transferring data for subsequent use. As a result, the same
data transfer protocols that the sending processing element uses for
small data transfers may be utilized for progressive downloading. The
data file may also be retained after transfer to the end-processing
element. One addition to the end-processing element, in order to aid in
the immediate use of the data by the user, is the addition of a
data-buffering layer between the input from the source and the output to
the user. As long as the available bandwidth during data transfer between
processing elements is not less than the required data rate to the user,
the user may not be aware that the data transfer is still ongoing while
the initial data is being used. When available bandwidth during transfer
is predicted to be less than that of the user, data compression may be
employed to reduce the throughput requirement. Data compression rates may
vary from low, for lossless data compression schemes, through high, for
lossy data compression schemes. In general, the receiving data buffer may
also be expanded as an alternative to the need for lossy data
compression. This method generally maintains a high quality of file
transfer, while allowing the user to begin using a file prior to it's
completed download.

[0118] Another method for transferring a large data file for immediate use
may involve the real-time transfer of data between the source and the
user. This method is often referred to as streaming data. The process of
transferring data in real-time may require unique data transfer protocols
from those used in non-real-time file transfers. Data transferred in
real-time may have to conform to predetermined data transfer rates. Audio
and video are both examples where the real-time data rates are
predetermined. In addition, when these predetermined data rates cannot be
met by the source, data may have to be sacrificed in order to maintain
the real-time data steam rate. For example, lossy data compression rates
may have to be varied as bandwidth in the transfer medium becomes
reduced. The increased data compression rates may reduce the quality of
the real-time data, such as reduced quality audio or and increased
graininess of a video file output. Another example may be the dropping of
short portions of an audio stream, the reduction of the size of a video
output, or the momentary freezing of a web-cast. These issues with
streaming may be offset by the advantages of being able to skip around in
a video file without waiting for a download to complete, or having the
ability to monitor a scene real-time. In addition, since the data rates
are known, being either predetermined or through communication between
the send and receive processing elements, the sending processor element
may be able to more effectively utilize available bandwidth. The
end-processor element may also have no need to store the data it is
receiving, and so memory storage may be reduced. This method is generally
utilized when real-time data is a higher priority than the quality of the
data transferred.

[0119] RF transceiver 802 benefits with improved sensitivity by employing
a demodulator correlation function. The demodulator detects the frequency
of the FSK input signal by counting clock pulses between zero-crosses. In
order to separate the two input frequencies an average filter is run on
the input signal. The DC is subtracted from the input signal and the
result is sampled into a delay chain of registers. The demodulator then
correlates this signal history to the pattern of the known NRZ/Manchester
symbols. For NRZ the correlation value is computed as the sum of the
sampled input signal over one NRZ bit period. For Manchester the
correlation value is computed at the sum of the first half Manchester bit
period minus the sum of the second half bit period. The bit slicing is
performed by checking the sign of the correlation function at the rising
edge of the recovered clock. This results in improved sensitivity.

[0120] In embodiments, a demodulator, such as that illustrated in FIG. 29,
may be designed so that it can detect Manchester (MCH) code at 9.6 kbit/s
2902 and NRZ code at 40 kbit/s 2904 and 100 kbps 2908. It may be set in
three different modes: (i) to detect and receive only MCH data (9.6
kbit/s) 2902; (ii) to detect and receive only NRZ data (40 kbit/s) 2904;
or to detect and receive only NRZ data (100 kbit/s) 2908.

[0121] In embodiments, when a demodulator is in an auto mode, both MCH and
NRZ data may be detected. Once a frame is detected as either MCH or NRZ,
the demodulator may switch to this mode and start receiving data in an
auto mode. In the auto mode the demodulator must listen for Manchester
(MCH) code at 9.6 kbit/s 2902 and NRZ code at 40 kbit/s 2904 and 100 kbps
2908. In order to do this the demodulator may contain three detectors,
one for MCH and two for NRZ. However some part of the demodulator may be
common for both detectors, such as the IF detection 2900, filtering 2900,
and the control of the demodulator 2910.

[0122] RF communication error detection may be improved by the use of CRC
16, or other similar robust error detection techniques, on elements of
the communication signal including Z-wave frames.

[0123] Referring further to FIG. 9, transceiver 802 may transmit using a
modulation frequency that is asymmetrical to a reference carrier/local
oscillator frequency, resulting in a transmit frequency that is not
supported by the reference frequency synthesizer. By supporting
asymmetric radio frequency signal modulation, transceiver 802 has the
ability to transmit on a frequency not supported by the frequency
synthesizer.

[0124] Referring to FIG. 9A, a waveform diagram representing selection of
asymmetric modulation, if offset control 910 is set at its center
frequency 920 during settling of PLL 930, modulation 940 will go to both
sides of PLL 930 frequency. As an example, this may correspond to binary
FSK with a carrier frequency at an integer multiple of 200 kHz.

[0125] Referring to FIG. 9B, if offset control 910 is set at the zero
symbol setting 950 during settling of PLL 930 then modulation 940 will
only go to an upper side of PLL 930 frequency. As an example, this may
correspond to binary FSK with a carrier frequency at half the modulation
separation above an integer multiple of 200 kHz or N×200 kHz+20 kHz
to N×200 kHz+25 kHz. Benefits of asymmetric modulation include the
ability to transmit on a frequency not supported by the frequency
synthesizer.

[0126] RF transceiver 802 may include a Phase Lock Loop (PLL) which may be
synchronized while the system is powering up. Such synchronization may
reduce locking time, afford faster RF turn-on, and lower power
consumption

[0127] PLL divider synchronization at start-up to reduces locking time.
The VCO frequency is divided by a circuit denoted as the PLL divider,
into a signal that matches a well defined reference signal. The reference
signal is generated from the system clock and can be optionally 100 kHz
or 200 kHz. During calibration, the center frequency of a Voltage
Controlled Oscillator is adjusted so that the divided frequency after
calibration is very close to the reference frequency. After calibration a
PLL fine-tunes the divided VCO signal so that it locks completely onto
the reference signal.

[0128] In order to minimize VCO lock settling time, the PLL and the
reference signal are disabled and then released simultaneously after
calibration. The result of simultaneous release is a synchronization
action where both signals start at the beginning of their high period.
The synchronization between the signals minimizes the PLL settling time,
resulting in faster turn-on of radio, and lower power consumption.

[0129] RF transceiver 802 includes an RF transmitter including a
transmitter digital to analog converter which delivers the benefit of
reduced cost. The transmitter chain contains a D/A converter which has
two functions. The first is to convert the digital encoded bit symbols to
analog signals, and the second is to set the transmission power of the
transmitted RF signal, since the D/A converter is followed by a fixed
gain PA amplifier. The D/A converter is a digital symbol to sine-voltage
converter. Each output voltage of the D/A is a discrete step on a
sine-curve which is selected by the digital value on the input. A
thermometer coded signal is applied, and each value of the input signal
selects a step on the sine wave. Counting from 0 to 31 and back again is
therefore generating a full sine-period. The advantage of having
sine-sized D/A steps is, that a low number of control-bits can generate a
high resolution sine-wave. Further more, the amplitude of the sine-wave
is controllable, which means, that the transmission strength of the RF
signal is set in the D/A.

[0130] Referring to FIG. 9C, VCO frequency calibration ensures that an
analogue control voltage 9110 input to VCO 9120 is preferably within a
narrow range and compensates for variation of on-chip capacitance which
affects VCO 9120. During calibration, PLL loop filter 9130 is opened and
Cal block 9140 sets VCO control voltage 9110 to a predetermined value. A
calibration control block 9150 may adjust the frequency of VCO 9120 by
changing capacitance values internal to VCO 9120.

[0131] Referring further to FIG. 9D, for various cal control 9150 settings
of VCO 9120 capacitors, output frequency of VCO 9120 is measured by using
a lock detector 9160. After resetting of the different dividers to
synchronize all blocks, lock detector 9160 may compare a subdivided
version 9122 of VCO 9120 output frequency to a reference clock 9180. By
using a successive approximation approach the correct calibration setting
can be determined in very few reference clock 9180 cycles. FREQ High and
FREQ Low bits generated by lock detector 9160 are used in calibration
control circuit 9150 to indicate if VCO 9120 frequency is too high or too
low.

[0133]FIG. 9D illustrates a calibration sequence wherein 4 bits of
calibration control information 9210 is passed from calibration control
circuit 9150 to VCO 9120 (as shown in FIG. 9C). For each calibration
information 9210 setting, freq high signal 9220 may respond on a rising
edge of reference clock 9180, further enabling a change in calibration
information 9210 setting. This sequence repeats until PLL frequency 9230
is substantially close to a predetermined value.

[0134] Referring to FIG. 9C and FIG. 9E, in receive mode during periods
when no preamble or SOF has been detected and no data is currently being
received, calibration control 9150 may adjust calibration setting
whenever VCO control voltage 9110 has changed significantly. This
function is done by sense block 9105 by comparing VCO control voltage
9110 with an upper limit 9310, and a lower limit 9320. As illustrated in
the diagram in FIG. 9E, VCO control voltage 9110 may be monitored
continuously such that when it falls outside sense block 9105 limits,
calibration control 9150 adjusts calibration information setting 9210. In
embodiments, a sudden change in calibration control 9150 output will
result in PLL 9230 loosing lock, therefore calibration control 9150 may
be disabled until lock detector 9160 indicates that PLL 9230 has settled
again.

[0135] Additionally, voltage controlled oscillator (VCO) calibration may
use portions of the PLL, thereby reducing hardware resources and cost.
Additionally cost is reduced by IF calibration. In order to counteract
the natural variation in resistors and capacitors, the IF filters of the
ZW0201 has programmable resistors, which are set during a calibration
process. This calibration process is able to reduce the variation of the
IF filter center frequency, and this helps relax the requirements to the
system clock. The calibration is performed using the components of the IF
filter. The procedure is like this: One capacitor is discharged and
another is charged. The voltages across the capacitors are compared, and
when they cross each other, the charge/discharge time is recorded (as
being the time from start of the process until the voltages cross each
other). The two capacitors are reset, the programmable resistors of the
IF filter is changed, and another charge/discharge sequence is done. Four
charge/discharge periods are performed, and resistors are changed during
each period, which results in a resistor setting that has a optimal
charge/discharge period.

[0136] The single chip embodiment of FIG. 8 contains an embedded MCU 830.
One example of a preferred MCU is embedded 8051 MCU core (Inventra M8051
Warp) including two standard 8051 timer/counters 804. MCU830 may be
compatible with industry standard 803x/805x MCUs. The single chip
solution may allow for optimisation of MCU 830. MCU 830 of the embodiment
of FIG. 8 completes one instruction cycle per two clock cycles as opposed
to a standard 8051 with 12 clock cycles per instruction cycle. This makes
MCU 830 six times faster than the standard 8051.

[0137] Referring to FIG. 10, a timing diagram of a pulse width modulated
output (PWM), general purpose timer 804 is a timer that may be polled or
programmed to generate interrupts. Timer 804 may be an auto-reload
counter with a fixed clock divider ratio. The timer of the single chip
solution of FIG. 8 uses a 16-bit timer that may be an auto-reload counter
with a fixed clock divider ratio of either 4 or 512. Timer 804 may also
be set in Pulse Width Modulation (PWM) mode. The PWM may be controlled by
setting the total period and the total high period. This embodiment
utilizes an 8-bit register to set the total period and an 8-bit register
to set the high period, therefore timer 804 counts using a fixed clock
divider ratio of either 4 or 512.

[0138] Wake up timer 838 may be an ultra low power timer that may be
enabled in a sleep mode or power down mode to wake up MCU 830 after a
programmable time period. The sleep period may be configurable in number
of seconds, such as in a range of 1 to 256 seconds. Wake up timer 838 is
based on an internal oscillator that may be automatically calibrated
against the system clock. IN the preferred embodiment of FIG. 10, wake up
timer 838 may automatically calibrate during power-down mode, resulting
in an easier to use system that automatically calibrates under the same
conditions as when operating.

[0139] Special function registers 840 may contain registers that are used
to control MCU 830 operating mode, and the operating mode of built-in
peripherals.

[0140] Various memory technologies may be used for MCU program store,
application store, and for internal/external data storage. In the
preferred embodiment of FIG. 8, two types of memory are used.

[0141] A 32 kbytes of flash memory 828 is MCU 830 program memory
containing mesh network 100 API and customer application software. MCU
830 also has the ability to read, write and erase the flash memory 828.
Flash memory 828 has a built-in read back protection in order to prevent
reverse engineering or design theft. Clearing a dedicated lock bit in
flash memory 828 activates the read back protection. As long as the lock
bit is cleared it is not possible to read from the flash memory 828
externally. Other lock bits may protect parts of the flash against
writing. The lock bits may only be unlocked by erasing the entire flash
memory.

[0142] 256 bytes of Internal Random Access Memory (IRAM) 832 may be used
by MCU 830 for 8051 internal data memory, and may also be accessed
through direct instructions from MCU 830.

[0143] 2 kbytes of External Random Access Memory (XRAM) 832 may be used by
MCU 830 as 8051 external data memory. The single chip implementation of
FIG. 8 may contain an interrupt controller 818, supporting 10 interrupt
sources including two external interrupt sources on through General
Purpose I/O's. Some of the interrupt sources may be reserved by the mesh
network API. The Interrupt Controller controls the interrupt priority
assignment. The priority may be fixed by the mesh network protocol. The
external interrupt may also be enabled to wake up the chip from Sleep
mode. The single chip implementation of FIG. 8 may further contain a
Triac Controller 820 for power regulating applications. Triac Controller
820 may be compatible with 50-60 Hz external alternating current power.
Using an external Triac and a few extra external passive components a
complete phase control circuit may be designed. Triac controller 820 may
be implemented in a separate circuit within the single chip in order to
keep timing and operation independent of software and to minimise MCU 830
workload.

[0144] In embodiments, a Triac controller within an integrated circuit
mesh network node may be used to deliver power to a load, wherein timing
of the power delivery is based at least in part on a zero crossing point
of an AC power signal. The load may be a resistive load or a
non-resistive load (e.g., an inductive load). The power delivery may be
based at least in part on a fire angle. The power delivery may be
initiated in coordination with a fire angle. The power delivery may be
terminated in coordination with the zero crossing point. In embodiments,
the Triac controller may be associated with a noise mask adapted to
reduce false indications of zero crossing.

[0145] The mesh network node 100 may contain an analog-to-digital
converter (ADC) 822 with a resolution that may be set to 8-bit or 12-bit.
An 8-bit conversion takes less than half the time of a 12-bit conversion.
ADC 822 may be rail-to-rail and programmed to refer to various internal
or external voltage references. The ADC block may include a
battery-monitoring mode. ADC 822 may support both single and continuous
multi conversion mode. ADC 822 may have a built-in comparator for
generating interrupts when a threshold set by software is exceeded. The
threshold may be either a low threshold or a high threshold. It is
possible to shut down ADC 822 for reducing power consumption. ADC 822
also includes self test capability which may reduce test related costs.

[0146] The 8-bit part of the ADC is tested for missing codes, mismatch and
missing connections in a simple and fast way. The precision of the test
is better than 1/2 LSB. The 8 bit part of the LSB is made of 9
capacitors, 8 capacitors having an individual size ratio which is binary
and 1 capacitor having the unit size. The largest of the 8 capacitors is
2 7 units large, called C0, the next is 2 6, called C1, down to C7, which
is 2 0 units large. The 9.th capacitor, having the unit size 1, is called
Cs (for stationary). The capacitors presence and size ratio is tested by
testing C0 against C1+C2+ . . . C7+Cs and adding an extra test-capacitor
having the size of 1/2 unit. Since C0 is =C1+C2+ . . . C7+Cs, adding the
extra 1/2 lsb capacitor (called Cc) ensures that the term. C1+C2+ . . .
C7+Cs+Cc is now for sure larger than C0. If any capacitor units misses in
any of the 9 capacitors (C0 . . . C7+Cs), the test will fail. Next, C1 is
tested against C2+ . . . C7+Cs, etc. The test is very fast to perform and
does not require any high precision external stimuli or conventional ADC
conversion cycles. If this test should be performed in a normal fashion,
256 ADC conversions with an input voltage ranging from 0V to Vdd would
have to be performed. With the new approach, this test time is reduced to
app. the time it takes to perform one ADC conversion.

[0147] A software programmable interface (SPI) 824 may be included in the
implementation. Two examples of how SPI 824 may be used are: 1) to
provide external access to the flash memory 828 and 2) to allow mesh
network node 100 to communicate with an external memory. The SPI may act
as a master or slave when interfacing to memory. For example, network
node 100 acts as a master when accessing external Electrically Erasable
Read Only Memory (EEPROM) and as a slave when accessing the flash memory
828. External flash memory may also be accessible by MCU 830.

[0148] The mesh network node embodiment of FIG. 8 may contain a UART 814
and may operate independent of MCU 830. UART 814 may support full duplex
and may operate with the following three baud rates: 9.6 kbaud, 38.4
kbaud, or 115.2 kbaud.

[0149] Power Control Block 838 controls node 100's different power saving
modes. For example two power saving modes are: Normal Mode and Sleep
Mode/Power Down Mode. In Normal Mode MCU 830 is running and the RF
circuits and ADC 822 may be powered up or down. Sleep Mode/Power Down
Mode may be the lowest power mode, with everything shut down except the
RAM's brown-out detection and low power timer. In addition ADC 822 may be
powered up or down. In Sleep mode it is possible to wake MCU 830 up using
an external interrupt source. The source may be active low or active
high. MCU 830 may also be woken by the wake up timer 838, a reset, or by
power cycling.

[0150] It is also possible to power down MCU 830 while keeping RF
transceiver 802 operating, by automatically stopping MCU 830 before
powering up RF transceiver 802. Additionally, it is possible to restart
MCU 830 when transmission has completed and RF transmitter 802 has been
powered down. This sequence of powering up and down these elements
reduces power consumption and cuts peak current demand.

[0151] Two examples of how this may be executed is: automatically stopping
the MCU before powering up the radio and transmitting, and restarting it
when transmission has completed and the radio powered down; and
automatically stopping the MCU before powering up the radio for reception
and automatically powering up the MCU when a signal is received

[0152] Depending on information frames contained within a signal received
by RF transceiver 802, MCU 830 can be automatically powered up. A frame
handler coupled to RF transceiver 802 automatically detects Z-wave frames
and can automatically generate a signal to power-up MCU 830 or generate
an interrupt to MCU 830 if it is already powered-up. The benefit of the
frame handler functionality is reduced operating load on MCU 830,
lowering memory requirements, and reducing power consumption.

[0153] This embodiment also has general purpose I/O interfaces 808. For
example, the ZW0201 has 10 configurable General Purpose I/O (GPIO) pins
with optional weak internal pull-up. The GPIO pins may be organized as
two ports. The GPIO pins may have dual or even triple functionality, user
programmable from MCU and some special hardware functions (for instance
SPI 824, ADC 822, UART 814, TRIAC controller 820, etc.). In this
implementation four of the GPIO pins may be either analogue (for ADC) or
configured for digital interfacing as an input, or output. Reset I/O may
also be available. Two examples of reset I/O are 1) External reset and 2)
Enable programming mode. For example, when the reset pin is pulled low a
master reset is generated. If the reset is held low for an extended
period then the chip accepts programming commands on SPI 824. The chip
may not go into actual programming mode until an SPI 824 Programming
Enable command is received. As an example five dedicated analogue pins
are used for RF interface 802 and crystal connections 810. GPIO pins may
be set as inputs during reset. This pin configuration may be maintained
after the reset is released until the software changes the setting.

[0154] By using one or more of the invention interface circuits, an
RC-oscillator may be used as a temperature sensor, lowering cost by
reusing existing interface circuits for the additional function of
sensing temperature. The Wake-up timer internal ring oscillator is
designed in a way so the calibration value has a near linear temperature
dependency. The calibration depends on temperature, supply voltage and
process variation. Fortunately the supply voltage variation can be take
into account by using the built in battery monitoring circuit. The impact
of process variation is mostly on the offset value. Consequently if the
calibration value is known at a given temperature then the temperature
can be estimated at another temperature. This results in the benefit of
low cost from reuse of existing circuit as temperature sensor.

[0156] Clock signals 810 may require external interfaces. For example FIG.
12 shows external crystal 1200 connections. Node 100 includes an on-chip
crystal oscillator making it possible to drive a crystal directly and can
operate with either a 32 MHz or a 16 MHz crystal. An external load
capacitor 1202 may be required on each terminal of the crystal. The
loading capacitor values may depend on the total load capacitance
specified for the crystal.

[0157] FIG. 13 shows a simplified block diagram of an internal reset
circuit 812. For example all pats of node 100 are reset when one or more
of the following conditions are true: 1) Reset 1300 is low, 2) When
POR/brown-out detection circuit detects low supply voltage, 3) When
WATCHDOG 1302 times out. The reset may be an asynchronous input with
internal pull-up, schmitt trigger, and glitch protection. The signal may
be synchronized internally so that the reset may be asserted and
deasserted asynchronously. The POR circuit may also contain a low pass
filter 1304 for glitch protection and hysteresis 1308 for noise and
transient stability. In Sleep mode the POR may go into a low power mode
that protects the circuit against brown-out while keeping the power
consumption at an absolute minimum. During master reset all GPIO 808 pins
may be configured as inputs and the RF Transceiver 802 may be set in
power down condition.

[0158] FIG. 14 shows the RF connections in a typical application. RF
transceiver 802 may require very few external passive components 1400,
1402 for input and output matching. IN this embodiment an internal T/R
switch circuit 1404 makes it possible to match the receive (RX) and
transmit (TX) independently. L1/C1 1400 is used for matching the
transmitter output to 50Ω L2 1402 may be used for matching the
receiver input to 50Ω. The values of the matching components may
depend on the actual PCB layout. Moreover the matching components should
be placed as close as possible with efficient grounding in order to
achieve best performance. Additional external filter components may be
added in order to filter the RF harmonics (if necessary) and improve the
blocking performance.

[0159] UART 814 interfaces with external components. For example UART 814
interfaces with a data rate of 9.6 kbaud, 38.4 kbaud, or 115.2 kbaud,
with 8-bit words, one start bit, one stop bit and no parity. FIG. 15
shows a typical RS232 UART application circuit. FIG. 16 gives a waveform
of a serial byte. UART 814 shifts data in and out in the following order:
start bit 1600, data bits 1602 (LSB first) and stop bit 1604. For noise
rejection, the serial port may establish the content of each received bit
by a majority voting on the sampled input. This is especially true for
the start bit. If the falling edge on R×D is not verified by the
majority voting over the start bit then the serial port stops reception
and waits for another falling edge on R×D. After 2/3 of the stop
bit time, the serial port waits for another high-to-low transition (start
bit) on the R×D pin.

[0160] Single chip embodiment of network node 100 supports external
interrupts 818 to MCU 830 as shown in FIG. 17. For example, Interrupts
1700 may be programmed to be either level-triggered (high/low) or
edge-triggered (rising/falling). Also, interrupt(s) to Power Management
838 may enable wake up from sleep mode. Interrupts may be used to wake up
the chip from sleep mode. The interrupts to the Power Management 838 may
be level-triggered (high/low). When the chip wakes up from Sleep mode the
clock oscillator may start up before program execution starts.

[0161] This implementation may have a Triac Controller 820 which uses
phase control for power regulation of resistive loads 1800 and to some
degree non-resistive loads. FIG. 18 shows a simplified application
circuit. The phase control method may conduct power during a specific
time period in each half of the AC power cycle. FIG. 19 shows typical
Triac waveforms. A Triac is commonly used to switch on and off the power
to the load in the AC power system application. A gate voltage 1900 may
be required to turn on the Triac (fire pulse). Once "on", the Triac may
stay "on" until the AC sine wave reaches zero 1902 current regardless of
the gate voltage. The power regulation is performed by controlling the
fire angle (turn on start time). The Triac may deliver the power to the
load after the fire angle and turn off at the zero-crossing point. The
fire pulse must be of a certain duration in order to 1) provide
sufficient charge for the Triac to turn on and 2) ensure that is does not
subsequently switch off due to potential noise. The duration of the fire
pulse may be programmed in SW. The zero cross detection may be disturbed
by noise 2000 on the AC line. In case this noise is strong enough it
could worst case cause additional triggering 2002 on the ZEROX as shown
in FIG. 20. In order to avoid these extra zero crossing triggers a noise
mask 2100 has been implemented in the Triac Controller. The mask masks
out zero crossings from the true zero cross until a period before the
next true zero cross, as shown in FIG. 21. The zero cross detector may
either be programmed to use both the rising edge and the falling edge of
the zero cross signal 1900 (like the ZEROX signal in FIG. 19) or it may
be programmed to only use the rising edge of the zero cross signal 2200
(like the ZEROX signal in FIG. 22). The Triac Controller may be
programmed to generate an interrupt request to the MCU whenever it
detects a zero cross. When detecting zero crosses on both rising and
falling edges then the detection moments may be offset 2300 due to the
threshold level of the ZEROX input, as shown in FIG. 23. Because of this
offset the Triac fire pulse may not be fired at the same distance from
the beginning of the positive period and from the beginning of the
negative period. It means that the AC load, which the Triac controls, may
have a DC voltage different from 0V. To make this DC voltage negligible,
the Triac Controller may be programmed with a variable correction 2400
period to correct for the offset, as shown in FIG. 24.

[0162] In order to control a Triac, two signals are important. The ZEROX
signal, which reflects the zero crossing of the mains signal, and the
TRIAC signal, which is used to fire the Triac. The ZEROX signal is used
to generate a fire pulse (TRIAC signal) for every half period, that is,
both the rising edge and the falling edge are used as time base for
generating the fire pulse. The zero-cross detection logic isn't toggling
exactly on the zero cross because of the threshold level of the input
buffer of the ZEROX pin. Therefore the fire pulse in the "negative" half
period will be slightly earlier than the fire pulse in the "positive"
half period. This difference generates an unwanted DC current in the
connected appliance. To correct for this difference; a programming
register, TRICOR, can be used to skew the time for the generation of the
fire pulse in the negative half period, thus removing the difference and
avoid DC in the controlled load. A benefit of this Triac control
functionality is avoiding DC in the controlled load (specifically a
problem for inductive loads).

[0163] External interfaces are required for the ADC 822. ADC 822 may be a
versatile rail-to-rail converter, which may operate in high-resolution
12-bit mode or a fast 8-bit mode. The ADC may be connected to the
external circuit using GPIO 808 pins. The ADC may sample an analogue
signal on any of the pins. The ADC is able to perform single conversion
or continuous multi conversion. The ADC block may be programmed to
generate an interrupt to the 8051W when a certain high or low threshold
is exceeded. FIG. 25 gives an overview of the internal ADC block. The ADC
may also be used for monitoring the supply level. In this set-up the
Internal Reference 2502 is measured with reference to the supply level.
The ADC input signal may be loaded by an internal sampling capacitor. In
8-bit mode the sampling time may be configured to fit the source
impedance and frequency contents of the input signal. Alternatively an
internal buffer may be switched in between the external source and the
ADC to reduce capacitive loading of the input.

[0164] SPI 824 may be used for synchronous data transfer between the
single chip 100 device and an external memory, used by some node types,
or between a programming unit and the device. The SPI may not be
available to the external application. Mater mode 2600 is activated when
interfacing to an external EEPROM and slave 2602 during programming mode.
The programming mode may be enabled by setting Reset low for an extended
period. The SCK may be the clock output in master mode and is the clock
input in slave mode. During data transmission the SCK may clock the data
from a slave register into a master register. At the same time data may
be clocked in the opposite direction from master to the slave connection.
Consequently the two registers 2604 may be considered as one distributed
circular shift register as illustrated in FIG. 26. After 8 clock cycles
the two registers will have swapped contents. FIG. 27 shows a typical
interface application to an EEPROM.

[0165] An embodiment may contain a function for programming external
memory, such as external Flash memory. In flash programming mode an
external master may control the SPI bus causing node 100 to act as slave.
In programming mode the flash may be erased, read, and/or written.
Moreover it is possible to read a signature byte identifying the chip,
enable/disable read/write protection, and/or read/write the Home ID.
Flash programming mode may be entered by setting and keeping the Reset
pin low. When the Reset has been held low for two XTAL periods then the
SPI may accept a Programming Enable command. The chip may not enter
programming mode until the two first bytes of the Programming Enable has
been accepted. After the chip has entered programming mode the device may
stay in programming mode as long as the Reset pin is held. When the Reset
pin is set high the chip may generate an internal master reset pulse and
normal program execution may start up. The watchdog function may be
disabled as long as the chip is in programming mode and all other GPIO's
808 than the SPI 824 interface may be tri-stated. FIG. 28 gives a
simplified block diagram of a typical interface to programming equipment.

[0166] Referring to FIG. 32, the present invention may include a method
and system for silently acknowledging a successful transmission of a
single case frame from a first node to a second node. For example, a
single cast frame 3208 may be sent from a first node 3200 to a third node
3204 by using a second node 3202 as an intermediate relay between the
first 3200 and third nodes 3204. As the second node 3202 sends the single
cast frame 3209 that it received from the first node 3200 onto the third
node 3204, the first node 3200 may be able to detect the single cast
frame 3209 sent from the second node 3202 to the third node 3204 and
interpret this single cast frame 3209 as an acknowledgement of success in
sending the single cast frame 3208 from the first node 3200 to the second
node 3202. Third node 3204 may send a routed acknowledgement frame 3210
to node two 3202 indicating that it received the single cast frame 3209
from node two 3202. The third node 3204 may be able to detect the routed
acknowledgement frame 3211 sent from the second node 3202 to the first
node 3200 and interpret this routed acknowledgement frame 3211 as an
acknowledgement of success in sending the routed acknowledgement frame
3210 from the third node 3204 to the second node 3202. The first node
3200 may then send an acknowledgement 3212 to node two 3202 that it
received the routed acknowledgement frame 3211 from node two 3202. This
process may be repeated throughout a single cast frame transmission
sequence, with subsequent nodes (e.g. the fourth or sixtieth node in a
transmission sequence, etc.) wherein a sending node detects a
transmission from a receiving node to a third node, and interprets this
as acknowledgement that the receiving node successfully received a
transmission from the sending node

[0167] In embodiments, this silent acknowledgement routing schema may be
implemented through an ASIC or any other consolidated processor platform
described herein and or illustrated in the included figures.

[0168] In embodiments, a second single cast frame may be sent from the
second node to a third node in a mesh network, and detection of the
second single cast frame by the first node interpreted as an
acknowledgement of success in sending the first single cast frame from
the first node to the second node. A single cast frame may be a routed
single cast frame. It may be routed based at least in part on a routing
table. A single cast frame may be related to a metadata, a command, or
some other form of data. A command may relate to including and or
excluding a node in a mesh network, to enabling a security functionality,
to a communication speed, to a communication channel, to a communication
channel availability, to a network security level, to a network topology,
to a network routing strategy, or some other command type.

[0169] In embodiments, a network mandated speed may be 9.6 kbps, 40 kbps,
100 kbps, or some other communication speed.

[0170] In embodiments, a communication channel availability may be
associated with a single channel or a plurality of channels.

[0171] In embodiments, a network security level may be high, medium, low,
or some other network security level.

[0172] Still referring to FIG. 32, a single cast frame may be routed over
a mesh network topology that is an automation system network for
controlling a device. A device may be a plurality of devices. In
embodiments, the mesh network topology may be implemented within a home.
A home mesh network topology may be related to an audiovisual system,
such as an audiovisual system including an entertainment device. An
entertainment device may be a television, a signal conversion device, a
DVR, a networked device, a UPnP networked device, a satellite receiver, a
cable converter, a VCR, a digital video disc player, a video accessory,
an audio amplifier, an audio tuner, an audio amplifier-tuner combination,
a CD player, a DVD player, a high definition DVD player, an audio
cassette player, a digital audio tape player, an audio equipment, an
equalizer, a phonograph player, a video component, a streaming media
player, an mp3 player, an audio file player, and audio component, an
audio-visual component, or some other entertainment device.

[0173] In embodiments, the mesh network topology may be related to a
security system. A security system may include an alarm, a lock, a
sensor, a detector (such as a motion detector, and the like), or some
other security system component.

[0174] In embodiments, the mesh network may be a wireless mesh network.

[0175] In embodiments, a node within the mesh network may be a multi-speed
node.

[0176] FIG. 33A illustrates a simplified embodiment for dynamically
enabling channel selection within a mesh network containing three
channels. A node may begin a scan one 3308 on channel one 3300 and remain
on the channel for a predefined duration. If the node does not detect a
signal, the node may switch to channel two 3302 and begin scan two 3310.
If during scan two 3310 a signal is not detected, the node may switch to
channel three 3304 and begin scan three 3312. If no signal is detected
during scan three 3312, the node may cycle back to channel one 3300 and
begin scan four 3314. If no signal is detected during scan four 3314, the
node may switch to channel two 3302 and begin scan five 3318. In this
simplified hypothetical example, a signal may be detected during scan
five 3318 on channel two 3302. As depicted in FIG. 33B, the signal that
is detected during scan five 3318 may be a preamble 3334 that indicates
to the node that a message is to follow and that the node should remain
on channel two 3302 beyond the predefined duration originally set for
scan five 3318. Following receipt of the preamble or plurality of
preambles, the node may receive message one 3330 over channel two 3302.
Following receipt of message one 3330, the node may switch to channel
three 3304 and remain on the channel for the predefined duration of scan
six 3320. If no signal is received during scan six 3320, the node may
switch back to channel one 3300 and begin scan seven 3322. Scan seven may
include a signal, such as a preamble or plurality of preambles, and
remain on channel one 3300 beyond the predefined duration in order to
receive message two 3332. Following receipt of message two 3332, the node
may continue switching channels in scan eight 3324, scan nine 3328, and
so forth, remaining on a channel for a predefined duration in order to
detect a signal, and switching channels once the predefined duration has
expired without a signal detected.

[0177] In embodiments, the message received by a node may be a plurality
of messages. The message may be a command. A command may relate to
including and or excluding a node in a mesh network, to enabling a
security functionality, to a communication speed, to a communication
channel, to a communication channel availability, to a network security
level, to a network topology, to a network routing strategy, or some
other command type.

[0178] In embodiments, the dynamic enablement of a secondary channel
described herein may be implemented through an ASIC or any other
consolidated processor platform described herein and or illustrated in
the included figures.

[0179] In embodiments, a network mandated speed may be 9.6 kbps, 40 kbps,
100 kbps, or some other communication speed.

[0180] In embodiments, a communication channel availability may be
associated with a single channel or a plurality of channels.

[0181] In embodiments, a network security level may be high, medium, low,
or some other network security level.

[0182] In embodiments, the signal may be a predefined signal type.

[0183] In embodiments, the signal may be an implementation specific
preamble signal. The implementation specific preamble signal may be
predefined. The implementation specific preamble signal may be
dynamically defined. In embodiments, the implementation specific preamble
signal may equal a specific number of preamble symbol (a symbol consists
of one or more bits). A preamble with less than the specific number of
preamble signals may generate a command for a node to change to another
channel. A preamble with equal the specific number of preamble symbol may
generate a command for a node to remain on the current channel. A
preamble with greater the specific number of preamble signals may
generate a command for a node to remain on the current channel. The
selection of the second channel may be based at least in part on a
combination of receiving the signal and a round robin algorithm, a
combination of receiving the signal and a predefined algorithm, a
combination of receiving the signal and a locally based heuristic, or
some other signal-rule combination.

[0184] In embodiments, the mesh network is a wireless mesh network.

[0185] In embodiments, the present invention may provide a method and
system for using a first node to select a first channel in a mesh
network; transmitting a frame over the first channel to a second node in
the mesh network; and using the first node to select a second channel
over which to transmit the frame to the second node if failure of the
transmission over the first channel to the second node is detected by the
first node.

[0186] While the invention has been disclosed in connection with the
preferred embodiments shown and described in detail, each of the
technologies described herein may be incorporated, associated with,
combined, and the like with each of the use scenarios described herein,
and each of the applications described herein, including market
applications.

[0187] The elements depicted in flow charts and block diagrams throughout
the figures imply logical boundaries between the elements. However,
according to software or hardware engineering practices, the depicted
elements and the functions thereof may be implemented as parts of a
monolithic software structure, as standalone software modules, or as
modules that employ external routines, code, services, and so forth, or
any combination of these, and all such implementations are within the
scope of the present disclosure. Thus, while the foregoing drawings and
description set forth functional aspects of the disclosed systems, no
particular arrangement of software for implementing these functional
aspects should be inferred from these descriptions unless explicitly
stated or otherwise clear from the context.

[0188] Similarly, it will be appreciated that the various steps identified
and described above may be varied, and that the order of steps may be
adapted to particular applications of the techniques disclosed herein.
All such variations and modifications are intended to fall within the
scope of this disclosure. As such, the depiction and/or description of an
order for various steps should not be understood to require a particular
order of execution for those steps, unless required by a particular
application, or explicitly stated or otherwise clear from the context.

[0189] The methods or processes described above, and steps thereof, may be
realized in hardware, software, or any combination of these suitable for
a particular application. The hardware may include a general-purpose
computer and/or dedicated computing device. The processes may be realized
in one or more microprocessors, microcontrollers, embedded
microcontrollers, programmable digital signal processors or other
programmable device, along with internal and/or external memory. The
processes may also, or instead, be embodied in an application specific
integrated circuit, a programmable gate array, programmable array logic,
or any other device or combination of devices that may be configured to
process electronic signals. It will further be appreciated that one or
more of the processes may be realized as computer executable code created
using a structured programming language such as C, an object oriented
programming language such as C++, or any other high-level or low-level
programming language (including assembly languages, hardware description
languages, and database programming languages and technologies) that may
be stored, compiled or interpreted to run on one of the above devices, as
well as heterogeneous combinations of processors, processor
architectures, or combinations of different hardware and software.

[0190] Thus, in one aspect, each method described above and combinations
thereof may be embodied in computer executable code that, when executing
on one or more computing devices, performs the steps thereof. In another
aspect, the methods may be embodied in systems that perform the steps
thereof, and may be distributed across devices in a number of ways, or
all of the functionality may be integrated into a dedicated, standalone
device or other hardware. In another aspect, means for performing the
steps associated with the processes described above may include any of
the hardware and/or software described above. All such permutations and
combinations are intended to fall within the scope of the present
disclosure.

[0191] While the invention has been disclosed in connection with the
preferred embodiments shown and described in detail, various
modifications and improvements thereon will become readily apparent to
those skilled in the art. Accordingly, the spirit and scope of the
present invention is not to be limited by the foregoing examples, but is
to be understood in the broadest sense allowable by law.

[0192] All documents referenced herein are hereby incorporated by
reference.