Patent Description:
LoRa is a spread spectrum modulation technique derived from chirp spread spectrum (CSS) technology. LoRa devices and wireless radio frequency technology is a long range, low power wireless platform that has become the de facto technology for Internet of Things (IoT) networks worldwide.

<CIT> discloses data structures, communication protocol formats and process Rows for controlling and facilitating secure communications between the nodes of a mesh network, such as utility meters and gateway nodes comprising a utility network. The enabled processes include association, information exchange, route discovery and maintenance and the like for instituting and maintaining a secure mesh network.

Various embodiments described herein relate to methods, apparatuses, and systems for establishing various communication networks of devices within a gas detection system. The present invention is defined in the independent claims, to which reference should now be made. Advantageous features are set out in the sub claims.

Embodiments incorporating teachings of the present disclosure are shown and described with respect to the figures presented herein.

The phrases "in one embodiment," "according to one embodiment," and the like generally mean that the particular feature, structure, or characteristic following the phrase may be included in at least one embodiment of the present disclosure, and may be included in more than one embodiment of the present disclosure (importantly, such phrases do not necessarily refer to the same embodiment).

If the specification states a component or feature "may," "can," "could," "should," "would," "preferably," "possibly," "typically," "optionally," "for example," "often," or "might" (or other such language) be included or have a characteristic, that a specific component or feature is not required to be included or to have the characteristic.

Referring now to <FIG>, a schematic diagram depicting an example controller component <NUM> of an example gas detection device in accordance with various embodiments of the present disclosure. As shown, the controller component <NUM> comprises processing circuitry <NUM>, a communication module <NUM>, input/output module <NUM>, a memory <NUM> and/or other components configured to perform various operations, procedures, functions or the like described herein.

As shown, the controller component <NUM> (such as the processing circuitry <NUM>, communication module <NUM>, input/output module <NUM> and memory <NUM>) is electrically coupled to and/or in electronic communication with a sensing component <NUM>. As depicted, the sensing component <NUM> may exchange (e.g., transmit and receive) data with the processing circuitry <NUM> of the controller component <NUM>. For example, sensing component <NUM> may generate a gas detection indication and transmit the gas detection indication to the processing circuitry <NUM>.

The processing circuitry <NUM> may be implemented as, for example, various devices comprising one or a plurality of microprocessors with accompanying digital signal processors; one or a plurality of processors without accompanying digital signal processors; one or a plurality of coprocessors; one or a plurality of multi-core processors; one or a plurality of controllers; processing circuits; one or a plurality of computers; and various other processing elements (including integrated circuits, such as ASICs or FPGAs, or a certain combination thereof). In some embodiments, the processing circuitry <NUM> may comprise one or more processors. In one exemplary embodiment, the processing circuitry <NUM> is configured to execute instructions stored in the memory <NUM> or otherwise accessible by the processing circuitry <NUM>. When executed by the processing circuitry <NUM>, these instructions may enable the controller component <NUM> to execute one or a plurality of the functions as described herein. No matter whether it is configured by hardware, firmware/software methods, or a combination thereof, the processing circuitry <NUM> may comprise entities capable of executing operations according to the embodiments of the present invention when correspondingly configured. Therefore, for example, when the processing circuitry <NUM> is implemented as an ASIC, an FPGA, or the like, the processing circuitry <NUM> may comprise specially configured hardware for implementing one or a plurality of operations described herein. Alternatively, as another example, when the processing circuitry <NUM> is implemented as an actuator of instructions (such as those that may be stored in the memory <NUM>), the instructions may specifically configure the processing circuitry <NUM> to execute one or a plurality of algorithms and operations described herein.

The memory <NUM> may comprise, for example, a volatile memory, a non-volatile memory, or a certain combination thereof. Although illustrated as a single memory in <FIG>, the memory <NUM> may comprise a plurality of memory components. In various embodiments, the memory <NUM> may comprise, for example, a hard disk drive, a random access memory, a cache memory, a flash memory, a Compact Disc Read-Only Memory (CD-ROM), a Digital Versatile Disk Read-Only Memory (DVD-ROM), an optical disk, a circuit configured to store information, or a certain combination thereof. The memory <NUM> may be configured to store information, data, application programs, instructions, and etc., so that the controller component <NUM> can execute various functions according to the embodiments of the present disclosure. For example, in at least some embodiments, the memory <NUM> is configured to cache input data for processing by the processing circuitry <NUM>. Additionally, or alternatively, in at least some embodiments, the memory <NUM> is configured to store program instructions for execution by the processing circuitry <NUM>. The memory <NUM> may store information in the form of static and/or dynamic information. When the functions are executed, the stored information may be stored and/or used by the controller component <NUM>.

The communication module <NUM> may be implemented as any apparatus included in a circuit, hardware, a computer program product or a combination thereof, which is configured to receive and/or transmit data from/to another component or apparatus. The computer program product comprises computer-readable program instructions stored on a computer-readable medium (for example, the memory <NUM>) and executed by a controller component <NUM> (for example, the processing circuitry <NUM>). In some embodiments, the communication module <NUM> (as with other components discussed herein) may be at least partially implemented as the processing circuitry <NUM> or otherwise controlled by the processing circuitry <NUM>. In this regard, the communication module <NUM> may communicate with the processing circuitry <NUM>, for example, through a bus. The communication module <NUM> may comprise, for example, antennas, transmitters, receivers, transceivers, network interface cards and/or supporting hardware and/or firmware/software, and is used for establishing communication with another apparatus. The communication module <NUM> may be configured to receive and/or transmit any data that may be stored by the memory <NUM> by using any protocol that can be used for communication between apparatuses. The communication module <NUM> may additionally or alternatively communicate with the memory <NUM>, the input/output module <NUM> and/or any other component of the controller component <NUM>, for example, through a bus.

In some embodiments, the controller component <NUM> may comprise an input/output module <NUM>. The input/output module <NUM> may communicate with the processing circuitry <NUM> to receive instructions input by the user and/or to provide audible, visual, mechanical or other outputs to the user. Therefore, the input/output module <NUM> may comprise supporting devices, such as a keyboard, a mouse, a display, a touch screen display, and/or other input/output mechanisms. Alternatively, at least some aspects of the input/output module <NUM> may be implemented on a device used by the user to communicate with the controller component <NUM>. The input/output module <NUM> may communicate with the memory <NUM>, the communication module <NUM> and/or any other component, for example, through a bus. One or a plurality of input/output modules and/or other components may be included in the controller component <NUM>.

According to various embodiments, the disclosed gas detection device may be deployed for real-time remote monitoring of potentially hazardous environments. For example, the disclosed gas detection device may be used where it is critical to maintain visibility on gas threats, such as protecting industrial workers and first responders, or establishing a perimeter during a hazmat event. In some embodiments, a plurality of the disclosed gas detection device may be configured in a network to communicate with each other as well as to support long-distance remote monitoring. Thus, there is a need for a network scheme that provides stability, security, and support group alarm function.

In accordance with various examples of the present disclosure, a gas detection network is provided for a plurality of the disclosed gas detection device for communication. The gas detection network may comprise a LoRa private network comprising two network topology modes of operation. As an example, the gas detection network may allow the plurality of the disclosed gas detection device to communicate using LoRa in either a tree network mode or a parallel network mode. The plurality of the disclosed gas detection device may switch between the tree network mode and the parallel network mode based on a presence of a gateway. That is, the plurality of the disclosed gas detection device, when configured in a tree network mode, may go offline and enable broadcasting to establish a parallel network based on a removal (e.g., failure, loss connection, out-of-range, offline) of a gateway device from the tree network. Conversely, the plurality of the disclosed gas detection device, when configured in a parallel network mode, may stop broadcasting and join a tree network based on an addition or connection of a gateway device to the gas detection network.

Referring now to <FIG>, an example gas detection system is shown. In particular, <FIG> depicts a gas detection system <NUM> including various components connected in a LoRa private network according to various embodiments disclosed herein. The gas detection system <NUM> comprises gas detection devices <NUM> and <NUM>, routers <NUM>, gateway <NUM>, and central network <NUM>. In the illustrated embodiment, gas detection devices <NUM> and <NUM>, routers <NUM>, and gateway <NUM> may be connected in a LoRa private network according to a tree network mode. Gas detection devices <NUM> and <NUM> may include data transmission functionality for communicating with routers <NUM> or gateway <NUM>.

Routers <NUM> may comprise wireless infrastructure devices that can operate as an access point to communicate and deliver data within the LoRa private network, such as between gas detection devices <NUM>, <NUM>, and gateway <NUM>. In some embodiments, routers <NUM> may include functionalities of the disclosed gas detection device. According to another embodiment, routers <NUM> may comprise a dedicated device for relaying wireless signals. As an example, routers <NUM> may operate as range extender to increase wireless transmission distances of gas detection devices <NUM> and <NUM>. Routers <NUM> may support multi-hop routing to provide better network coverage and enhance connection stability. The routers <NUM> may also manage data routes of child node devices (e.g., gas detection device <NUM>) in the tree network mode and can trigger alarm notification devices.

Gateway <NUM> may comprise a network device that connects the LoRa private network portion of gas detection system <NUM> (e.g., gas detection devices <NUM>, <NUM>, routers <NUM>, and gateway <NUM> itself) to central network <NUM>. The gateway <NUM> may include hardware, such as network interface cards, and software for interfacing communications from the LoRa private network to the central network <NUM>. The gateway <NUM> may also manage data routes of all child node devices and branches (e.g., gas detection devices <NUM>, <NUM>, and routers <NUM>) in the tree network mode.

Central network <NUM> may comprise an endpoint of which gas detection devices <NUM>, <NUM>, routers <NUM>, and gateway <NUM> may ultimately communicate with. For example, real-time detection data from gas detection devices <NUM>, <NUM>, and routers <NUM> may be propagated to the central network <NUM> through various layer nodes (e.g., from bottom layer to top layer) of the LoRa private network.

According to some embodiments, the central network <NUM> may be coupled to a remote server to provide centralized monitoring of data received from devices connected in the LoRa private network, such as real-time threat readings, alarm status, location of each device. As an example, central network <NUM> may receive detection readings and location data of gas detection devices <NUM>, <NUM>, and routers <NUM> and monitor the status of gas detection devices <NUM>, <NUM>, and routers <NUM>. Accordingly, access to real-time data, and location of gas detection devices <NUM>, <NUM>, and routers <NUM> may be used to monitor workers as well as determine location and severity of a threat.

As discussed above, devices within a gas detection system may be connected to a LoRa private network based on a tree network configuration. <FIG> presents a diagram of an exemplary tree network architecture according to various embodiments of the present disclosure. The illustrated embodiment comprises a tree network <NUM> comprising nodes belonging to a plurality of layers, Layers <NUM> through <NUM>. Each layer includes nodes representative of gas detection devices, routers, and a gateway that are connected according to a tree hierarchy. The layers may represent parent child node relationships of the gas detection devices, routers, and gateway. Parent and child node connections may be established based on one or more factors, such as functionality, capability, distance, signal strength, or network traffic load. In various embodiments of the present disclosure, the top-most layer, such as Layer <NUM>, is assigned to a gateway.

Layer <NUM> comprises gateway <NUM>. Gateway <NUM> is directly connected to child nodes in Layer <NUM> comprising router <NUM>, gas detection device <NUM>, router <NUM>, and gas detection device <NUM>. Router <NUM> and router <NUM> are further connected to child nodes in Layer <NUM>. In particular, router <NUM> is directly connected to router <NUM>, gas detection device <NUM>, and gas detection device <NUM> and router <NUM> is directed connected to router <NUM> and gas detection device <NUM>. Router <NUM> is further connected to child nodes in Layer <NUM> comprising router <NUM>, gas detection device <NUM>, and gas detection device <NUM>. Router <NUM> is further connected to child nodes in Layer <NUM> comprising router <NUM>, gas detection device <NUM>, and gas detection device <NUM>.

The gateway <NUM> and routers <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> may have certain attributes, for example, as depicted in Table <NUM>.

A "Capability" attribute may be allocated to gateway and routers. Capability may comprise a resource quantity representative of a gateway's or router's capacity for accepting child node connections with a router or gas detection device based on layer level. Capability of routers may be allocated by its parent node (either a gateway or a router) when connected. The gateway <NUM> being the root node may be pre-allocated a given amount of capability. Generally, gateway/routers in higher layers of the tree network <NUM> are allocated with greater capability than routers in lower layers. For example, gateway <NUM> in Layer <NUM> is allocated a greatest amount of capability ('<NUM>'), while router <NUM> in Layer <NUM> is allocated with no capability.

A parent router may accept connections from child node routers or gas detection devices. Additionally, when a child router connects to a parent node, capability of the parent may be allocated to the child router. The "RTR_Alloc" attribute may comprise a capability cost if a router was connected to a parent node at a given layer. If a parent node has enough capability (e.g., capability > RTR_Alloc), capability equal to the RTR_Alloc can be allocated from the parent node's remaining capability to a child router. However, if the parent node has a remaining capability greater than '<NUM>' but less than RTR_Alloc, the remaining capability may be allocated to the child router. A gateway or router may accept connections until its capability is exhausted. That is, capability may be allocated for every device connection until the capability is exhausted (i.e., capability = <NUM>). The "RTR_MAX" attribute may define a maximum amount of child routers allowed to connect to a parent node at a given layer. In certain instances, such as in the illustrated embodiment, router <NUM> may be allowed to connect to router <NUM> having a RTR_MAX = <NUM> provided that router <NUM> is configured as a detector device and does not function as a router. The "RTR MAX num in layer" attribute may define a maximum number of routers in a given layer.

Referring now to <FIG>, <FIG>, and <FIG>, example flow diagrams illustrating exemplary methods of setting up a tree network in accordance with some example embodiments of the present disclosure is provided. It is noted that each block of a flowchart, and combinations of blocks in the flowcharts, may be implemented by various means such as hardware, firmware, circuitry and/or other devices associated with execution of software including one or more computer program instructions. For example, one or more of the steps/operations described in <FIG>, <FIG>, and <FIG> may be embodied by computer program instructions, which may be stored by a non-transitory memory of an apparatus employing an embodiment of the present disclosure and executed by a processor component in an apparatus (such as, but not limited to, a gas detection device, a router, a gateway, a programable processor, a client computing device, a remote computing server, and/or the like). For example, these computer program instructions may direct the processor component to function in a particular manner, such that the instructions stored in the computer-readable storage memory produce an article of manufacture, the execution of which implements the function specified in the flowchart block(s).

In <FIG>, the example method <NUM> may be executed by a computing device associated with a gateway for handling child node connection requests from broadcasting devices requesting to join a tree network according to some embodiments of the present disclosure. According to various embodiments described herewith, the requests to join the tree network may be in response to a detection of the gateway. As an example, the broadcasting devices may switch over from a parallel network configuration to a tree network configuration.

At step <NUM>, a root node of a tree network is initialized by the computing device. The root node may comprise a node device that is designated as a destination of data communications from all other node devices in the tree network. As an example, the computing device may function as a destination device node where child node devices may communicate data to, either directly or via intermediate device nodes. The computing device may manage data routes of all child node devices and branches in the tree network.

The tree network may comprise, for example, a network of devices capable of wireless communication within a gas detection system. In some embodiments, the tree network may comprise a LoRa private network, or any local area computer network that uses a private address space of Internet Protocol addresses. The computing device may connect the tree network to another network external to the tree network, such as a central network.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device monitors for a beacon request broadcast. Monitoring for the beacon request broadcast may comprise detecting a beacon request broadcast from a broadcasting device. The beacon request may comprise a request, from a broadcasting device, for devices with available capability to connect with the broadcasting device. A beacon request may be broadcasted from, for example, either a gas detection device or a router that is switching over from a parallel network configuration and searching for a parent node device to connect with in order to join the tree network. <FIG> presents an exemplary depiction of a gateway <NUM> monitoring for a beacon request broadcasted from router <NUM>.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines available capability to support a connection with the broadcasting device. Capability may comprise a resource quantity representative of the computing device's (i.e., gateway's) capacity for accepting child node device connections. The computing device may be pre-allocated a given amount of capability which may be further allocated from the computing device to child node devices. Determining available capability may further comprise determining a child node device type corresponding to the broadcasting device. Different types of child node devices may require different amounts of capability. For example, a connection with a router may require greater capability from the computing device than a gas detection device.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device generates a beacon response based on the available capability. The beacon response may comprise a message including an indication that the computing device has available capability or a value of the available capability. In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device transmits the beacon response to the broadcasting device. <FIG> depicts exemplary transmission of a beacon response, such as from gateway <NUM> to router <NUM>.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines whether a joining request has been received from the broadcasting device. The joining request may comprise a request to connect with the computing device to join the tree network. In certain embodiments, the broadcasting device may be given a predetermined amount of time to respond. In some embodiments, subsequent to step <NUM>, if a joining request is not received from the broadcasting device, the example method proceeds to step <NUM>, where the computing device continues to monitor for additional beacon request broadcasts. According to another embodiment, the computing device may proceed to monitor for other beacon request broadcasts without determining whether a joining request has been received from the broadcasting device. That is, the computing device may advertise availability and fulfill joining requests on a first-come-first-served basis regardless of the timing in which beacon responses were transmitted by the computing device.

In some embodiments, subsequent to step <NUM>, if a joining request is received from the broadcasting device, the example method proceeds to step <NUM>, where the computing device establishes the broadcasting device as a child node device. <FIG> depicts exemplary receiving of joining requests. For example, a joining request from router <NUM> is received by gateway <NUM>. Establishing the broadcasting device as a child node device may include allocating the computing device's capability to the child node device, assigning a network address to the child node device, and recording a media access control (MAC) address of the broadcasting device as a MAC address of the child node device.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where computing device transmits a join confirmation to the broadcasting device based on the establishment of the broadcasting device as a child node device. The join confirmation may comprise a message that confirms connection to the tree network via a connection between the computing device and the broadcasting device. The join confirmation may include the assigned network address and a capability value representative of capability that is distributed from the computing device to the child node device. The capability value may be allocated to the child node device, which may determine whether the child node device (e.g., if the child node device is a router) is able to accept a connection with another child node device as a parent node device. As shown in <FIG>, gateway <NUM> transmits a join confirmation to router <NUM>.

In <FIG>, the example method <NUM> may be executed by a computing device associated with a gas detection device or a router for soliciting to join a tree network according to some embodiments of the present disclosure. At step <NUM>, the computing device broadcasts a beacon request to search for a parent node device to connect with in order to join a tree network. For example, the computing device may comprise either a gas detection device or a router that is switching over from a parallel network configuration and searching for a parent node device to connect with in order to join the tree network. The parent node device may comprise a gateway, a router connected to a gateway, or a router connected to one or more additional routers that are connected to a gateway. The beacon request may comprise a request, from the computing device, for devices with available capability to connect with the computing device. The beacon request may be broadcasted to devices, for example, a gateway or routers within wireless communication range of the computing device. <FIG> presents an exemplary depiction of a router <NUM> broadcasting a beacon request to a plurality of devices including gateway <NUM>, router <NUM>, and router <NUM>, and of a device <NUM> broadcasting a beacon request to a plurality of devices including router <NUM>, router <NUM>, and router <NUM>.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where one or more beacon responses are received by the computing device. A beacon response may comprise a message including an indication that a given device in receipt of the beacon request has available capability. The computing device may receive a beacon response from any beacon responding device within transmission range of the computing device (e.g., a gateway, a router connected to a gateway, or a router connected to one or more additional routers that are connected to a gateway) and having capability to add the computing device as a child node device. For example, referring to <FIG>, router <NUM> receives beacon responses from gateway <NUM>, router <NUM>, and router <NUM>, and device <NUM> receives beacon responses from router <NUM>, router <NUM>, and router <NUM>.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines which of beacon responding devices, corresponding to the one or more beacon responses, to request joining based on one or more criteria. The one or more criteria may include minimum number of hops, best received signal strength indicator (RSSI), and signal noise ratio (SNR). According to various embodiments, the minimum number of hops may be given high priority.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device transmits a joining request to a given beacon responding device based on the determination. The joining request may comprise a request to connect with the beacon responding device to join the tree network. That is, the joining request may be representative of a selection of the given beacon responding device as a parent node device. Beacon responses from beacon responding devices not requested for joining may be ignored and not selected for connection. <FIG> depicts exemplary transmission of a joining request from router <NUM> to gateway <NUM> and a joining request from device <NUM> to router <NUM>.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device receives a join confirmation from the given beacon responding device. In certain embodiments, the computing device may resend the joining request to the given beacon responding device if a join confirmation has not been received from the given beacon responding device within a given period of time. According to another embodiment, the computing device may return to step <NUM> if a join confirmation has not been received from the given beacon responding device after resending of the joining request to the given beacon responding device.

The join confirmation may comprise a message that confirms a connection to the tree network via a connection between the computing device and the given beacon responding device. The join confirmation may include the assigned network address and a capability value representative of capability that is distributed from the given beacon responding device (parent node device) to the computing device. The capability value may be allocated to the computing device, which may determine whether the computing device is able to establish a connection with a child node device as a parent node device. Referring to <FIG>, exemplary receipt of join confirmations is depicted by router <NUM> receiving a join confirmation from gateway <NUM>, and device <NUM> receiving a join confirmation from router <NUM>.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device records the MAC address and the network address of the given beacon responding device for association as a parent node device based on the join confirmation. For example, the computing device, now a child node device to the given beacon responding device serving as the parent node device, may use the MAC address and the network address of the given beacon responding device for communication and routing with the given beacon responding device. Referring to <FIG>, upon receiving the join confirmation, the router <NUM> is connected to the tree network and record the MAC address and the network address of the gateway <NUM>.

In <FIG>, the example method <NUM> may be executed by a computing device associated with a router in a tree network for handling child node connection requests from broadcasting devices requesting to join a tree network according to some embodiments of the present disclosure. According to various embodiments described herewith, the requests to join the tree network may be in response to a detection of a gateway. As an example, the broadcasting devices may switch over from a parallel network configuration to a tree network configuration. In various embodiments, the router may be configured as a child node device connected to a parent node device. The parent node device may comprise a gateway, a router connected to a gateway, or a router connected to one or more additional routers that are connected to a gateway.

At step <NUM>, the computing device monitors for a beacon request broadcast. The beacon request may comprise a request, from a broadcasting device, for devices with available capability to connect with the broadcasting device. Monitoring for the beacon request broadcast may comprise detecting a beacon request broadcast from a broadcasting device. A beacon request may be broadcasted from, for example, either a gas detection device or a router that is switching over from a parallel network configuration and searching for a parent node device to connect with in order to join the tree network.

<FIG> presents examples of routers monitoring for beacon request broadcasts. As shown in the illustrated embodiment, router <NUM>, router <NUM>, and router <NUM> are configured to monitor for beacon requests. Beacon requests may be detected by router <NUM>, router <NUM>, and router <NUM> based on factors, such as distance, broadcast signal strength, and signal noise. Router <NUM> and router <NUM> are able to receive beacon requests broadcasted from router <NUM> and device <NUM>, while router <NUM> is only able to receive a beacon request broadcasted from device <NUM>.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines available capability to support a connection with the broadcasting device. Capability may comprise a resource quantity representative of the computing device's (router's) capacity for accepting child node device connections. The computing device may be allocated a given amount of capability (e.g., from a parent node device) which may be further allocated from the computing device to child node devices. Determining available capability may further comprise determining a child node device type corresponding to the broadcasting device. Different types of child node devices may require different amounts of capability. For example, a connection with a router may require greater capability from the computing device than a gas detection device.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device generates a beacon response based on the available capability. The beacon response may comprise a message including an indication that the computing device has available capability or a value of the available capability. In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device transmits the beacon response to the broadcasting device. <FIG> depicts exemplary transmission of beacon responses. Router <NUM> and router <NUM> transmit beacon responses to router <NUM> and device <NUM>, and router <NUM> transmits a beacon response to device <NUM>.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines whether a joining request has been received from the broadcasting device. The joining request may comprise a request to connect with the computing device to join the tree network. <FIG> depicts exemplary receiving of a joining request by router <NUM> from device <NUM>.

In certain embodiments, the broadcasting device may be given a predetermined amount of time to respond. In some embodiments, subsequent to step <NUM>, if a joining request is not received from the broadcasting device, the example method proceeds to step <NUM>, where the computing device continues to monitor for additional beacon request broadcasts. According to another embodiment, the computing device may proceed to monitor for other beacon request broadcasts without determining whether a joining request has been received from the broadcasting device. That is, the computing device may advertise availability and fulfill joining requests on a first-come-first-served basis regardless of the timing in which beacon responses were transmitted by the computing device.

In some embodiments, subsequent to step <NUM>, if a joining request is received from the broadcasting device, the example method proceeds to step <NUM>, where the computing device establishes the broadcasting device as a child node device. Establishing the broadcasting device as a child node device may include allocating the computing device's capability to the child node device, assigning a network address to the child node device, and recording a media access control (MAC) address of the broadcasting device as a MAC address of the child node device.

Referring back to <FIG>, in some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where computing device transmits a join confirmation to the broadcasting device based on the establishment of the broadcasting device as a child node device. The join confirmation may comprise a message that confirms connection to the tree network via a connection between the computing device and the broadcasting device. The join confirmation may include the assigned network address and a capability value representative of capability that is distributed from the computing device to the child node device. The capability value may be allocated to the child node device, which may determine whether the child node device (e.g., if the child node device is a router) is able to accept a connection with another child node device as a parent node device. As shown in <FIG>, router <NUM> transmits a join confirmation to device <NUM>.

<FIG> presents a tree network diagram of exemplary node addresses for data transmission and routing according to various embodiments of the present disclosure. A tree network <NUM> comprises a plurality of nodes belonging to a plurality of layers, Layers <NUM> through <NUM>. Node <NUM> comprises a gas detection device on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> comprises a router on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> comprises a router on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> comprises a router on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> comprises a gateway on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> comprises a router on layer <NUM> including a MAC address of '<NUM>' and a network address of '<NUM>'. Node <NUM> may comprise a root node device that is designated as a destination of data communications from all node devices within tree network <NUM>. As an example, node <NUM> may function as a destination device node where child node devices may communicate data to, either directly or via intermediate device nodes.

Data from a given node may be transmitted to a destination node. Frames may be transmitted between nodes of tree network <NUM> to facilitate the data transmission. A frame may comprise a data transmission unit including control information and a data payload. In some embodiments, the given node may need to forward a frame to one or more intermediate nodes in order to send data to a destination node.

<FIG> presents exemplary upstream transmission frames according to various embodiments of the present disclosure. Frames 1202A, 1202B, 1202C, and 1202D represent control information portions of a frame transmitted upstream through a plurality of nodes from node <NUM> to node <NUM>. Each frame may include a "NWK" value for "SRC" denoting a network address of an originating source node of the frame and a "NWK" value for "Des" denoting a network address of a destination of the frame. The "Des" value for "NWK" may be used by a recipient node of a frame to determine a next node to transmit the frame to reach a node having a "NWK" equal to "Des. " The "SRC" value for "NWK" may be used by a destination node to determine an origination of a frame. A frame may further include a "MAC" value for "SRC" denoting a MAC address of a current node transmitting the frame and a "MAC" value for "Des" denoting a MAC address of a node the current node is transmitting the frame to.

Node <NUM> may communicate data to node <NUM> by transmitting a frame through nodes <NUM>, <NUM>, and <NUM>. The node <NUM> generates a frame 1202A. Frame 1202A includes a "SRC" value of '<NUM>' (corresponding to node <NUM>) and a "Des" value of '<NUM>' for "NWK" (corresponding to node <NUM>. The "Des" value for "NWK" may be used by a receiving node of frame 1202A to determine a next node to transmit the frame 1202A in order to reach a destination node having a "NWK" value equal to the "Des" value (e.g., node <NUM> having a "NWK" value of '<NUM>'). The "SRC" value for "NWK" may be used by the destination node (node <NUM>) of the frame 1202A to identify node <NUM> (having a "NWK" value of <NUM>) as the source of the frame 1202A. Frame 1202A also includes a "SRC" value of '<NUM>' and a "Des" value of '<NUM>' for "MAC" corresponding to a transmission of the frame 1202A from node <NUM> (having a "MAC" of '<NUM>') to node <NUM> (having a "MAC" of '<NUM>'). Node <NUM> transmits frame 1202A to node <NUM>.

Node <NUM> receives the frame 1202A and identifies '<NUM>' as the "Des" value for "NWK. " Based on the identification, node <NUM> modifies frame 1202A into frame 1202B by changing the "SRC" of the "MAC" to '<NUM>' (associated with the current node <NUM>) and "Des" of the "MAC" to '<NUM>' (associated with node <NUM>) for a next hop to reach node <NUM>. Frame 1202B is subsequently transmitted to node <NUM>.

Node <NUM> receives the frame 1202B and identifies '<NUM>' as the "Des" value for "NWK. " Based on the identification, node <NUM> modifies frame 1202B into frame 1202C by changing the "SRC" of the "MAC" to '<NUM>' (associated with the current node <NUM>) and "Des" of the "MAC" to '<NUM>' (associated with node <NUM>) for a next hop to reach node <NUM>. Frame 1202C is subsequently transmitted to node <NUM>.

Node <NUM> receives the frame 1202C and identifies '<NUM>' as the "Des" value for "NWK. " Based on the identification, node <NUM> modifies frame 1202C into frame 1202D by changing the "SRC" of the "MAC" to '<NUM>' (associated with the current node <NUM>) and "Des" of the "MAC" to '<NUM>' (associated with node <NUM>) which is the destination node. Frame 1202D is subsequently transmitted to node <NUM>.

When a node receives a frame not directly from its child node, it may record the "SRC" value of "NWK" as a branch of a node corresponding to the "SRC" value of "MAC" from the frame. For example, node <NUM> may record NWK '<NUM>' as node <NUM>'s branch, node <NUM> may record NWK '<NUM>' as node <NUM>'s branch, and node <NUM> may record NWK '<NUM>' as node's <NUM> branch. The recorded branches can used for downstream frame routing.

<FIG> presents exemplary downstream transmission frames according to various embodiments of the present disclosure. Frames 1302A, 1302B, 1302C, and 1302D represent control information portions of a frame transmitted downstream through a plurality of nodes from node <NUM> to node <NUM>. For downstream data communication, a node may search for the "Des" value of "NWK" in its list of child nodes and branches to identify a value for "Des" of "MAC" for transmitting a frame. According to the illustrated example, node <NUM> generates a frame 1302A for transmission to node <NUM>. Frame 1302A includes a "SRC" value of '<NUM>' (corresponding to node <NUM>) and a "Des" value of '<NUM>' for "NWK" (corresponding to node <NUM>). Node <NUM> may determine that "Des" value of '<NUM>' for "NWK" is a branch of node <NUM> and assigns "Des" value of '<NUM>' to "MAC" of frame 1302A. Node <NUM> transmits frame 1302A to node <NUM>.

Node <NUM> receives the frame 1302A and may determine that "Des" value of '<NUM>' for "NWK" is a branch of node <NUM> and assigns "Des" value of '<NUM>' to "MAC" and creates frame 1302B. Node <NUM> transmits frame 1302B to node <NUM>.

Node <NUM> receives the frame 1302B and may determine that "Des" value of '<NUM>' for "NWK" is a branch of node <NUM> and assigns "Des" value of '<NUM>' to "MAC" and creates frame 1302C. Node <NUM> transmits frame 1302C to node <NUM>.

Node <NUM> receives the frame 1302C and may determine that "Des" value of '<NUM>' for "NWK" is a child node and assigns "Des" value of '<NUM>' to "MAC" and creates frame 1302D. Node <NUM> transmits frame 1302D to node <NUM>.

<FIG> presents a diagram of exemplary network mode switching according to various embodiments of the present disclosure. Node devices within tree network <NUM> may automatically switch over to operate in a parallel network <NUM> upon removal of a gateway from tree network <NUM>. Removal of a gateway from tree network <NUM> may result for various reasons, such as being out of range from all the devices within the tree network <NUM>, offline, or loss of connectivity. Upon removal of the gateway from tree network <NUM>, node devices may go offline and switch over to broadcasting (<NUM>) in order to create parallel network <NUM>.

<FIG> presents an example gas detection system configured in a parallel network according to some embodiments of the present disclosure. A gas detection system <NUM> is depicted. The gas detection system <NUM> includes devices <NUM>, <NUM>, <NUM>, and <NUM> that are communicating in parallel network. The <NUM>, <NUM>, <NUM>, and <NUM> may comprise gas detection devices, routers, or a combination thereof.

<FIG> presents an example flow diagram illustrating an exemplary method of handling frame broadcasts from frame broadcasting devices requesting to join a parallel network according to some embodiments of the present disclosure. According to various embodiments described herewith, the requests to join the parallel network may be in response to loss or removal of a gateway from an existing tree network. As an example, the broadcasting devices may switch over from a tree network configuration to a parallel network configuration.

In <FIG>, the example method <NUM> may be executed by a computing device associated with a gas detection device or a router in the parallel network. At step <NUM>, monitors for frame broadcasts. A frame broadcast may comprise a transmission of a frame including control information and a data payload for distribution among devices within the parallel network. The frame may be broadcasted from, for example, either a gas detection device or a router to nearby devices that are able to receive the frame.

In some embodiments, subsequent to step <NUM>, the example method proceeds to step <NUM>, where the computing device determines whether a given broadcasted frame is duplicative. Determining whether the frame is duplicative may include comparing control information and data payload of the given broadcasted frame with previous frames received by the computing device. In some embodiments, if the frame is duplicative, the computing device monitors for other frame broadcasts at step <NUM>. Non-duplicative frames may be stored or processed by the computing device according to application-specific functions that may be executed by the computing device. For example, data payload from the frame may be accessed and rendered for display or used to generate alarms in gas-detection applications.

In some embodiments, subsequent to step <NUM>, if the frame is not duplicative, the example method proceeds to step <NUM>, where the computing device determines whether the amount of hops associated with the frame is greater than '<NUM>'. The amount of hops may be included in each frame and reduced by '<NUM>' after each relay of the frame to another device. In some embodiments, if the amount of hops is not greater than '<NUM>', the computing device monitors for other frame broadcasts at step <NUM>. In some embodiments, subsequent to step <NUM>, if the amount of hops is greater than '<NUM>', the example method proceeds to step <NUM>, where the computing device broadcasts the frame to nearby devices.

<FIG> presents a diagram of broadcasting devices in a parallel network according to various embodiments of the present disclosure. Parallel network <NUM> comprises device <NUM>, device <NUM>, router <NUM>, router <NUM>, router <NUM>, router <NUM>, and router <NUM>. In the illustrated embodiment, a gateway is omitted from parallel network <NUM> and as such, data communications are relayed among device <NUM>, device <NUM>, router <NUM>, router <NUM>, router <NUM>, router <NUM>, and router <NUM>.

For example, a frame from a device or router can be broadcasted and relayed to other nearby devices or routers. In particular, a given device or router may originate a frame and set a maximum number of hops the frame can be relayed. Every time the frame is relayed, the number of allowed hops for the frame may be subtracted by '<NUM>'. The frame may continue to be relayed until the number of allowed hops associated with the frame is exhausted (e.g., hops = '<NUM>'). Routers may also filter duplicated frames. For example, router <NUM> receives a frame broadcasted from device <NUM> and also receives the same frame relayed from router <NUM>. In this case, router <NUM> filters out the duplicative frame that has made the most hops or the least amount of allowed hops (i.e., the frame received from router <NUM>). Similarly, a frame transmitted from router <NUM> to <NUM> with hops = '<NUM>' is duplicative of a frame transmitted from <NUM> with hops = '<NUM>', and a frame transmitted from router <NUM> to router <NUM> with hops = '<NUM>' is duplicative of a frame transmitted from router <NUM> to router <NUM> with hops = '<NUM>'. The duplicative frames including the least amount of allowed hops may be filtered out. Once the frame has reached router <NUM>, the amount of hops may be reduced to '<NUM>' and the frame is no longer relayed from router <NUM>.

<FIG>, presents a diagram of exemplary network mode switching according to various embodiments of the present disclosure. Node devices within parallel network <NUM> may automatically switch over to operate in a tree network <NUM> upon the addition or introduction of a gateway to parallel network <NUM>. Upon adding a gateway to parallel network <NUM>, node devices may stop broadcasting (<NUM>) start connecting to the gateway and build the tree network <NUM> as described with reference to <FIG>.

As described above and as will be appreciated based on this disclosure, embodiments of the present disclosure may comprise various means including entirely of hardware or any combination of software and hardware. Furthermore, embodiments may take the form of a computer program product on at least one non-transitory computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. Similarly, embodiments may take the form of a computer program code stored on at least one non-transitory computer-readable storage medium. Any suitable computer-readable storage medium may be utilized including non-transitory hard disks, CD-ROMs, flash memory, optical storage devices, or magnetic storage devices.

Claim 1:
A method for establishing a tree network of devices within a gas detection system, the gas detection system comprising one or more broadcasting devices, and a gateway, the method comprising:
initializing the gateway as a root node of a tree network (<NUM>);
monitoring, by the gateway, for a beacon request broadcast, wherein the beacon request broadcast is detected by the gateway from a given one of the one or more broadcasting devices, the given broadcasting device switching over from a parallel network configuration to join the tree network, and wherein the beacon request comprises a request for devices within the gas detection system with available capability to connect with the broadcasting device;
determining, by the gateway, available capability to support a connection with the broadcasting device;
generating, by the gateway, a beacon response based on the determination of available capability;
transmitting, by the gateway, the beacon response to the broadcasting device;
establishing, by the gateway, the broadcasting device as a child node device based upon a receipt of a joining request; and
transmitting, by the gateway, a join confirmation to the broadcasting device based on the establishment of the broadcasting device as a child node device.