System and method for a mobile AD HOC network suitable for aircraft
Claim Score by NHIP
Abstract
The present invention provides a wireless ad hoc network suitable for sharing data on a peer-to-peer basis between nodes, some of which may be aircraft, having a terminal device comprising a wireless communications transceiver, a sensor, and a computing device. Multiple hops between nodes maximize range of the network. In addition, architectures for terminal devices allow for use of a wide variety of wireless communications transceivers and sensors, without affecting applications that use the network. Such invention may include, among others, a fire fighting application allowing different aircraft to co-ordinate firefighting activities by using shared fire and positional data for aircraft.

Term
Term ended
Projected expiry passed 20 August 2024, 2.1 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
71 claims: 8 independent, 63 dependent
- 1A wireless communications system for communicating a data message comprising:a wireless data communication network for transmitting and receiving the data message;a source computing device, connected to said wireless data communication network, for generating the data message;a plurality of receiving computing devices connected to said wireless data communication network, said plurality of receiving computing devices further comprising a destination computing device, for receiving and further transmitting the data message until said destination computing device receives the data message;and software on each source and receiving computing device for managing the data message and said transmitting and said receiving;wherein at least two of said source computing device and said receiving computing devices are installed on vehicles, at least one of said vehicles being an airborne vehicle.
- 12A method for wireless data communication of a data message comprising:generating the data message on a source computing device connected to a wireless data communication network comprising a plurality of wireless data transceivers installed at least on a plurality of vehicles;transmitting the data message on said wireless data communication network to at least one receiving device from a plurality of receiving computing devices connected to said wireless data communication network;receiving the data message on said at least one receiving computing device;and unless said at least one receiving computing devices is a destination computing device for the data message, further transmitting the data message from said at least one receiving device to at least one other receiving computing device until said destination computing device receives the data message, wherein at least two computing devices among said source computing device and said receiving computing devices are installed on said vehicles, at least one of said vehicles being an airborne vehicle.
- 20A networking system for collaboration among a plurality of aircraft, said networking system comprising:a sensor provided to each of said plurality of aircraft;and a terminal device provided to each of said plurality of aircraft, said terminal device comprising: a wireless communication device for communicating with wireless communication devices and terminal devices on others of said plurality of aircraft to form an ad hoc wireless network when in communication range;a computing device in communication with said wireless communication device and said sensor, said computing device comprising: means for receiving information from said sensor;means for communicating said sensor information to computing devices on others of said plurality of aircraft via said ad hoc wireless network and for receiving said sensor information from computing devices on others of said plurality of aircraft via said ad hoc wireless network;and a graphical user interface (GUI) for displaying sensor information received from said sensor and received from computing devices on others of said plurality of aircraft.
- 34A terminal device for an ad hoc network for use with aircraft, said terminal device comprising:a sensor;and a wireless communication device for communicating with wireless communication devices and terminal devices on other aircraft to form an ad hoc wireless network when in communication range;a computing device in communication with said wireless communication device and said sensor, said computing device comprising: means for receiving information from said sensor, means for communicating said sensor information to computing devices on said other aircraft via said ad hoc wireless network and for receiving said sensor information from computing devices on said other aircraft via said ad hoc wireless network;and a graphical user interface (GUI) for displaying sensor information received from said sensor and received from computing devices on said other aircraft.
- 46Broadest claimClaim Score 74, broad(NHIP)A method for collaboration among a plurality of aircraft, said method comprising:forming an ad hoc wireless network among at least two of said plurality of aircraft when said at least two of said plurality of aircraft are within communication range;for each aircraft, sensing information related to said each aircraft;communicating said sensed information to others of said plurality of aircraft via said ad hoc wireless network;and displaying said sensed information on a graphical user interface (GUI) in each of said plurality of aircraft in real-time.
- 56A networking system for collaboration in fighting a forest fire, said networking system comprising:a terminal device provided to each of a plurality of fire-fighting units, said terminal device comprising: a global positioning system (GPS) sensor for determining GPS information;a wireless communication device for communicating with wireless communication devices and terminal devices on others of said plurality of fire-fighting units to form an ad hoc wireless network whenever in communication range;a computing device in communication with said wireless communication device and said sensor, said computing device comprising: means for receiving and processing said GPS information from said sensor;means for communicating said GPS information to computing devices on others of said plurality of fire-fighting units via said ad hoc wireless network and for receiving said GPS information from computing devices on others of said plurality of fire-fighting units via said ad hoc wireless network;means for generating map information related to said GPS information;a user input system allowing a user of said computing device to input information for communication through said ad hoc wireless network;and a graphical user interface (GUI) for displaying said map information, user input information and said GPS information.
- 69A networking system for collaboration among a plurality of mobile users, said system comprising:at least one mobile device provided to each mobile user, each mobile device comprising: a wireless communication device for communicating with wireless communication devices and mobile devices of others of said plurality of mobile users to form an ad hoc wireless network when in communication range;a sensor;means for reading information from said sensor;means for communicating said sensor information to each mobile device in said network;and means for displaying said sensor information at each said mobile device.
- 71A method for generating a unique network address in an internet protocol address space for an ad hoc network, said method comprising:determining a unique media access control (MAC) address of a device to be attached to the network;determining an index number;and repeating the following, increasing said index number monotonically, until an IP address that is unique within the ad hoc network is produced: hashing said MAC address with said index number to generate a trial IP address;and determining if said trial IP address conflicts with an existing IP address in said ad hoc network.
Independent claims8
167 paragraphs in 5 sections, as filed
0001This application claims the benefit under 35 U.S.C. <b>119</b>(<i>a</i>) of Canadian Patent Application No. 2,437,926, filed Aug. 20, 2003.
FIELD OF THE INVENTION
0002This invention relates to mobile wireless networking, and more particularly, to a system and method for a mobile wireless network suitable for sharing messages, including data, among aircraft.
BACKGROUND OF THE INVENTION
0003Sharing data over computer networks between airborne vehicles, either on an air-to-air basis or air-to-ground basis is a relatively new idea. Currently, sharing of data and coordination of activities for airborne vehicles is often achieved through voice communication. However, such voice communication is often error prone, ambiguous, inaccurate, slow, and less effective for coordinating operations than by using computerized sharing of data. These disadvantages may cause safety hazards and poor operational effectiveness.
0004Since airborne vehicles rapidly change position, it is difficult for them to maintain in contact with any centralized server or architecture that provides network and routing services. However, wireless ad hoc network techniques allow for self-formation of networks and routing of wireless data network communications on a peer to peer basis between computing devices without any need for a fixed access point to the network or centralized server.
0005Ad hoc networks are known in the art. For example, United States Patent Application No. 2003/0060202 (Roberts) discloses a system and method for enabling a mobile user computing device in an ad-hoc wireless communications network to selectably operate as a router for other mobile user terminals in the network based on certain criteria. The computing device includes a transceiver adapted to transmit wireless communications data, such as packetized data, addressed to a destination user terminal and to at least one other user terminal for routing by that other user terminal to the destination user terminal. United States Patent Application No. 2003/0091011 (Roberts et al.) discloses a communications network that employs ad-hoc routing techniques during handoff of a wireless user terminal between access point nodes to a core network to enable the network to maintain multiple paths via which data packets are provided to the user terminal during handoff. Thus, the communications can efficiently handle mobility of wireless user terminals between access point nodes of a packet-switched network.
0006While ad hoc networks are known in the art, none of the current ad hoc systems address the unique context of providing network data communications between airborne vehicles. Given the high speeds of airborne vehicles, the distance between computing device nodes in the network will frequently change causing the computing device nodes to go out of range of one another resulting in frequent unexpected interruptions in the network. At the same time, since distances between airborne vehicles will change rapidly, the distance over which computing devices within the network must be maximized. Accordingly, it would be useful to provide a wireless peer to peer ad hoc network for sharing data between computing devices on different aircraft wherein the distance over which computing devices on different airborne vehicles can communicate with one another is maximized and which can recover gracefully when a computing device on an airborne vehicle goes out of range. Further, since the topology of a network for airborne vehicles will change rapidly, it would be advantageous that such a network be self-forming and self healing to allow for rapid addition and removal of new airborne vehicles having computing devices as nodes. Further, the high speeds of airborne vehicles and airborne operations imply that data shared between computing devices on airborne vehicles will rapidly become obsolete. Accordingly, it would also be useful if the data transmitted from one airborne vehicle to another airborne vehicle could be updated in real time.
SUMMARY OF THE INVENTION
0007The present invention in one aspect provides a wireless communications system for communicating a data message comprising: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0008"> (a) a wireless data communication network for transmitting and receiving the data message; </li><li id="ul0002-0002" num="0009"> (b) a source computing device, connected to said wireless data communication network, for generating the data message; </li><li id="ul0002-0003" num="0010"> (c) a plurality of receiving computing devices connected to said wireless data communication network, said plurality of receiving computing devices further comprising a destination computing device, for receiving and further transmitting the data message until said destination computing device receives the data message; and </li><li id="ul0002-0004" num="0011"> (d) software on each source and receiving computing device for managing the data message and said transmitting and said receiving; wherein at least two of said source computing device and said receiving computing devices are installed on vehicles, at least one of said vehicles being an airborne vehicle. </li></ul></li></ul>
0012In another aspect, the present invention provides a method for wireless data communication of a data message comprising: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0013"> (a) generating the data message on a source computing device connected to a wireless data communication network comprising a plurality of wireless data transceivers installed at least on a plurality of vehicles; </li><li id="ul0004-0002" num="0014"> (b) transmitting the data message on said wireless data communication network to at least one receiving device from a plurality of receiving computing devices connected to said wireless data communication network; </li><li id="ul0004-0003" num="0015"> (c) receiving the data message on said at least one receiving computing device; and </li><li id="ul0004-0004" num="0016"> (d) unless said at least one receiving computing devices is a destination computing device for the data message, further transmitting the data message from said at least one receiving device to at least one other receiving computing device until said destination computing device receives the data message, wherein at least two computing devices among said source computing device and said receiving computing devices are installed on said vehicles, at least one of said vehicles being an airborne vehicle.</li></ul></li></ul>
BRIEF DESCRIPTION OF THE DRAWINGS
0017The invention is now described with the assistance of the following drawings, wherein:
0018<figref idref="DRAWINGS">FIG. 1</figref> is a diagram showing a network for wireless communication of messages having a plurality of nodes in accordance with the present invention;
0019<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of hardware components for the present invention;
0020<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram of the architecture of the present invention for a terminal device for a first embodiment of the present invention;
0021<figref idref="DRAWINGS">FIG. 4</figref> is Unified Modeling Language (UML) use case diagram for the Network manager layer of the present invention;
0022<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram showing services provided by the API layer of the present invention;
0023<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram of an architecture of terminal device for a second embodiment of the present invention;
0024<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram of an architecture of terminal device for a third embodiment of the present invention;
0025<figref idref="DRAWINGS">FIG. 8</figref> is a UML use case diagram for the Positioning Services layer shown in accordance with the second and third embodiment of the invention;
0026<figref idref="DRAWINGS">FIG. 9</figref> is a UML use case diagram for Positioning Services layer shown in accordance with the second and third embodiment of the invention;
0027<figref idref="DRAWINGS">FIG. 10</figref> is a UML use case diagram showing the functionality provided by routing engine layer of the third embodiment;
0028<figref idref="DRAWINGS">FIG. 11</figref> is a UML use case diagram for the Network Wrapper layer of the third embodiment;
0029<figref idref="DRAWINGS">FIG. 12</figref> is a UML use case diagram for the Transport wrapper layer of the third embodiment;
0030<figref idref="DRAWINGS">FIG. 13</figref> is a block diagram of a fire fighting system that advantageously makes use of the present invention;
0031<figref idref="DRAWINGS">FIG. 14</figref> is an example of the Traffic View GUI provided by the Fire Fighting system of <figref idref="DRAWINGS">FIG. 13</figref>;
0032<figref idref="DRAWINGS">FIG. 15</figref> is an example of an operational View GUI provided by the Fire Fighting system of <figref idref="DRAWINGS">FIG. 13</figref>;
0033<figref idref="DRAWINGS">FIG. 16</figref> is an example operational view GUI provided by the Fire Fighting System of <figref idref="DRAWINGS">FIG. 13</figref> showing map information;
0034<figref idref="DRAWINGS">FIG. 17</figref> is an example of an instrument view GUI, with map information, provided by the Fire Fighting System of <figref idref="DRAWINGS">FIG. 13</figref>; and
0035<figref idref="DRAWINGS">FIG. 18</figref> is an example of a text view user interface provided by fire fighting system of <figref idref="DRAWINGS">FIG. 14</figref>.
DETAILED DESCRIPTION OF THE INVENTION
0036<figref idref="DRAWINGS">FIG. 1</figref> is a diagram showing a network, shown generally as <b>10</b>, for wireless communication of messages having a plurality of nodes <b>15</b>, in accordance with an embodiment of the present invention. Node <b>15</b> is equipped with a terminal device having a wireless communications transceiver (WCT), which allows node <b>15</b> to communicate with other nodes <b>15</b>, and a computing device (CD). WCT ensures that nodes <b>15</b> can communicate messages, including data messages, with each other.
0037Referring still to <figref idref="DRAWINGS">FIG. 1</figref>, a number of definitions are now offered for terms which will be used to describe the present invention. Node <b>15</b> may represent a large variety of objects, including, but not limited to: an aircraft, a land or sea based vehicle, a stationary communication station, or a human being or animal. However, node <b>15</b> must be equipped with a terminal device having a WCT, which allows node <b>15</b> to communicate with other nodes <b>15</b>, and a CD. Node <b>15</b> constituting an aircraft having a terminal device is referred to as an aircraft node <b>15</b>. Node <b>15</b> constituting a ground-based vehicle having a terminal device is a ground vehicle node <b>15</b>. The present invention offers the ability for nodes <b>15</b> of any type, and aircraft nodes <b>15</b> in particular, to establish wireless communications between themselves for sharing messages.
0038Each node <b>15</b> has communication range <b>20</b>. Communication range <b>20</b> is the maximum distance from which node <b>15</b> may wirelessly receive transmissions from, or wirelessly send transmissions to, another node <b>15</b> using node's <b>15</b> WCT. Two nodes <b>15</b> that have intersecting communication ranges <b>20</b> are neighbor nodes <b>15</b> as they may communicate directly with each other. Neighbor nodes <b>15</b> bare said to be in range of each other. For example, referring still to <figref idref="DRAWINGS">FIG. 1</figref>, nodes <b>15</b><i>b </i>and <b>15</b><i>c </i>are neighbor nodes <b>15</b>. Two or more neighbor nodes <b>15</b> form cluster <b>25</b> within network <b>10</b>, and may be referred to as cluster nodes <b>15</b>. For example, node <b>15</b><i>b</i>, node <b>15</b><i>c</i>, node <b>15</b><i>d </i>are cluster nodes <b>15</b> for cluster <b>25</b><i>a</i>. Each cluster node <b>15</b> from cluster <b>25</b> can send and receive messages from any other cluster node <b>25</b>.
0039Source node <b>15</b> initially generates a message. Destination node <b>15</b> is the intended final recipient for a message initially generated by source node <b>15</b>. Hop node <b>15</b> is an intermediary which retransmits, i.e. repeats, message from source node <b>15</b> to another hop node <b>15</b> or destination node <b>15</b> for message. For example, source node <b>15</b><i>e </i>initially generates a message intended for final reception by destination node <b>15</b><i>g</i>. If the message is repeated by node <b>15</b><i>f </i>before reaching destination node <b>15</b><i>g</i>, node <b>15</b><i>f </i>is a hop node <b>15</b> for the message. If both hop node <b>15</b> and destination node <b>15</b> are neighbor nodes <b>15</b> to source node <b>15</b>, the decision of whether to communicate message directly to destination node <b>15</b> or via hop node <b>15</b> may be based on a user-defined criteria such as data congestion or capacity of hop node <b>15</b> or destination node <b>15</b>. It is this technique, referred to as multi-hopping for purposes of the present invention, that allows cluster nodes <b>15</b> that are not neighbor nodes <b>15</b> to nonetheless communicate messages to all other cluster nodes <b>15</b> of the same cluster <b>25</b>, thus extending the distance over which nodes <b>15</b> may communicate with each other.
0040Referring still to <figref idref="DRAWINGS">FIG. 1</figref>, standalone node <b>15</b><i>a </i>is not a neighbor node <b>15</b>. Thus, standalone node <b>15</b> cannot communicate with any other node <b>15</b>. Further, cluster nodes <b>15</b> in cluster <b>25</b><i>a </i>cannot communicate with cluster nodes <b>15</b> in cluster <b>25</b><i>b</i>. However, should communication range <b>20</b> of standalone node <b>15</b> intersect simultaneously cluster nodes <b>15</b><i>e </i>of cluster <b>25</b><i>b </i>and cluster nodes <b>15</b><i>c </i>of cluster <b>25</b><i>a</i>, standalone node <b>15</b><i>a </i>will enable communication of all nodes <b>15</b> in clusters <b>25</b><i>a </i>and clusters <b>25</b><i>b </i>between each other and node <b>15</b> itself. When this occurs, clusters <b>25</b><i>a </i>and clusters <b>25</b><i>b </i>are merged. During this process, node <b>15</b><i>a </i>serves as contact node <b>15</b> for establishing communication. Once merging of cluster <b>25</b><i>a </i>and cluster <b>25</b><i>b </i>is complete, contact node <b>15</b> becomes a cluster node <b>15</b>.
0041Node <b>15</b> may also allow for connectivity to an external network <b>30</b>. For example, if communication range <b>20</b><i>d </i>of cluster node <b>15</b><i>d </i>and communication range <b>20</b><i>j </i>of external network <b>30</b> intersect, cluster node <b>15</b><i>d </i>may establish a connection to external network <b>30</b>. Further, cluster node <b>15</b><i>d </i>can enable connectivity to external network <b>30</b> for all other cluster nodes <b>15</b> of cluster <b>25</b><i>a </i>to external network <b>30</b>. In such cases, node <b>15</b><i>d </i>may be referred to as bridge node <b>15</b><i>d </i>between cluster <b>25</b> and external network <b>30</b>. Bridge node <b>15</b><i>d </i>performs address translation between cluster nodes <b>15</b><i>b </i>and <b>15</b><i>c </i>of same cluster <b>25</b><i>a </i>and external network <b>30</b> and manages communications between cluster nodes <b>15</b> and external network <b>30</b>. This capability allows network <b>10</b> provided by present invention to bridge to external networks <b>30</b> such as the Internet.
0042When the terminal device on node <b>15</b> is carrying out operations for that same node <b>15</b>, node <b>15</b> is referred to as local node <b>15</b> for the operations. Local node <b>15</b> is the node <b>15</b> refers to a situation When the terminal device is carrying out operations for messages received or destined for other nodes <b>15</b>, those other nodes <b>15</b> are referred to as remote nodes <b>15</b>.
0043Each cluster node <b>15</b> within cluster <b>25</b> is aware, or is eventually made aware, of all other nodes <b>15</b> in cluster <b>25</b>. Further, each cluster node <b>15</b> in cluster <b>25</b> maintains its own services and may communicate and access services on other nodes <b>15</b> in cluster <b>25</b>, without accessing any node <b>15</b> that acts as a central server. Thus, network <b>10</b> provides services on a peer to peer (P2P) basis, and each cluster node <b>15</b> can fully access the services provided by any other cluster node <b>15</b> in the same cluster <b>25</b>. Thus, cluster node <b>15</b> may be referred to as a peer, or peer node <b>15</b>, of every other cluster node <b>15</b>.
0044Since network <b>10</b> provided by the present invention provides for wireless communication of messages between nodes <b>15</b> that may be mobile, this increases the possibility that nodes <b>15</b> will constantly be joining or leaving clusters <b>15</b>, and that the positions of cluster nodes <b>15</b> within cluster <b>15</b> will be constantly changing, thus changing the topology of clusters <b>25</b> and network <b>10</b>. Given the high speed of aircraft, this is particularly likely to be the case for aircraft nodes <b>15</b>. By allowing for addition of new cluster nodes <b>15</b> that have joined cluster <b>25</b> and for removal of nodes <b>15</b> that have left cluster <b>25</b>, network <b>10</b> provided by present invention is capable of functioning on an ad hoc basis, i.e. as an ad hoc wireless network having P2P capabilities. The ad hoc character of network <b>10</b> ensures that network <b>10</b> is self-forming based on which nodes <b>15</b> have intersecting communication range <b>20</b>, i.e. are neighbor nodes <b>15</b> or cluster nodes <b>15</b> in clusters <b>25</b>. In addition, the ad hoc character of network <b>10</b> allows network <b>10</b> to continue to function despite removal of nodes <b>10</b> from clusters <b>10</b>, thus providing a self healing capability for network <b>10</b>.
0045Target area <b>35</b> is a geographical position or an object for which has been assigned. Target area <b>10</b> may be inside or outdoors. Target area <b>35</b> may also comprise a moving object including, but not limited to, a vehicle, human being, or animal.
0046<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram of hardware components for the terminal device (TD) <b>40</b> for node <b>15</b> of network <b>10</b> according to the present invention. As stated, node <b>15</b> has at least one TD <b>40</b>. TD <b>40</b> has two sets of hardware components. First set <b>45</b> of hardware components includes at least one computing device (CD) <b>50</b> on which applications are stored and run and which displays information for users and processes user requests. CD <b>50</b> is also responsible for managing communications with other nodes <b>15</b> and for providing data from other nodes <b>15</b> to applications. CD <b>50</b> may be any device capable of executing programs and input and output of data, such as a personal computer, a laptop computer, a tablet computer, a cellular phone, personal digital assistant, or the like. The only requirement is that CD <b>50</b> have sufficient processing power and memory to run applications associated with the present invention. CD <b>50</b> may, optionally, display information to users. Second set <b>15</b> of hardware components includes a radio frequency (RF) (WCT) <b>60</b>, which is responsible for the physical transmission and reception of messages on a wireless basis to and from node <b>15</b>, as instructed by CD <b>50</b>. Second set <b>55</b> also includes at least one sensor <b>65</b> for sensing information. Sensor <b>65</b> may be of any type, provided that software in CD <b>50</b> is designed to use data provided by that type of sensor <b>65</b> and that CD <b>50</b> has interfaces designed to function with sensor <b>65</b>. For example, sensor <b>65</b> may sense temperature, radiation, or position.
0047Sensor <b>65</b> and WCT <b>60</b> are connected to CD <b>50</b>, either by wireless or wireline connections. It is not, however, necessary that CD <b>50</b>, sensor <b>65</b>, and WCT <b>60</b> of TD <b>40</b> be co-located in one container. For example, for aircraft nodes <b>15</b>, WCT <b>60</b> could be at the back of the aircraft while CD <b>50</b> is in the cockpit.
0048<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram of an architecture <b>70</b> for TD <b>40</b> of node <b>15</b> of network <b>10</b> according to a first embodiment of the present invention. Architecture <b>70</b> comprises both hardware components and software components. Architecture <b>70</b> is composed of four system layers: device layer <b>75</b>, core engine layer <b>80</b>, platform layer <b>85</b>, and application programming interface (API) layer <b>90</b>. Each system layer may be composed of other layers and includes all software routines and hardware components for that system layer. Device layer <b>75</b> includes WCT <b>60</b> and sensor <b>65</b> and provides a physical interface to incoming and outgoing messages which are received and sent by WCT <b>60</b>, as well as for messages of data provided and detected by sensor <b>65</b>. Platform layer <b>85</b> handles all aspects of information management, communication of messages between nodes <b>15</b>, and use or availability of nodes <b>15</b> as part of clusters <b>25</b> or network <b>10</b> on an ad hoc P2P basis. Core engine layer <b>80</b> provides communication between the platform layer <b>85</b> and device layers <b>75</b>. API layer <b>90</b> provides an interface to application <b>95</b> through which application <b>95</b> may access services provided through network <b>10</b>, as made available through API layer <b>90</b>.
0049Architecture <b>70</b> has been organized to allow for maximum versatility. Each system layer provides interfaces to the system layer directly beneath or below. This division of system layers and provision of interfaces ensures that any changes made to the implementation of a given system layer will not affect other layers in architecture <b>70</b>, or at most one system layer below or above. This is particularly important when considering device layer <b>75</b> and core engine layer <b>80</b>. For example, within device layer <b>75</b>, WCT <b>60</b> or sensor <b>65</b>, as well as interfaces for WCT <b>60</b> or sensor <b>75</b>, may be implemented as stand alone third party components or customized components. Further, depending on the requirements of application <b>100</b>, WCT <b>60</b> or sensor <b>65</b> and their interfaces may need to be replaced by other technologies. Since each system layer only communicates with the layer directly above or beneath it, such changes can be absorbed within device layer <b>75</b> and core engine layer <b>80</b>, without affecting platform layer <b>85</b> or API layer <b>90</b>. Similarly, changes to protocols used for network communication and transport of messages employed within core engine layer <b>80</b> may also be required or desirable. Again, platform layer <b>85</b> and API layer <b>90</b>, as well as application <b>95</b>, will not be affected, as they remain isolated from the implementation details of core engine layer <b>80</b>.
0050Platform layer <b>85</b>, core engine layer <b>80</b>, and any drivers or software resident on CD <b>50</b> for device layer <b>75</b> reside in a platform memory space <b>100</b> on CD <b>50</b> specifically reserved for these system layers. Hardware interfaces to enable connections between WCT <b>60</b> and sensor <b>65</b> of device layer device layer <b>75</b> may also be implemented in part on CD <b>50</b>. Typically, platform layer <b>85</b> is run as an executable that acts as a daemon or service to provide services to API layer <b>90</b>. Application <b>95</b> and API layer <b>95</b> reside on CD <b>50</b> in a separate application memory space <b>105</b> reserved for application <b>95</b> and API layer <b>90</b>. Further details of system layers and their interactions are provided below.
0051API layer <b>90</b> interacts with application <b>95</b> and functions as a call stub for application <b>95</b> in application memory space <b>105</b>. API layer <b>90</b> communicates with system layers in platform memory space <b>100</b>, notably platform layer <b>85</b>, via inter-process communication or some other mechanism that protects the system layers in the system memory space <b>100</b>. This is also the case for communication between layers within API layer <b>90</b> and layers within system layers located in platform memory space <b>100</b>. This division of memory space and the running of platform layer <b>85</b>, and possibly lower system layers, as separate processes from application <b>95</b> and API layer <b>90</b> reinforces separation of application <b>95</b> and API layer <b>90</b> from implementation of platform layer <b>85</b>, core engine layer <b>80</b>, and device layer <b>75</b>. Thus, independence of application <b>95</b> and API layer <b>90</b> with regard to implementation of other system layers is enhanced. Platform memory space <b>100</b> and application memory space <b>105</b> may be located on CD <b>50</b> in Random Access Memory (RAM), Read Only Memory (ROM), Flash memory, or any combination thereof.
0052Device layer <b>75</b> includes second set <b>55</b> of hardware components. As such, device layer <b>75</b> includes WCT <b>60</b> and sensor <b>65</b> and provides a physical interface to incoming and outgoing messages which are received and sent by WCT <b>60</b>, as well as for messages of data provided and detected by sensor Device layer <b>75</b> accesses all higher layers in architecture <b>70</b> through driver interfaces (not shown) for WCT <b>60</b> and sensor <b>65</b>, which may be located on WCT <b>60</b>, sensor <b>65</b>, or CD <b>50</b>. Provided the correct driver interface is present, core engine layer <b>80</b> will be able to access messages from, and provide messages and instructions to, WCT <b>60</b> and sensor <b>65</b>, either for core engine layer's <b>80</b> own needs or on request of platform layer <b>85</b>, which may, in turn, receive or transmit messages and instructions from API layer <b>90</b>. This design further facilitates independence of platform layer <b>85</b>, and therefore API layer <b>90</b> and application <b>95</b>, from specific WCT <b>60</b> and sensor <b>65</b> implemented at device layer <b>75</b>.
0053Device layer <b>75</b> encapsulates two additional layers: sensor layer <b>110</b> and link/physical layer <b>115</b>. Sensor layer <b>110</b> includes sensor <b>65</b> and provides sensor data to core engine layer <b>80</b>. Link/Physical layer <b>115</b> is the base layer for wireless communications. Link/Physical layer <b>115</b> includes WCT <b>60</b>. Thus, link/physical layer handles the physical transmission and reception of radio signals between end-users using CDs <b>50</b> on different nodes <b>15</b> and provides link layer support for point to point and point to multipoint communications. Point-to-point communications and point-to-multipoint communications are essential for application <b>95</b> as such a capacity allows node <b>15</b> to transmit to one node <b>15</b> or multiple nodes <b>15</b> simultaneously. This, in turn, allows for rapid repeating of messages to other nodes <b>15</b> to ensure that messages can traverse multiple routes, using multi-hopping if required, to reach destination nodes <b>15</b> from source node <b>15</b>. This, in turn, maximizes the probability that the message will reach destination node <b>15</b> and that destination node <b>15</b> will be reached as quickly as possible. Maximizing reliability and speed of transmission is especially important for aircraft nodes <b>15</b> since, given the high speed of aircraft, aircraft nodes <b>15</b> will change position very quickly and will move in and out of clusters <b>25</b>, thus affecting availability of aircraft nodes <b>15</b> and routes from source node <b>15</b> to destination node <b>15</b>.
0054Link/physical layer <b>115</b> and sensor layer <b>110</b> may comprise any drivers or hardware interfaces necessary for interaction with other layers, notably core engine layer <b>80</b>, although these drivers and interfaces may also included on CD <b>50</b> in core engine layer <b>80</b> itself. From a practical perspective, however, link/physical layer <b>115</b> can be considered to be the equivalent of WCT <b>60</b>, encapsulated in a layer for design purposes. Similarly, sensor layer <b>110</b> can be considered to be equivalent of sensor <b>65</b>.
0055Core engine layer <b>80</b> provides all core engine layer <b>80</b> services to platform layer <b>85</b>, which uses core engine layer <b>80</b> services to carry out instructions received from application <b>95</b> over API layer <b>90</b>. Core engine layer <b>80</b>, in turn, uses device layer <b>75</b> to physically communicate messages using WCT <b>60</b> of link/physical layer <b>115</b> and to receive data from sensor <b>65</b> in order to provide core engine layer <b>80</b> services. Thus, core engine layer <b>80</b> acts as an interface between platform layer <b>85</b> and device layer <b>75</b>. Among core engine layer <b>85</b> services is routing, which provides for routing of messages, using multi-hopping if required, between nodes <b>15</b>. The exact means by which routes are determined or provided depends upon the actual routing protocol used and is hidden from the platform layer <b>85</b> and API layers <b>90</b>. This ensures that routing protocol can be adapted to WCT <b>60</b> of link/physical layer <b>115</b> at core engine layer <b>80</b> without affecting platform layer <b>85</b> or API layer <b>90</b>. Core engine layer <b>80</b> includes, at a minimum, sensor support layer <b>120</b> and transport layer <b>125</b>.
0056Transport layer <b>125</b> is responsible for passing all forms of messages between API layer <b>95</b> of a node <b>15</b> and other nodes <b>15</b> using link/physical layer <b>115</b> (WCT <b>60</b>) at device level <b>75</b>. Transport layer <b>125</b> is capable of providing connectionless asynchronous transport, such as use of Internet protocol (IP) or the like, of messages as well as connection-oriented transport, such as use of transmission control protocol (TCP) or the like, for messages. Connectionless asynchronous transport service is important for the present invention as it provides for faster delivery of time sensitive messages by avoiding connection set-up overhead and maintenance transfer. This is especially useful when application <b>95</b> involves aircraft nodes <b>15</b>. Since aircraft travel at high speeds, nodes <b>15</b> will rapidly leave and enter clusters <b>25</b>, thus making maximal speed of transport essential. However, for messages that may be mission critical, it may be desirable to maximize reliability of transport. In such cases, connection-oriented services are provided for reliable message communication.
0057Sensor Support layer <b>120</b> parses and processes sensor <b>65</b> data from sensor layer <b>110</b>. Sensor support layer <b>120</b> provides an abstract interface for sensor services layer <b>130</b> of platform layer <b>85</b>, which provides services for sensor <b>65</b> based data, provided from sensor layer <b>110</b>, to application <b>95</b> via API layer <b>90</b>. Sensor Support layer <b>120</b> is responsible for processing sensor data from sensor layer <b>110</b>.
0058Platform layer <b>85</b> receives and manages all requests for services from applications via API layer <b>90</b>. Specifically, platform layer <b>85</b> manages all communication of messages between nodes <b>15</b>, notably on a P2P basis, and provides all services for messages provided by sensor layer <b>110</b> to application <b>95</b> via API layer <b>90</b>. Platform layer <b>85</b> is composed, at a minimum, of the following layers: network manager layer <b>135</b>, transport wrapper layer <b>140</b>, messaging layer <b>145</b>, resource manager layer <b>147</b>, and sensor services layer <b>130</b>.
0059Network manager layer <b>135</b> maintains a table of all current network information relating to all known nodes, such as node identifiers (node ID) and other information useful for management of nodes <b>15</b> as network <b>10</b> or cluster <b>25</b>. Network manager layer <b>135</b> is responsible for discovery of nodes <b>15</b>, exchange of network information relating to nodes <b>15</b> as part of network <b>10</b> or cluster <b>25</b>, addition and deletion of nodes <b>15</b> as part of network <b>10</b> or cluster <b>25</b>, configuration of network settings, and updating and broadcasting the presence of all nodes <b>25</b> accessible on network <b>10</b> or cluster <b>25</b> as peers. Network manager layer provides the following services:
0000Naming/Identity/Addressing service maintains a peer node's <b>15</b> identity and uses a network management protocol to communicate with other peers nodes <b>15</b> and to exchange network information.
0000Neighborhood service provides up to date information about peer nodes <b>15</b> that are neighbor nodes <b>15</b> in order to enhance resolution of identity of peer nodes <b>15</b>.
0000Session management service maintains the collaborative service for initiating, terminating and restoring P2P services and P2P communication sessions between nodes <b>15</b>.
0060History service maintains a cache of information about the activities of a peer node <b>15</b>, such as, among other things, how routes to peer node <b>15</b> were established, the content of previous messages communicated between peer node <b>15</b> and other peer nodes <b>15</b>.
0061To better aid the reader in understanding network manager layer <b>135</b>, reference is now made to <figref idref="DRAWINGS">FIG. 4</figref>, a Unified Modeling Language (UML) use case diagram for Network manager layer <b>135</b>. The operation of the Network manager layer <b>135</b> includes the following use cases: Add node use case <b>150</b>, Update Node use case <b>155</b>, Remove node use case <b>160</b>, Register Network Manager Clients use case <b>165</b>, and Notify Network Changes use case <b>170</b>. Add node use case <b>150</b> is started when a new node <b>15</b> is detected by another node <b>15</b>. A node ID, which may comprise an IP address, MAC address, or other identifier is assigned to new node <b>15</b> and is propagated across cluster <b>25</b> or network <b>10</b> to ensure that every node <b>15</b> is informed of new node <b>15</b>. Update node use case <b>155</b> is started when local node <b>15</b> receives updated network information from another, remote node <b>15</b>. The local node <b>15</b> and remote node <b>15</b> negotiate IP addresses (connections) and broadcast the results.
0062Remove Node use case <b>160</b> is started when node <b>15</b> in cluster <b>25</b> is found to be unreachable, i.e. has become a standalone node <b>15</b> or is otherwise unreachable. The unreachable status of node <b>15</b> is broadcast across cluster <b>15</b> to remove knowledge of unreachable node <b>15</b> from cluster nodes <b>15</b>, notably from network manager layer <b>135</b> in each cluster node <b>15</b>. Also, should a routing table be used to track routes, unreachable node <b>15</b> will be removed from this table. Register Network Manager Clients use case <b>165</b> is started to register/unregister clients of Network manager layer <b>135</b><i>r</i>, notably application <b>95</b> and components of API layer <b>90</b>, for receiving network information update messages, which update information about network <b>10</b> or cluster <b>25</b>. Notify Network Changes use case <b>170</b> is started to notify the registered clients of Network Manager layer <b>135</b> of network changes, such as node addition, removal, and update.
0063Returning now to <figref idref="DRAWINGS">FIG. 3</figref>, Transport wrapper layer <b>140</b> is a predefined interface between transport layer <b>125</b> and API layer <b>90</b>. Transport wrapper layer <b>125</b> provides a standard set of interfaces that can be accessed by application <b>95</b> through API layer <b>90</b> to invoke services of transport layer <b>125</b>, or through messaging layer <b>145</b>. Network manager layer <b>135</b> may also access transport wrapper layer <b>140</b> directly. Transport wrapper layer <b>140</b> keeps all details of transport layer <b>125</b> implementation hidden from higher layers.
0064Messaging layer <b>145</b> is used for exchanging system information between peer nodes <b>15</b>. Such system information may be encapsulated in multiple message types including, among other things, sensor information, network information about the entire network <b>10</b> as a P2P system, and status information for nodes <b>15</b> that are peer nodes <b>15</b>. Since there are multiple message types used at messaging layer <b>145</b>, messages for messaging layer <b>145</b> are encoded in a language that allows for self-definition of data and message types, such as extensible markup language (XML). This allows for creation of datagrams for various messages types that are destined for messaging layer <b>145</b>. Use of UML and datagrams ensures that such messages can be easily sorted and processed. Messaging layer <b>145</b> can also provide services to application <b>95</b> via API layer <b>90</b>, and could potentially be used to remotely invoke methods and objects on remote nodes <b>15</b>.
0065Resource Manager layer <b>147</b> manages application data that is shared across network <b>10</b> on a P2P basis, i.e. data from application <b>95</b> that is shared by application <b>95</b> among peer nodes <b>15</b>. Resource Manager layer <b>147</b> relies on other components and layers in Platform layer <b>85</b> and provides an abstract and consistent view of all data on network <b>10</b> on a P2P basis.
0066Sensor services layer <b>130</b> provides messages from sensor layer <b>110</b> (i.e. sensor <b>65</b>) via sensor support layer <b>120</b>, to application <b>95</b> through API layer <b>90</b>. Thus, sensor services layer <b>130</b> provides high level sensor services to application <b>95</b> through API layer <b>90</b>. Sensor services layer <b>130</b> sends and receives messages about sensor related information from sensor support layer <b>120</b> of core engine layer <b>80</b>. Sensor Services layer <b>130</b> manages all sensor related information for each node <b>15</b> in network <b>10</b>, as requested by application <b>95</b>. Sensor services layer <b>130</b> is not an integral part of network <b>10</b> for P2P purposes. Therefore, sensor services layer <b>130</b> maintains a separate information database or table from that of network manager layer <b>135</b>. This information is indexed by node ID or other identifier.
0067<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram showing services provided by API layer <b>90</b>. API layer <b>90</b> can provide a variety of services of varying complexity to application <b>95</b>. At least complex level, level <b>1</b><b>175</b>, API layer <b>90</b> will provide application <b>95</b> with simple peer to peer communication between nodes <b>15</b> with no node <b>15</b> being designated by application <b>95</b> as managing node <b>15</b> for controlling other nodes <b>15</b>. Tracking of other, remote nodes <b>15</b> is one way in that local node <b>15</b> receives messages from remote nodes <b>15</b> but local node <b>15</b> does not attempt to ensure that remote nodes <b>15</b> receive messages sent by local node <b>15</b>. Since local node <b>15</b> simply broadcasts local node's <b>15</b> messages without two-way communication with remote nodes <b>15</b>, relationships between nodes <b>15</b> are not tracked and no decision making ability is furnished by API layer <b>90</b> to application <b>95</b>.
0068At level two <b>180</b>, there is also no managing node <b>15</b> Tracking remains passive with no user input, but each local node <b>15</b> tracks all remote nodes <b>15</b> by attempting to ensure that remote nodes <b>15</b> receive local node's <b>15</b> messages. This allows for tracking of relationships between nodes <b>15</b> and for targeting of messages from one specific source node <b>15</b> to a destination node <b>15</b>. Application <b>95</b> is provided with some decision making ability based on static rules in accordance with information provided by sensor layer <b>110</b>, such as, among other possibilities, positional information.
0069At level three <b>185</b>, API layer <b>90</b> allows application to designate one managing node <b>15</b>. Managing node <b>15</b>, relying on messages from sensor layer <b>10</b>, i.e. sensor <b>65</b>, and user input, provides directives or assigns tasks to remote nodes <b>15</b>. Thus, a user can use CD <b>50</b> on managing node <b>15</b> to assign such tasks. Since API layer <b>90</b> at level three <b>185</b> allows user to set rules and tasks, rules and tasks may become user-defined and dynamic. Since there is only one managing node <b>15</b>, API layer <b>90</b> will not allow application <b>95</b>, or users, to create conflicts in tasks.
0070At level four <b>190</b>, the most complex level, API layer <b>90</b> allows multiple managing nodes <b>15</b>. Each local node <b>15</b> tracks all remote nodes <b>15</b> and messages sent from local node <b>15</b> to remote nodes <b>15</b>, providing two-way tracking. As there may be multiple managing nodes <b>15</b>, multiple users at multiple managing nodes <b>15</b> may assign tasks and rules using CDs <b>50</b> on managing nodes <b>15</b>. Tracking status of all node's <b>15</b> allows for resolution of conflicts in assigned tasks.
0071Using the API layer <b>90</b> services, users can rapidly implement application <b>95</b> that uses these services. In addition, users may gradually develop application <b>95</b>, adding complexity to application <b>95</b> as services required by application <b>95</b> progress from level <b>1</b><b>175</b> to level <b>4</b><b>190</b>.
0072<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram of an architecture <b>195</b> for TD <b>40</b> of node <b>15</b> of network <b>10</b> according to a second embodiment of the present invention. <figref idref="DRAWINGS">FIG. 7</figref> is a block diagram of an architecture <b>200</b> for TD <b>40</b> of node <b>15</b> of network <b>10</b> according to a third embodiment of the present invention For architecture <b>195</b> of the second embodiment and architecture <b>200</b> of third embodiment, architecture <b>70</b> of first embodiment is refined for use with sensor <b>65</b> that senses position, i.e. a GPS receiver, and a specific WCT <b>60</b>. Thus, in architecture <b>195</b> of the second embodiment and architecture <b>200</b> of the third embodiment, sensor layer <b>110</b>, i.e. GPS receiver, is referred to as positioning layer <b>205</b>. Sensor support layer <b>20</b> and sensor services layer of architecture <b>70</b> of the first embodiment are referred to, respectively, as positioning support layer <b>210</b> and positioning services layer <b>215</b> in architecture <b>195</b> of the second embodiment and architecture <b>200</b> of the third embodiment Platform layer <b>85</b> and API layer <b>90</b> have the same structure for all three embodiments, again demonstrating the independence of platform layer <b>85</b> and API layer <b>95</b> with regard to lower platform layers.
0073Common elements of architecture <b>195</b> of second embodiment and architecture <b>200</b> of the third embodiment are described initially. Elements specific to architecture second embodiment are described next. A description of elements of third embodiment is then provided.
0074Referring again to <figref idref="DRAWINGS">FIGS. 6 and 7</figref>, for architecture <b>195</b> and architecture <b>200</b> of the embodiments, nodes <b>15</b> provide to each other messages, for use by application <b>95</b>, that include geographical and navigational information for nodes <b>15</b>, such as geographical position of nodes <b>15</b>, speed of nodes <b>15</b>, direction of nodes <b>15</b>, distance from target areas <b>35</b> and navigational instructions for attaining target areas <b>35</b>, or the like. Such geographical positional information and navigational information is derived from GPS signal data, i.e. a GPS position, received at (GPS) positioning layer <b>205</b>.
0075Positioning layer <b>205</b> physically receives GPS data in the form of formatted sentence types. Currently, most hand-held GPS receivers support the NMEA 0183 standard. Popular aviation receivers built by Garmin use a similar format called the Aviation Data Format.
0076Positioning support layer <b>210</b> parses and processes (GPS) signal position data, i.e. sentences, from positioning layer <b>205</b> on node <b>15</b> as well as GPS data received from other nodes <b>15</b>. Parsed GPS data is then made available by positioning support layer <b>210</b> to positioning services layer <b>215</b>.
0077Positioning Services layer X<b>215</b> manages all positioning related information pertaining to each node <b>15</b> in network <b>10</b>. Therefore, positioning services layer <b>215</b> receives processed (GPS) positional data from positioning support layer <b>210</b> and performs all necessary calculations and transformations on the (GPS) positioning data to provide geographical positional and navigational information requested by application <b>95</b> using API layer <b>90</b>. Positional and navigational information may include location of nodes <b>15</b>, speed of nodes <b>15</b>, direction of nodes <b>15</b>, distance from target areas <b>35</b> and navigational instructions for reaching target areas <b>35</b>, among other things. Positioning service layer <b>215</b> is not an integral part of the network <b>10</b> and maintains its own separate information database or tables. Such database may include a geographical information system (GIS), which may provide maps upon which geographical positional information and navigational information may be cross-referenced. The map and cross-referenced positional information and navigational information may then be requested or accessed by application <b>95</b> using API <b>90</b> and displayed by application <b>95</b> on CD <b>50</b>. Information stored in positioning services layer <b>215</b> database or tables is indexed by node ID.
0078In order to aid the reader in understanding positional services layer, reference is now made to <figref idref="DRAWINGS">FIG. 8</figref>, a UML use case diagram for the Positioning Support layer <b>215</b> shown in <figref idref="DRAWINGS">FIGS. 6 and 7</figref>. The operation of positioning layer includes the following use cases: Get (GPS) Positioning Data use case <b>220</b> and Parse Positioning Data use case <b>225</b>. Positioning Device Actor <b>230</b> represents positioning layer <b>205</b>, i.e. a GPS receiver. Positioning Device Actor <b>230</b> allows node <b>15</b> to receive positioning information, such as GPS positioning information, from satellite or other sources.
0079Get Positioning Data use case is invoked to communicate with positioning layer <b>225</b> and retrieve positioning data. Parse Positioning Data use case <b>230</b> parses positioning data and extracts positioning information from them.
0080<figref idref="DRAWINGS">FIG. 9</figref> is a UML use case diagram for Positioning Service layer <b>215</b> of <figref idref="DRAWINGS">FIGS. 6 and 7</figref>. As shown in <figref idref="DRAWINGS">FIG. 9</figref>, the operation of the Positioning Services layer <b>215</b>, with positioning layer <b>205</b> comprising a GPS receiver, includes: Manage Positioning information use case <b>235</b> and Manage Positioning Services use case <b>240</b>. Positioning Services layer <b>215</b> also references Device actor <b>230</b> represents positioning layer <b>205</b>, i.e. a positional transceiver such as GPS a transceiver. Positioning Client actor <b>245</b> represents application <b>95</b>.
0081Manage Positioning Information use case <b>235</b> is invoked when positioning information is received from positioning layer <b>205</b> device or remote node <b>15</b>. Manage Positioning Information use case <b>235</b> includes manage messages use case <b>250</b> and notify messaging event use case <b>255</b> from the use cases for messaging layer <b>145</b> of platform layer <b>85</b>. Manage Positioning Information use case <b>235</b> includes the following activities (not shown): Update Local Positioning Information activity, Update Remote positioning Information activity, Retrieve Positioning Information activity, and Retrieve Positioning Extension activity.
0082Update Local Position Information activity retrieves and processes local position information from the positioning layer <b>205</b> periodically at a pre-configured frequency for node <b>15</b> which invokes Manage Positioning Information use case <b>235</b>. Update Local Position Information activity notifies the registered clients of position information changes for node <b>15</b> and broadcasts the local position information to all other nodes <b>15</b> in cluster <b>25</b>.
0083Update Remote Positioning Information activity is started to update remote position information for nodes <b>15</b> on the network <b>10</b>. To this end, Update Remote Position Information activity first receives and processes position information from remote nodes <b>15</b>. Update Remote Position Information activity then notifies position information changes to the registered clients, e.g. application <b>95</b>.
0084Retrieve Positioning Information activity is started by the Positioning Client actor <b>245</b>, such as application <b>95</b>. The Positioning Client actor <b>245</b> receives a positioning information notification from positioning services layer <b>215</b> and retrieves the positioning information.
0085Retrieve Positioning Extension activity is started by the Positioning Client actor <b>245</b>, such as an application <b>95</b>. The Positioning Client actor <b>245</b> receives a positioning extension notification from the Positioning Services layer <b>215</b> and retrieves the positioning extension.
0086Manage Positioning Services use case <b>240</b> commences when application <b>95</b> chooses to manage the positioning services offered by Positioning Services layer <b>215</b>. The Manage Positioning Services use case <b>240</b> ends when the operation is completed with or without success. Manage Positioning Services use case <b>240</b> includes the following activities (not shown): Load Settings activity, Save Settings activity, Start Services activity, Stop Services activity, Register Client activity, Unregister Client activity, Set Extension Cache activity.
0087Load settings activity and Save Settings activity are invoked when positioning services layer is started/stopped, respectively, to load or save configuration settings for positioning services layer <b>205</b>.
0088Start services activity and stop services activity are invoked, respectively, to start or stop positioning services layer <b>205</b>.
0089Register Clients activity and Unregister Client Activity are invoked, respectively, to register and unregister Positioning Services layer clients, such as application <b>95</b> using API layer <b>90</b>, for receiving messages for updating (GPS) positioning information update messages.
0090Set Extension Cache activity is invoked by the Positioning Services Client actor <b>245</b>, such as application <b>95</b>, to append application specific extensions to the positioning messages. The extension cache is defined by a callback interface and implemented by application <b>95</b> so that positioning services layer <b>215</b> is able to retrieve extensions to append when it sends out positioning messages.
0091Reference is now made again to <figref idref="DRAWINGS">FIG. 6</figref> to explain the details specific to architecture <b>195</b> of TD <b>40</b> for the second embodiment. Communications are provided at device layer <b>260</b> by link/physical layer <b>265</b>, which comprises WCT <b>60</b> that uses a Frequency Hopped-Time Division Multiple Access (FH-TDMA) method the in 900 MHz band. In the FH-TDMA method, all nodes <b>15</b> cycle synchronously through a series of frequency channels in the 900 MHz band. This aspect of the method, known as frequency hopping, ensures that all nodes <b>15</b> broadcast on the same frequency channel at the same time, and thus minimizes interference with transmission from other wireless systems. Under the TDMA aspect of the FH-TDMA method, each frequency channel is divided into multiple time slots, with different nodes <b>15</b> receiving different, unique time slots, which are then multiplexed and broadcast over the channel. In this fashion, multiple nodes <b>15</b> can be broadcast over the same channel without interference.
0092For this embodiment, the number of nodes <b>15</b> is limited prior to use of the embodiment to a fixed quantity As such, a fixed Node ID is allocated to each node and maintained in a static table maintained in the network manager layer <b>135</b>. Each node's <b>15</b> network manager layer <b>135</b> has a copy of this table containing node IDs of all nodes <b>15</b>. Each node <b>15</b> is aware of its own node ID. Each message, which contains the node ID of destination node <b>15</b>, is transmitted and repeated, i.e. retransmitted, to all nodes <b>15</b> and each node <b>15</b> that receives the message verifies whether it is destination node <b>15</b>. If so, node <b>15</b> processes the message. This hard-coded node ID scheme ensures that each node <b>15</b> will be recognized by others on the network.
0093Use of 900 Mhz band is advantageous in that the 900 MHz band provides for an extended communication range <b>20</b> for transmission between nodes <b>15</b>. This extended range between nodes <b>15</b> extends range of network <b>10</b> and clusters <b>25</b>. However, the 900 MhZ band with FH-TDMA offers limited bandwidth for communicating messages. It is for this reason that number of nodes <b>15</b> is limited.
0094Use of the FH-TDMA method in an ad hoc environment requires accurate time references for both FH and TDMA aspects. Time must be synchronized between nodes <b>15</b> to ensure nodes <b>15</b> are cycling through the same frequency at the same time. Further, time reference must be accurately synchronized to allow link/physical layer <b>265</b>, i.e. a TCW broadcasting using 900 MHz band, to join the frequency. In addition, from a TDMA perspective, accurate time reference and synchronization are required for time-slot allocation and to ensure correct use of time slots allocated to nodes <b>15</b>. In a centralized network, such a time reference could be provided by a reference time signal from a base station or even a mobile managing node <b>15</b>. However, in a highly dynamic ad hoc environment involving aircraft nodes <b>15</b>, where node <b>15</b> availability and position change extremely rapidly due to the high speed of aircraft nodes <b>15</b>, a centralized approach is not practical. This impracticality is due to the fact that the position and accessibility of any one node <b>15</b> designated for timing may change more quickly than other nodes' <b>15</b> ability to access and receive timing data from that node <b>15</b>. To overcome this problem, the embodiment employs positioning layer <b>205</b>, i.e. GPS transceiver, which provides a precise timing pulse (<b>1</b> PPS). Using the timing pulse, each node <b>15</b> can initialize its link/physical layer <b>265</b> and be sure that transmission and reception of messages is synchronized with other nodes <b>15</b>. This time synchronization method is further useful for allowing a node <b>15</b> to operate, albeit with degraded functionality, as standalone node <b>15</b>. In this case, when a connection to another node <b>15</b> is re-established, the timing pulse can be used to re-establish time synchronization with other nodes <b>15</b>.
0095Referring still to embodiment shown in <figref idref="DRAWINGS">FIG. 6</figref>, in order to maximize probability that a data message from source node <b>15</b> will be received by destination node <b>15</b>, each hop node <b>15</b> repeats each message received to all other nodes <b>15</b>. Similarly source node transmits all messages to all other nodes <b>15</b> to maximize the possibility that message will be repeated by all nodes <b>15</b> and will eventually reach destination node <b>15</b>, This repeating method for multi-hopping is a form of flood routing and is controlled and configured through firmware at link/physical layer <b>265</b>. If receiving node <b>15</b> is destination node <b>15</b>, data message is sent to core engine layer <b>270</b>.
0096All nodes <b>15</b> constantly update their data and transmit this data in data messages at very frequent intervals, i.e. at least once per second. The rapid frequency of updating information is particularly useful for aircraft nodes <b>15</b>. Due to the speed of aircraft nodes <b>15</b>, data in messages, especially geographical positional and navigational data, becomes outdated very rapidly. Thus, should a destination node <b>15</b> be unavailable or inaccessible, it is not necessary to attempt to spend resources trying to reestablish a connection for the message originally sent by source node <b>15</b>. Source node <b>15</b> will simply send a new, updated message which will be transmitted and repeated to attempt to reach destination node <b>15</b>. This process continues constantly, with all nodes <b>15</b> acting as source nodes <b>15</b> and transmitting data messages with their latest information, ensuring that a maximum number of nodes <b>15</b> receive updated messages while maximizing the possibility that a specific message for a specific destination node <b>15</b> will be received.
0097It is possible to implement more advanced methods of flood routing than simply transmitting and re-transmitting of all messages to all nodes <b>15</b>. More advanced methods for flood routing could be implemented, for example, at the core engine layer <b>270</b>. Since these changes would be made to the core engine layer <b>270</b>, they could be implemented without affecting application <b>95</b>, application layer <b>90</b>, or platform layer <b>80</b>. Thus application <b>95</b> would not be affected. In all other aspects, architecture <b>195</b> of TD <b>40</b> of the second embodiment is similar to architecture <b>70</b> for the first embodiment.
0098To assist the reader in understanding the specific aspects of the architecture <b>200</b> of the third embodiment, reference is now made to <figref idref="DRAWINGS">FIG. 7</figref>. In this embodiment, at device layer <b>275</b>, link/physical layer <b>280</b> comprises WCT <b>65</b> using 802.11 protocol over 2.4 GHz band. Functioning of positioning layer <b>205</b>, positioning support layer <b>210</b>, positioning services layer <b>215</b> are similar to second embodiment shown in <figref idref="DRAWINGS">FIG. 6</figref>. Functioning of API layer <b>95</b>, and platform layer <b>85</b> are the same as in second embodiment shown in <figref idref="DRAWINGS">FIG. 6</figref> and first embodiment shown in <figref idref="DRAWINGS">FIG. 3</figref>. This, again, demonstrates independence of platform layer <b>85</b> and API layer <b>90</b> from lower layers in all embodiments, allowing for application development independent of hardware used at link/physical layer <b>275</b>.
0099Use of the 802.11 protocol in the embodiment provides a number of advantages. First, 802.11 protocol interfaces and drivers are readily available on an off-the-shelf commercial basis for a large number and variety of CDs <b>50</b>. This makes integration of link/physical layer <b>275</b>, i.e. WCT <b>60</b> using 802.11 protocol at 2.4 GHz band, with CD <b>50</b> relatively easy. Further, use of 802.11 protocol in the 2.4 GHZ band provides for relatively high bandwidth, at least compared to FH-TDMA at 900 MHz. Thus, architecture <b>200</b> for the third embodiment is capable of supporting a comparatively larger number of nodes <b>15</b>, namely 5-20 nodes <b>15</b> per cluster <b>25</b> or in network <b>10</b>.
0100The communication range between two nodes <b>15</b> using 802.11 in the 2.4 GHz band is relatively limited (approximately 300 feet) compared to nodes <b>15</b> using FH-TDMA over 900 MHz band. However, once again, by repeating messages using hop nodes <b>15</b>, i.e. multi-hopping, a source node <b>15</b> and destination node <b>15</b> may be able to communicate over a distance of up to 5 and 20 miles. The distance over which source node <b>15</b> and destination node <b>15</b> can communicate will depend on, among other things, the number of nodes <b>15</b> available for repeating messages and the relative positions of each node <b>15</b>.
0101Referring still to <figref idref="DRAWINGS">FIG. 7</figref>, messages are not transmitted and repeated from each node to every other node <b>15</b>. Rather, a specific route or routes from sending node <b>15</b> to destination node <b>15</b>, using multi-hopping between source node <b>15</b> and destination node <b>15</b>, is used. This approach is advantageous since the bit error rate over a wireless channel tends to increase with the distance between nodes <b>15</b>. Thus it is possible that a multi-hopped route using hop nodes <b>15</b> may be more effective than a direct communication route between sending node <b>15</b> and destination node <b>15</b> as neighbor nodes <b>15</b>. By tracking potential routes, efficiency of communication may be increased by allowing nodes <b>15</b> to choose the most efficient communication route.
0102Tracking of multiple routes involving multi-hopping raises a number of difficulties. Once again, for application <b>95</b> designed for aircraft nodes <b>15</b>, nodes <b>15</b> may quickly become unavailable, causing interruptions along routes and unavailability of nodes <b>15</b>. Thus, node <b>15</b> along a route must be able to manage and gracefully recover from connection failures if neighbor node <b>15</b> with which node <b>15</b> is communicating along the route becomes unavailable. This may involve choice of another route. It may also be necessary to make provision for degraded operation so that a node <b>15</b> may remain operational as a standalone node <b>15</b> if required. In this case, when a connection is re-established, there either has to be some kind of synchronization scheme or a method to let communication of an interrupted message resume from where it stopped.
0103Given that availability of nodes <b>15</b> and topology of cluster <b>25</b> or network <b>10</b> may change constantly and rapidly, addressing the difficulties described above for tracking and using specific routes that involve multi-hopping requires that routing information for routes must be updated frequently on all nodes <b>15</b>. Further, information regarding changes to the topology of nodes <b>15</b> in cluster <b>25</b> or network <b>10</b> must reach other nodes <b>15</b> affected. Network <b>10</b> must be able respond and recover from routes broken in mid-connection between source node <b>15</b> and destination node <b>15</b> by quickly determining a new route to ensure that the end-to-end connection from source node <b>15</b> to destination node <b>15</b> is not lost. Nodes <b>15</b> must constantly be aware of the topology of nodes <b>15</b> for cluster <b>15</b> or network <b>10</b> to ensure that only the most efficient routes are used.
0104In the embodiment, the number of nodes <b>15</b> used is not fixed prior to use. Thus, the number of nodes <b>15</b> may increase or decrease at any time and new, previously unknown nodes <b>15</b> may be added at any time. Thus, hard coding of Node IDs in a static table is not appropriate for the embodiment. Rather, a naming service or means of assigning unique IP addresses for nodes <b>15</b> is required for node <b>15</b> management in an 802.11 context. Standard Domain Name Services (DNSs) using centralized domain name servers may not be useful or available given that nodes <b>15</b> may be located on aircraft nodes <b>15</b> that may not be in range of the DNS server. Also, use of centralized servers is incompatible with the ad hoc nature of network <b>10</b>. For similar reasons, use of traditional Dynamic Host Configuration Protocols (DHCP) that rely on a centralized DHCP server is also not useful. However, for the embodiment, a distributed IP address resolution algorithm may be used to allocate unique IP addresses for communications between nodes <b>15</b>.
0105The distributed IP address resolution used for the embodiment is based upon four assumptions: <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0106"> 1. The media access control (MAC) address for each node <b>15</b> is globally unique and used as the node ID for each node <b>15</b>. </li><li id="ul0006-0002" num="0107"> 2. A public IP (version 4, or IpV4) address space is available. </li><li id="ul0006-0003" num="0108"> 3. An evenly distributed and efficient hashing algorithm is available. </li><li id="ul0006-0004" num="0109"> 4. Each node <b>15</b> periodically broadcasts messages communicating that node's Node Id and other information to other nodes <b>15</b>. This message may be referred to as a hello message. </li></ul></li></ul>
0110The distributed IP address resolution algorithm uses a portion, A, of the public address IP space (e.g. IPv4 type C), which is allocated for the address resolution algorithm. Node <b>15</b> uses its MAC address as node's <b>15</b> Node ID. Node's <b>15</b> CD <b>50</b> keeps a monotonically increasing index in its registry. CD <b>50</b> of node <b>15</b> derives an (IPV4) address by hashing its MAC address and the index. The index is incremented by one after each address computation. If the IP address space in the algorithm is large compared to the number of nodes <b>15</b>, the likelihood of conflicting, i.e. duplicated, IP addresses is small. The IP address resolution overhead is expected to be small.
0111An example of application of the distributed IP address resolution algorithm is now provided. If a standalone node <b>15</b> that has no IP address, comes into range of cluster <b>25</b>, standalone node <b>15</b> realizes that it is not part of cluster <b>25</b> and initiates the distributed DHCP IP address resolution algorithm, as described above. Thus, standalone node <b>15</b> derives a proposed IP address for use in communication with nodes <b>15</b> in cluster <b>20</b> and broadcasts the proposed IP address. A receiving cluster node <b>15</b> receives the proposed IP address of standalone node <b>15</b> and receiving cluster node <b>15</b> checks to ensure that the received proposed IP address is not in conflict with existing IP addresses already used by nodes <b>15</b> in cluster <b>25</b>. If the proposed IP address for standalone node <b>15</b> is not in conflict, the receiving cluster node <b>15</b> broadcasts back a confirmation data message to standalone node <b>15</b> indicating that standalone node <b>15</b> may use the proposed IP address. If proposed IP address is already in use by any (cluster) node <b>15</b> in cluster <b>25</b>, receiving cluster node <b>15</b> broadcasts back a rejection message indicating that standalone node <b>15</b> may not use proposed IP for communication with nodes <b>15</b> in cluster <b>25</b>. Standalone node <b>15</b> then repeats the distributed IP address process IP and broadcasts new proposed IP addresses until a unique (proposed) IP address is resolved, i.e. when receiving cluster node <b>15</b> sends a confirmation message to standalone node <b>15</b> that standalone node <b>15</b> may use proposed IP address to communicate with nodes <b>15</b> in cluster <b>25</b>. After standalone node <b>15</b> obtains a unique IP address, standalone node retrieves network information about cluster <b>10</b> from receiving cluster node <b>15</b>. Receiving cluster node <b>15</b> then sends information about (former) standalone node <b>15</b>, including the confirmed IP address, to all other cluster nodes <b>15</b> in cluster <b>25</b>. Standalone node <b>15</b> then joins cluster <b>25</b> as a new cluster node <b>15</b>.
0112As a second example of use of the distributed IP address resolution algorithm, suppose a first cluster <b>25</b> comes into contact with a second cluster <b>25</b>, when two cluster nodes <b>15</b>, one from each cluster <b>25</b>, come into range of each other. In such a situation, these two nodes <b>15</b>, referred to contact nodes <b>15</b>, exchange network information including IP addresses of all nodes <b>15</b> in each cluster <b>25</b>. One contact node <b>15</b>, for example contact node <b>15</b> from first cluster <b>25</b>, checks the IP addresses within first cluster <b>25</b> and resolves any conflicting IP addresses within first cluster <b>25</b> by informing those cluster nodes <b>15</b> in first cluster <b>25</b> that they need to invoke the distributed IP address resolution algorithm to generate new IP addresses and resolve conflicts. The cluster nodes <b>15</b> so informed in first cluster <b>25</b> then apply distributed IP address resolution algorithm to derive new unique IP addresses within first cluster <b>25</b> and communicate the new IP addresses to contact node <b>15</b> of first cluster <b>25</b>. Contact node <b>15</b> of first cluster <b>25</b> then verifies whether the new IP addresses conflict with IP addresses used by cluster nodes <b>15</b> nodes in second cluster <b>25</b>. If a new IP address is found in conflict, contact node <b>15</b> of first cluster <b>25</b> negotiates with the cluster node <b>15</b> in first cluster <b>25</b> that has conflicting IP address for yet another new IP address. When all the conflicting IP addresses are resolved, they are passed to contact node <b>15</b> of second cluster <b>25</b>. The changes in IP addresses are then broadcast to all nodes <b>15</b> in both clusters <b>25</b> and first cluster <b>25</b> and second cluster <b>25</b> are merged.
0113Referring still to <figref idref="DRAWINGS">FIG. 7</figref>, the details specific to the architecture for the embodiment are now described. As noted previously, link/physical layer <b>280</b> comprises WCT <b>65</b> using 802.11 protocol over 2.4 GHz band. Positioning layer <b>205</b> is a sensor <b>65</b> for positioning, i.e. a GPS transceiver. In the embodiment, core engine layer <b>285</b> includes network layer <b>290</b>, network wrapper layer <b>295</b>, routing engine layer <b>298</b>, transport layer <b>300</b> and positioning support layer <b>210</b>. As described previously, core engine layer <b>285</b> provides the interface between platform layer <b>80</b> and device layer <b>275</b> and ensures that link/physical layer <b>280</b> and positioning layer <b>205</b> can be altered without affecting API layer <b>90</b> or platform layer <b>85</b>.
0114In the embodiment, network layer <b>290</b> communicates transport layer data messages from transport layer <b>300</b> on one node <b>15</b> to transport layer <b>300</b> on one or more different nodes <b>15</b>. Thus, network layer <b>290</b> provides point-to-point duplex communication between neighbor nodes <b>15</b>. Network layer <b>290</b> interacts with all other layers (platform layer <b>85</b>, API layer <b>90</b>, and device layer <b>275</b> through pre-defined interfaces and thus may be easily replaced to adapt to changes at link/physical layer <b>280</b>.
0115Network Wrapper layer <b>295</b> is the predefined interface between the Network layer <b>290</b> of core engine layer <b>285</b> and Network Manager layer <b>135</b> of platform layer <b>85</b>. Network wrapper layer <b>295</b> provides a standard set of interfaces so that all network layer <b>290</b> details are hidden from network manager layer <b>135</b>. Once again, this helps to ensure that platform layer <b>85</b> and API layer <b>90</b>, and therefore application itself <b>95</b>, can function regardless of implementation details of lower levels, such as core engine layer <b>285</b> and device layer <b>275</b>.
0116Routing Engine layer <b>298</b> is responsible for discovery and maintenance of routes between nodes <b>15</b>, including use of multi-hopping. As such, routing engine layer <b>295</b> also contributes to ad hoc nature of network <b>10</b>.
0117<figref idref="DRAWINGS">FIG. 10</figref> is a UML use case diagram showing the functionality provided by routing engine layer of the third embodiment shown in <figref idref="DRAWINGS">FIG. 7</figref>. User actor <b>305</b> is a human user of a CD <b>50</b> or an external system. Transport actor <b>310</b> represents the transport layer <b>300</b> and transport wrapper layer <b>140</b>. Transport layer <b>300</b> receives instructions and data messages from routing engine layer <b>298</b> and transport wrapper layer <b>140</b> provides instructions and messages to routing engine layer <b>298</b>. Transport layer <b>310</b> and transport wrapper layer <b>140</b> allow routing engine layer <b>298</b> to send and receive messages containing control packets for establishing routes and connections.
0118Routes are maintained in table stored in routing engine layer <b>298</b>, indexed by Node ID. Manage Route Table use case <b>315</b> provides the capability to manage a route table containing routes on the routing engine layer <b>298</b>. Manage Route Table use case <b>315</b> is invoked when route table is accessed. Log routing engine use case <b>320</b> begins when user actor <b>305</b> chooses to enable logging of the routing engine layer <b>298</b>. Log routing engine use case <b>320</b> ends when routing engine layer <b>298</b> is stopped or user actor chooses to disable logging of routing engine layer <b>298</b>. Log routing engine use case <b>320</b> is involved with one activity, namely start/stop logging routing engine use case <b>325</b>. Start/stop routing engine use case <b>325</b> begins when the routing engine layer <b>298</b> starts/stops.
0119Process Routing Message use case <b>330</b> begins when transport actor <b>310</b> receives a routing message (i.e. a data message containing routing information or a routing request) and asks the routing engine layer <b>298</b> to process it. Process Routing Message use case <b>330</b> ends when the routing message is processed with or without success. Transport actor <b>310</b>, specifically transport wrapper layer <b>140</b> receives a routing message on a pre-defined port of CD <b>50</b> and invokes routing engine layer <b>298</b> to process the routing message. Routing engine layer <b>298</b> parses the routing message and determines what to do based on the routing message type.
0120Maintain Local Connectivity use case <b>335</b> begins when the routing engine layer <b>298</b> receives a hello message or it is the time to maintain connectivity status to neighbor nodes <b>15</b>. Maintain Local Connectivity use case <b>298</b> ends when the operation completes with or without success. The activities involved in Maintain Local Connectivity use case <b>335</b> are: broadcast hello message, process hello message, maintain local connectivity, update blacklist. Routing engine layer <b>298</b> on any given node <b>15</b> maintains the connectivity to active neighbor nodes <b>15</b> (i.e. those remote neighbor nodes <b>15</b> that have been transmitting messages to given local node <b>15</b>). If routing engine layer <b>298</b> on local node <b>15</b> does not receive any packets (messages) from a remote neighbor node <b>15</b>, local node <b>15</b> assumes that the (physical) link to remote neighbor node <b>15</b> from which packets were not received is lost. Routing engine layer <b>298</b> on local node <b>15</b> will first try to repair the affected routes by starting the Discover Route use case <b>340</b>. If Discover Route use case <b>340</b> fails, routing engine layer <b>298</b> on local node <b>15</b> will broadcast a route error message by starting the Handle Route Error use case <b>345</b>.
0121Handle route error use case <b>345</b> begins when a route error condition arises. Handle route error use case <b>345</b> begins when the route error is handled. The activities involved in handle route error use case are: handle broken link, handle unreachable destination, and process route error message.
0122Discover route use case <b>340</b> begins when transport actor <b>310</b> needs to find a new route to a given destination node <b>25</b> or the existing route is invalid. Discover route use case <b>340</b> ends when the operation is completed with or without success. The activities involved in discover route case <b>340</b> are discover route use case <b>340</b> and repair broken route use case <b>350</b>. The routing engine layer <b>298</b> first tries to find a valid route to the given destination node <b>15</b> from the routing table. If a route to destination node <b>15</b> is found, discover route use case <b>340</b> ends. Otherwise, routing engine layer <b>298</b> on (local) node <b>15</b> tries to build a route request and broadcasts the request to other nodes <b>15</b>. Routing engine layer <b>298</b> then waits for the corresponding route reply and uses the reply to create or update the route entry in the route table. If the routing engine layer <b>298</b> does not receive the route reply within certain period of time, it tries to re-broadcast a new route request. Routing engine layer <b>298</b> on node <b>15</b> repeats the re-broadcast until routing engine <b>298</b> gives up. Repair broken route use case <b>350</b> is invoked when a destination node <b>15</b> is unreachable due to a broken link to the next node <b>15</b> on the route (in the routing table) to destination node <b>15</b> or a route error condition occur for some other reason. Routing engine layer <b>298</b> then attempts to repair the affected route. Repair Broken Route use case <b>350</b> ends when the route repair is completed with or without success. A special route discovery activity occurs when a broken route is being repaired.
0123Process Route Request use case <b>355</b> begins when the routing engine layer receives a route request. Process Route Request use case <b>355</b> ends when the route request is processed with or without success. The activities involved in Process Route Request use case <b>355</b> are drop route request, forward route request, and generate route reply.
0124Process Route Reply use case <b>360</b> begins when routing engine layer <b>298</b> receives a route request reply. Process Route Reply use case <b>298</b> ends when the route reply is processed with or without success. The activities associated with Process Route Reply use case <b>360</b> are update route and forward route reply.
0125Process Route Error Message use case <b>365</b> begins when routing engine layer <b>298</b> receives a route error message. Process Route Error Message use case <b>365</b> ends when the route error is processed with or without success.
0126Control Route Request Dissemination use case <b>370</b> begins when routing engine layer <b>298</b> needs to broadcast a route request. Control Route Request Dissemination use case <b>370</b> controls the amount of network traffic caused by route discovery messages. Control Route Request Dissemination use case <b>370</b> ends when the route request is built for broadcast.
0127The Update Route to Previous Hop use case <b>375</b> begins when the routing engine layer <b>298</b> receives a routing message. The Update Route to Previous Hop use case <b>375</b> ends when a route is established to the previous node <b>15</b>, i.e. the previous hop node <b>15</b>, in the route or the operation fails. The preconditions for Update Route to Previous Hop use case <b>375</b> are that transport actor <b>310</b> has received a routing message and that link/physical layer <b>280</b> supports bi-directional communications. Once transport actor <b>310</b> receives a routing message, transport actor <b>310</b> invokes the routing engine layer <b>298</b> to parse the routing message. Upon successful parsing, the routing engine layer <b>298</b> tries to establish a route to the previous hop node <b>15</b> where the routing message is from.
0128Routing and route updates are specific to the actual routing protocol and the details are not known at the generic routing engine abstraction level. In the embodiment, the routing protocol used by routing engine layer <b>298</b> may consist of an implementation of Ad hoc On-Demand Distance Vector (AODV) techniques, such as those disclosed by C. Perkins, E. Belding Royer, and S. Das in Request for Comments no. 3561 (Internet Society, July 2003), which is hereby incorporated by reference.
0129Like many routing techniques AODV makes use of routing metrics. A routing metric is a parameter used by an operating system, network protocol or routing mechanism, such as routing engine <b>298</b> to gain knowledge about the efficiency of a particular route. Given the importance of position information in the embodiment, and for ad hoc wireless networks in general, routing engine layer <b>298</b> could use a routing metric based on local node <b>15</b> and remote node <b>15</b> position information. Under such an approach, position information consisting of, but not limited to, the precise latitude, longitude, altitude, velocity, course, time, and magnetic variation of each node <b>15</b> is circulated regularly throughout the network. When source node <b>15</b> requires a route to destination node <b>15</b>, or must decide between multiple routes, the three dimensional positions of each potential hop node <b>15</b> can be used to establish a metric for all possible routes between source node <b>15</b> and destination node <b>15</b>. The latitudes, longitudes, and altitudes making up the three dimensional positions can be used to calculate the three dimensional straight line distances between each hop node <b>15</b> or potential hop node <b>15</b> in a route, and assign a metric that reflects the reliability of the wireless link at this distance.
0130There are variety of ways a three-dimensional position based routing metric could be used by routing engine <b>298</b> for determining routes. For example, below some distance threshold where link/physical layer <b>280</b> link reliability for transmission or reception is fairly high, the routing metric for each hop node <b>15</b> or potential hop node <b>15</b> might increase linearly with distance whereas, above the threshold, the routing metric might increase exponentially to reflect the effect of far-field signal degradation on link/physical layer <b>280</b> link performance. Alternatively, latitude and longitude could be used to calculate the 2 dimensional above ground distance between hop nodes <b>15</b> or potential hop nodes <b>15</b>, to form a coordinate set with the difference in altitude between nodes <b>15</b>. These coordinates could be checked against the E plane and H plane signal distributions of the transmitter/receiver pairing between nodes <b>10</b>. Coordinates well inside the signal distribution range would generate favorable routing metrics, with smaller values being considered better, that would favour use of a node <b>15</b> as a hop node <b>15</b> for multi-hopping along a route from source node <b>15</b> to destination node <b>15</b>. The value of routing metric would increase linearly as the coordinates approach a spatial distribution threshold, and then increase exponentially outside the threshold.
0131In addition to locations of nodes <b>15</b>, velocities of nodes <b>15</b> might also be used, either on a stand-alone basis or in combination with location information, to establish routing metrics. Similar to the location based routing metric processes described above, the relative velocities of potential hop nodes <b>15</b> could be calculated and a metric assigned that reflects the expected reliability of link/physical layer <b>280</b> transmission of messages using between the potential hop nodes <b>15</b>. The routing metric could reflect the Doppler effects between nodes <b>15</b> given their relative velocities and communication frequencies, and/or known or measured relative velocities that provide good/poor link performance for link/physical layer <b>280</b> transmission of messages.
0132In addition to the question of routing using metrics, in mobile ad hoc networks it is not uncommon for node <b>15</b> to move outside the communication range <b>20</b> of other nodes <b>15</b>. When this occurs, node <b>15</b> will lose communication with other nodes <b>15</b>, including any nodes <b>15</b> that node <b>15</b> was communicating with by routing through these other nodes <b>15</b>, as hop nodes <b>15</b>, and vice versa. Instead of waiting for this loss of communication to happen, core engine layer <b>285</b> for the embodiment may make use of a scheme where position and Geographic Information System (GIS) information is used to predict this loss of communication and take action to search for new routes and hand-off existing routes in such a way as to minimize interruptions to traffic. This predictive algorithm would use the precise location information, velocity, course and other position information of all relevant nodes <b>15</b> to determine when a particular node <b>15</b> is likely to lose a communication point in the network <b>10</b>. As this probability increases, the routing metric for all routes involving the particular node <b>15</b> of concern would increase. At some threshold, routing engine layer <b>298</b> would react by looking for replacement routes but without halting communication. If routes with a more favorable metric are discovered, traffic will be re-routed.
0133The use of position based routing metrics can also be used to reduce the negative impact of the doppler shift on communication between nodes <b>25</b>. The Doppler shift is equal to the relative velocity of a transmitter of a signal, such as link/physical layer <b>280</b> on a node <b>15</b> transmitting messages, with respect to the receiver of a signal, such as link/physical layer <b>280</b> on node <b>15</b> receiving the message, divided by the wavelength of the signal, multiplied by the cosine of the spatial angle between the direction of motion of the receiver and the direction of arrival of the signal. The maximum spreading will occur when the angle is zero. This happens when the devices are moving directly towards or away from each other.
0134By using the position based routing metrics, the (AODV) algorithm can effectively attenuate Doppler effects by setting a multi-hop route to use an intermediary negotiating node <b>15</b>, not collinear with the other hop nodes <b>15</b>, to mediate communications. Intermediary node <b>15</b> would thus have lower Doppler shift and not be affected to the extent of two nodes <b>15</b> directly flying towards one another.
0135Turning now to <figref idref="DRAWINGS">FIG. 11</figref>, therein is shown a UML use case diagram for the Network Wrapper layer <b>295</b>. As shown in <figref idref="DRAWINGS">FIG. 20</figref>, the operation of the Network Wrapper layer <b>295</b> includes: Get Routes use case <b>380</b>, Add Route use case <b>385</b>, Update Route use case <b>390</b>, Delete Route use case <b>395</b> and Get Interfaces use case <b>400</b>. Network wrapper layer <b>295</b> is invoked in response to requests by User actor <b>305</b> which is a human user or an external system.
0136Get Routes use case <b>380</b> is invoked when user actor <b>305</b> chooses to get route entries from the route table on local node <b>15</b> for a given destination node <b>15</b>, including any corresponding gateway and interface. Add Route use case <b>385</b> is started when User actor <b>305</b> chooses to add a route entry to the route table on local node <b>15</b> for a given destination node <b>15</b>, including any corresponding gateway and interface. Update Route use case <b>390</b> is started when the User actor <b>305</b> chooses to update a route entry, such as any gateway and interface, for a node <b>15</b> in the route table. Delete route use case <b>395</b> is started when the User actor <b>305</b> chooses to delete a route entry from the route table on local node <b>15</b>. Get Interfaces use case is started when the User actor <b>305</b> chooses to get all the network interfaces on the operating system on local node <b>15</b>.
0137<figref idref="DRAWINGS">FIG. 12</figref> is a UML use case diagram for transport wrapper layer <b>140</b> for the embodiment. The operation of the Transport Wrapper layer <b>140</b> includes: Create passive socket use case <b>405</b>, Create socket use case <b>410</b>, Accept connection requests use case <b>415</b>, Connect use case <b>420</b>, Send/Receive datagrams use case <b>425</b>, Send/Receive stream data use case <b>430</b>. Transport wrapper layer <b>140</b> passes the data in these use cases to network layer <b>290</b> for transmission over the network <b>10</b> using link/physical layer <b>280</b>. The transport wrapper layer <b>140</b> is invoked by application actor <b>435</b>, which corresponds to application <b>95</b> and which makes use of platform layer <b>85</b> functionality via API layer <b>90</b>.
0138A socket is a TCP/IP address which provides addressing to particular devices on the network <b>10</b>. Create Passive Socket use case <b>405</b> is invoked to create a passive socket for connecting to services offered by a device on a node <b>15</b>. Create Socket use case <b>410</b> is invoked to create a generic socket for a communication end point, such as a destination node <b>15</b>. Two types of sockets can be created, namely stream and datagram sockets. Accept Connection Requests use case <b>415</b> is started to accept connection requests. Connect use case <b>420</b> is started to connect to a known communication port on a specified host (node <b>145</b>). Send/Receive Datagrams use case <b>425</b> is started to send and receive datagrams using datagram sockets. A datagram contains information about network <b>10</b> and nodes <b>15</b> as well as type of application <b>95</b>. Send/Receive Stream Data use case <b>430</b> is started to send or receive stream data over a connection oriented TCP connection.
0139The embodiments shown in <figref idref="DRAWINGS">FIGS. 6 and 7</figref> may be advantageously used to implement a number of applications <b>95</b>, using API layer <b>90</b>, that may involve aircraft nodes <b>95</b>. Further, since API layer <b>90</b> and platform layer <b>85</b> are independent of lower layers, such as device layer and core engine layer in all embodiments, an application <b>95</b> may be implemented using a variety of different wireless transceivers <b>60</b> and sensors <b>65</b>.
0140Turning now to <figref idref="DRAWINGS">FIG. 13</figref>, therein is shown a block diagram of a fire fighting application <b>440</b> for fighting fires that advantageously makes use of the present invention. The system comprises a series of nodes <b>15</b>, some of which are aircraft nodes <b>15</b>, that are used for fighting fires. Each node <b>15</b>, whether aircraft, ground vehicle, or stationary object, has a TD <b>40</b> with fire fighting application <b>440</b> running. Fire fighting application <b>440</b> is implemented as application <b>95</b> using API layer <b>90</b> and uses positioning data from positioning layer <b>205</b>, i.e. GPS transceiver. Thus, Fire fighting application <b>440</b> is well suited for use on either the architecture <b>195</b> of the second embodiment or architecture <b>200</b> of third embodiment.
0141Fire fighting application system <b>440</b> has a number of air attack nodes <b>15</b> that are located on air attack aircraft. Air attack nodes <b>15</b> are used for dispensing fire fighting substances. Fire fighting application <b>440</b> may be used to designate target area <b>35</b> in which a task is to be carried out. Such a task may comprise deploying fire fighting substances in target area <b>35</b>, notably by air attack nodes <b>15</b> when target area <b>35</b> contains a fire. A task may also consist of navigating to a target area <b>35</b> and or surveying target area <b>35</b>. Generally, tasks are assigned by one or more managing nodes <b>15</b>, often located on an aircraft referred to as a bird dog in fire fighting activities. Managing nodes <b>15</b> manage air attack nodes <b>15</b> and nodes <b>15</b> in other vehicles.
0142For fire fighting application <b>440</b>, the software is the same on all nodes <b>15</b> and consists of an application <b>95</b> that makes use of API layer <b>90</b> to invoke services from platform layer <b>85</b>. On each node <b>15</b>, CD <b>50</b> displays information relating to position, speed, and direction of all nodes <b>15</b>, including node <b>15</b> on which CD <b>50</b> is located. CD <b>50</b> also displays and provides navigational information and directions to target area <b>35</b> for CDs <b>50</b> on air attack node <b>15</b> to which a task has been assigned for target area <b>35</b> by managing node <b>15</b>. In addition, CD <b>50</b> on air attack node <b>15</b> provides assistance to air attack node <b>15</b> for carrying out task in target area <b>35</b>, such as displaying information on when and where to deploy fire fighting substances. CD <b>50</b> on all nodes <b>15</b> can view status of air attack node <b>15</b> assigned a task for target area <b>35</b> for completing task and navigating to target area <b>35</b>. Additionally CD <b>50</b> can display status of attack node <b>15</b>, speed, position, direction, navigational information and directions for all nodes <b>15</b> on a view providing a geographical map generated from the GIS database in conjunction with use of positional data from positioning layer <b>205</b>.
0143Generation of positional information, navigation information, speed, direction, navigation instructions, and map views is made possible by using data provided by positioning layer <b>205</b>, i.e. GPS transceiver, on nodes <b>15</b>. Positioning layer <b>205</b> on a given node <b>15</b> regularly receives position data for the given node <b>15</b> from a satellite or the like. In addition, each node <b>15</b> receives position data from all other nodes <b>15</b> over link/physical layer <b>265</b> when implemented on second embodiment or link/physical layer <b>280</b> when implemented on third embodiment. Position data from other nodes <b>15</b> is routed from core engine layer <b>270</b> of second embodiment or core engine layer <b>280</b> of third embodiment to network manager <b>135</b>. Position data from local node <b>15</b> is routed to position support layer <b>210</b>.
0144Network manager <b>135</b> and positioning support layer <b>210</b> then send position data to position services layer <b>215</b>. Position services layer <b>215</b> then uses position information received to calculate speed, direction, navigation information and navigation instructions, by comparing previously received position information with new position information and performing calculations to derive speed, direction, navigation information and navigation instructions. To provide map views, position services layer <b>215</b> cross references position information received and results of calculations with data in the GIS database. The exact information generated by position services layer <b>215</b> depends on instructions transmitted from fire fighting application <b>440</b>, as an application <b>95</b>, to position services layer <b>215</b> using API layer <b>90</b>. Results of calculation and all information required for Fire fighting application <b>440</b> are also transmitted from positioning services layer <b>215</b> to fire fighting application <b>440</b> using API layer <b>90</b>. To further aid the reader in understanding Fire fighting application <b>440</b> and the utility of information provided, reference is now made to <figref idref="DRAWINGS">FIG. 14</figref> to <figref idref="DRAWINGS">FIG. 17</figref> (inclusive). <figref idref="DRAWINGS">FIG. 14</figref> to <figref idref="DRAWINGS">FIG. 18</figref> provide a number of views of graphical user interfaces (GUI) generated by Fire fighting application <b>440</b> and displayed on CD <b>50</b>. In general, for GUIs, distance is expressed in nautical miles (nm), speed is expressed in knots (kts), and altitude is expressed in (ft). However, other units for any of these measures may be used. It is not the intention of the inventors to restrict information provided or displayed by the present invention to a fixed set of units of measure
0145<figref idref="DRAWINGS">FIG. 14</figref> shows an example of a Traffic View GUI <b>445</b> provided by Fire Fighting application <b>440</b>. Traffic View GUI <b>445</b> shows location data of local node <b>15</b>, whether aircraft node <b>15</b>, ground vehicle node <b>15</b> or another type of node <b>15</b>, and remote nodes <b>15</b> in the network <b>20</b>. For local node <b>15</b>, local node speed <b>450</b>, local node magnetic course <b>455</b>, and local node altitude <b>460</b> are shown. Local node <b>15</b> is itself shown at center of Traffic view GUI <b>445</b> as a local node icon <b>463</b>. Other information may also be shown, such as status of radio communication for local node <b>15</b> or position of local node geographic coordinates in Latitude/Longitude or Universal Transverse Mercator, may also be shown.
0146Remote node <b>15</b> is shown as a circular dot <b>465</b>. Remote node magnetic course <b>470</b> is shown as a line pointing in direction of movement, originating at the dot representing the node <b>15</b>. Remote node speed <b>475</b>, relative remote node distance <b>480</b>, and relative remote node altitude <b>485</b> compared to local node are also shown.
0147Traffic view GUI <b>445</b> also displays two distance rings, outer distance ring <b>490</b> and inner distance ring <b>495</b>, around local node icon <b>463</b> that represent distance from local node <b>15</b> of remote nodes <b>15</b>. Radius of outer distance ring <b>490</b> is twice radius of inner distance ring <b>495</b> radius. Scale and distance represented by outer distance ring <b>490</b> and inner distance ring <b>495</b> are adjustable by user. If a remote node <b>15</b> moves off the screen of Traffic view GUI <b>445</b>, the user is warned and is invited to adjust the scale to make remote node <b>15</b> visible again.
0148Traffic view GUI <b>445</b> allows users to see speed, navigational, and positional information about local node <b>15</b>, as well as relative distance and directional information for remote nodes. Thus, traffic view GUI <b>445</b> is useful for quickly obtaining information about all nodes <b>15</b> and their relative positions and courses. Such information may be used for avoiding collisions and assigning tasks to nodes <b>15</b>
0149<figref idref="DRAWINGS">FIG. 15</figref> shows an example of an Operational View GUI <b>500</b> provided by Fire Fighting application <b>500</b>. Operational View GUI <b>500</b> shows location and identity of nodes, as well as target areas <b>35</b> which may represent fires <b>505</b>. More specifically, operational view GUI <b>500</b> provides operational information. Each node <b>15</b> is described on screen by a moving icon <b>508</b>, including local node icon <b>463</b>, specific to the type of aircraft. Absolute or relative altitudes for each node <b>15</b> are also shown as well as visual proximity to target areas <b>35</b>. Local node's <b>15</b> geographic coordinates, local node's speed <b>450</b>, local nodes magnetic course <b>455</b>, and altitude <b>460</b> are also displayed. Inner distance ring <b>495</b> and outer distance ring <b>490</b> are displayed around the local node icon <b>15</b>. The status of each node <b>15</b> in the Operational view GUI <b>500</b> can describe such things as presence of fire fighting payload, fuel, or other information is also communicated between nodes <b>15</b> and may be displayed.
0150<figref idref="DRAWINGS">FIG. 16</figref> is an example of operational View GUI <b>500</b> of <figref idref="DRAWINGS">FIG. 15</figref> with mapping information displayed. Operational View GUI <b>500</b> allows the user to import mapping information that is displayed as a map <b>510</b> in the background. Map <b>510</b> may give the user topographical information about the region and provide visual cues for the operating area, Mapping information can also provide text labels and descriptions of topographic features. The mapping information can be incorporated into the system in a GIS compatible format such as a shape file, database file or other, or could be drawn from other maps sources including but not limited to bitmaps, and geo-referenced images and documents. Alternatively, map <b>510</b> may show infrared data to better display intensity of fires. Map <b>510</b> may also show other data to assist in visualization from an operational perspective. Mapping images and GIS data are provided or generated from information furnished by <b>215</b> positioning services layer <b>215</b> to fire fighting application <b>445</b> via API layer <b>95</b>. It is not the intention of the inventors to limit information displayed on map <b>510</b> to infrared or topographical data. The Operational View GUI <b>500</b> allows for rotation of map in real-time to keeping local node icon <b>463</b> orientation constantly pointed towards the top of the display screen. Alternatively, map can be held fixed on the screen and the local node icon <b>463</b> may move around the screen describing accurately its motion.
0151Operational View GUI <b>500</b> can also display fire fighting operational information alongside the topographic information when mapping information is displayed. Fire fighting information such as, but not limited to, base camps, fuel cashes, helipads, airstrips, filling stations, ground crew, and other can be displayed over the moving map. Fire fighting information can also be marked in real-time by a node <b>15</b> and is instantly displayed on screen. This information is communicated over the network <b>10</b> to all other nodes <b>15</b> where it is displayed, logged and tracked.
0152Operational View GUI <b>505</b> is interactive and allows firefighters to note and map new fire locations, including the perimeter of fire areas, which may be designated as target areas and shown on operational view with or without mapping data. Further, one mapped as a fire area by an aircraft or other node using fire fighting application, information on fires status will be updates at least once per day. However, users of fire fighting application <b>440</b> may also survey status of fires without waiting for daily updates and by using (P2P) data sharing abilities, will instantly be able to update other nodes about fire status or be so updated by other nodes. from ex available at least be available at least once Operational View GUI <b>505</b> also allows managing node <b>15</b> to assign tasks for target areas <b>35</b>, and notably to direct nodes <b>15</b> to target areas for deploying fire fighting substances. Operational view GUI <b>505</b> thus allows users on all nodes to visually perceive relative position and course of all other nodes <b>15</b> and target areas <b>35</b>, as well as to see assigned tasks for all nodes <b>15</b>. As such, Operational view GUI <b>500</b> thus allows users to quickly evaluate use of resources for fighting fires. Further, operational view GUI <b>505</b> also allows users on a managing node <b>15</b> to quickly make decisions about the quantity of resources, such as number of attack nodes <b>15</b>, that should be allocated to a task.
0153<figref idref="DRAWINGS">FIG. 17</figref> is an example of an instrument view GUI <b>515</b> on an attack node <b>15</b>, which provides further information on position of air attack node <b>15</b> with regard to target area for deploying fire fighting material. Instrument view GUI <b>515</b> may indicate estimated distance <b>520</b> from target area <b>35</b>, estimated time <b>525</b> to target area, and bearing of node <b>15</b>. Center circle <b>530</b> of instrument view GUI is color encoded to show location of air attack node <b>15</b> in terms of four zones. Don't drop zone indicates an area within which fire fighting substances must not be deployed. Final approach zone indicates an area in which users on air attack node <b>15</b> assigned task of deploying fire fighting substances should commence final approach to target area <b>35</b>. Get ready zone is the area in which user on air attack node <b>15</b> should prepare airborne vehicle to deploy fire fighting substance. Drop location is the area in which attack node <b>15</b> must deploy fire fighting substances, i.e. in target area <b>35</b>. Colour of center circle <b>530</b> changes according the four zones described, thus assisting user in preparation for deployment. It will be apparent to one skilled in the art that instrument view user interface GUI <b>515</b> could be adapted for other tasks involving aircraft vehicles using geographical information, such as crop dusting and military applications, among others.
0154<figref idref="DRAWINGS">FIG. 18</figref> is an example of a text view GUI provided by fire fighting application <b>535</b>. Text view GUI <b>535</b> may show data for both local node <b>15</b> and remote nodes <b>15</b> in a textual format. For both local node <b>15</b> and remote node <b>15</b>, the data may include, among other things: location of node <b>15</b>, velocity of node <b>15</b>, course of node <b>15</b>, altitude of node <b>15</b>. In addition to the embodiments and fire fighting application described above, there are a large number of alternative embodiments and applications for which the present invention may be used. In general, provided an appropriate sensor <b>65</b> for an application <b>95</b> is present with an appropriate WCT <b>60</b>, the present invention can be used to provide a peer to peer ad hoc wireless network <b>10</b> for communicating and sharing data for the application <b>95</b>. Further, since sensor <b>65</b> and WCT <b>60</b> are hidden from platform layer <b>85</b> and API layer <b>90</b>, applications <b>95</b> can be developed without changing existing platform layer <b>85</b> and API layer <b>90</b>. Some possible alternative embodiments and applications <b>95</b> that may be implemented using the present invention are described below.
0000Coordination of Emergency Vehicles
0155In this embodiment ambulances and fire engines form a mobile ad hoc network <b>10</b> for aiding in emergency situations. The display in this embodiment shows other emergency vehicles at the emergency scene and transmits positional and other data to coordinate rescue efforts. This application <b>95</b> could be implemented using either of the embodiments shown in <figref idref="DRAWINGS">FIG. 6</figref> or <figref idref="DRAWINGS">FIG. 7</figref> and would require a sensor <b>65</b> having positional capability.
0000Police Patrols
0156An embodiment of the present invention could also be used to coordinate police work such as coordinated chases or the like. In this case police vehicles may communicate data between all vehicles involved, and transmit positional information. Network <b>10</b> transmits data securely so that a criminal element may not intercept sensitive data. Again, this application <b>95</b> could be implemented using either of the embodiments shown in <figref idref="DRAWINGS">FIG. 6</figref> or <figref idref="DRAWINGS">FIG. 7</figref>, or any other embodiment provided that an appropriate sensor <b>65</b> with positional capability.
0000Intelligent Sensor Networks
0157Alternately an embodiment of the present invention may be used to create an embodiment having an intelligent ad hoc mobile sensor network. In this case, each node has a sensor <b>65</b>, perhaps other than sensor <b>65</b> for positioning, that gathers information necessary for the specific application <b>95</b> implemented on architecture provided by embodiment. This information can then be shared among all nodes <b>15</b> in network <b>10</b>. For example, bar code readers could be used to read bar codes on boxes to evaluate and store warehouse contents or truck load contents. This information can then be wirelessly shared, on a mobile basis, amongst nodes <b>10</b>.
0000Transportation Tracking
0158An embodiment of the present invention may be used in transportation to track location and load contents of land vehicles, such as trains, cars, or trucks. The devices in this case transmit data such as text, voice, and contents tracking information including but not limited to vehicle contents, weight, disposition, destination location. An application <b>95</b> in this area might involve an embodiment having a bar code reader, mass detector, and GPS as sensors <b>65</b>.
0000Disaster Recovery
0159An embodiment of the present invention could also be used to quickly set up networked communication in areas where natural disasters, physical disasters, or other have rendered existing network infrastructure inoperable. This could involve using the self-forming network capabilities of the ad hoc wireless network provided by present invention to enable the exchange of data, positional information, instrument or sensor data, voice, video or other data in a time critical environment. Once again, this would require appropriate sensors <b>65</b> and support at the core engine layer to support application <b>95</b>.
0000Search and Rescue
0160An embodiment of the present invention may also be used in search and rescue operations to allow the sharing of information between ground stations, vehicles, or patrols, airborne vehicles, and marine vessels. The nodes <b>15</b> installed on vehicles could allow rescue teams to coordinate efforts by sharing precise positional information in real-time. The nodes <b>15</b> could also allow for digital marking of searched and un-searched locations, geographic and topological referencing, assignment of targets and tasks, and data logging. The nodes <b>15</b> could further allow the input and sharing of user defined areas such as avalanche zones, flood regions, infrastructure collapse, etc. Since such use of an embodiment of the present invention would rely principally on positional data, applications appropriate for search and rescue could be implemented on the embodiments similar to those shown in <figref idref="DRAWINGS">FIGS. 6 and 7</figref>.
0000Public Transit
0161An embodiment of the invention may also be used in public transportation systems to report positional and kinematics information. Nodes <b>15</b> would allow public transit vehicles housing nodes <b>15</b> to report positional and prospective arrival times to destinations and stops. Nodes <b>15</b> could also allow sharing of traffic information, road conditions, and connection information between vehicles. Since such use of an embodiment of the present invention would rely principally on positional data, applications appropriate for search and rescue could be implemented on the embodiments similar to those shown in <figref idref="DRAWINGS">FIGS. 6 and 7</figref>.
0000Surveying and Remote Region Communications
0162An embodiment of the present invention could additionally be used in land based; air to land or air based geographical surveying or other remote location work where communication is required. Nodes <b>15</b> would allow the sharing and marking of geographic location, exchange of sensor information, data and voice communication, and could be used to coordinate team positions and tasks. Since such use of the present invention would rely principally on positional data, applications appropriate for search and rescue could be implemented on the embodiments similar to those shown in <figref idref="DRAWINGS">FIGS. 6 and 7</figref>.
0000Hospital Patient Tracking
0163An embodiment of the present invention could also be used advantageously to track the precise location of individuals within a particular institution or area. One application for nodes <b>15</b> would be the tracking of patients while in hospital. The device would relay position and patient information to hospital staff, while allowing <b>2</b> way messaging and other forms of data exchange.
0000Armed Forces Communications
0164An embodiment of the invention may also be used to provide all forms of information sharing between armed forces teams in an ad hoc environment. For example, nodes <b>15</b> could be used by supply teams to exchange positional information of resources.
0165The present invention provides a network for sharing data among airborne vehicles that is self-forming, self-healing, reliable, tolerant of failure, and capable of updating time sensitive information in real time. The network also implements multi-hopping, whereby a device in the network may forward data between other devices that may not be in range of one another, to maximize the distance over which two computing devices on different airborne vehicles can communicate. Thus, the present invention allows for sharing of information on computing devices on airborne vehicles for real-time, high speed operations, such as fire fighting, carried out by mobile teams in airborne vehicles.
0166It will be apparent to one skilled in the art that other embodiments using different kinds of sensors and wireless communication devices may be possible. Further, many types of applications for various embodiments will also be possible. It is not the intention of the inventor to limit the scope of the invention to the specific embodiments or applications disclosed herein. The embodiments and applications described herein are disclosed for purposes of example and not limitation.
Contents5
16 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10725170B2 | Cited by | United States of America | Applicant |
| US8457034B2 | Cited by | United States of America | Search report |
| US11172240B2 | Cited by | United States of America | Applicant |
| US8811265B2 | Cited by | United States of America | Search report |
| US10165621B2 | Cited by | United States of America | Search report |
| US7471214B2 | Cited by | United States of America | Search report |
| US2011028099A1 | Cited by | United States of America | Pre-grant |
| US8055296B1 | Cited by | United States of America | Search report |
| US2014081598A1 | Cited by | United States of America | Pre-grant |
| US8125896B2 | Cited by | United States of America | Applicant |
| US8711698B2 | Cited by | United States of America | Search report |
| US8355961B1 | Cited by | United States of America | Applicant |
| US8983455B1 | Cited by | United States of America | Search report |
| US10798920B2 | Cited by | United States of America | Search report |
| US2008043715A1 | Cited by | United States of America | Pre-grant |
| US2009310531A1 | Cited by | United States of America | Pre-grant |
| CN108725809A | Cited by | China | Search report |
| US9549049B2 | Cited by | United States of America | Search report |
| US9182498B2 | Cited by | United States of America | Search report |
| US2016050011A1 | Cited by | United States of America | Pre-grant |
| US8614997B1 | Cited by | United States of America | Search report |
| US2007127460A1 | Cited by | United States of America | Pre-grant |
| US7729263B2 | Cited by | United States of America | Applicant |
| CN110692268A | Cited by | China | Search report |
| WO2005036802A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2009197551A1 | Cited by | United States of America | Pre-grant |
| US11265966B2 | Cited by | United States of America | Search report |
| US9686360B2 | Cited by | United States of America | Applicant |
| US2013242864A1 | Cited by | United States of America | Pre-grant |
| US8111622B2 | Cited by | United States of America | Applicant |
| US2009318138A1 | Cited by | United States of America | Pre-grant |
| US2007086427A1 | Cited by | United States of America | Pre-grant |
| CN113433977A | Cited by | China | Search report |
| US2008123586A1 | Cited by | United States of America | Pre-grant |
| US9541402B2 | Cited by | United States of America | Applicant |
| US8059620B2 | Cited by | United States of America | Search report |
| US2022229849A1 | Cited by | United States of America | Search report |
| US2010232295A1 | Cited by | United States of America | Pre-grant |
| US2008117858A1 | Cited by | United States of America | Pre-grant |
| US2009310510A1 | Cited by | United States of America | Pre-grant |
| US8121073B2 | Cited by | United States of America | Search report |
| US9467221B2 | Cited by | United States of America | Search report |
| US2007087695A1 | Cited by | United States of America | Pre-grant |
| US8340067B2 | Cited by | United States of America | Applicant |
| US2008056223A1 | Cited by | United States of America | Pre-grant |
| US2017180072A1 | Cited by | United States of America | Pre-grant |
| US2009103452A1 | Cited by | United States of America | Pre-grant |
| US2016112855A1 | Cited by | United States of America | Pre-grant |
| US2010014444A1 | Cited by | United States of America | Pre-grant |
| US2007116016A1 | Cited by | United States of America | Pre-grant |
| US10524185B2 | Cited by | United States of America | Search report |
| CN104184692A | Cited by | China | Search report |
| US11438057B2 | Cited by | United States of America | Search report |
| US9083425B1 | Cited by | United States of America | Applicant |
| US8929830B2 | Cited by | United States of America | Search report |
| US2014355528A1 | Cited by | United States of America | Pre-grant |
| US9413689B1 | Cited by | United States of America | Applicant |
| US8818397B2 | Cited by | United States of America | Search report |
| US9302782B2 | Cited by | United States of America | Applicant |
| US2010263047A1 | Cited by | United States of America | Pre-grant |
| US8284674B2 | Cited by | United States of America | Applicant |
| US10388049B2 | Cited by | United States of America | Search report |
| US2009238087A1 | Cited by | United States of America | Pre-grant |
| US2014080528A1 | Cited by | United States of America | Pre-grant |
| WO2023272684A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2008096545A1 | Cited by | United States of America | Pre-grant |
| US8160037B2 | Cited by | United States of America | Search report |
| US7330694B2 | Cited by | United States of America | Search report |
| US11633636B2 | Cited by | United States of America | Applicant |
| KR20190120972A | Cited by | Republic of Korea | Search report |
| US10693580B2 | Cited by | United States of America | Applicant |
| US9883368B2 | Cited by | United States of America | Search report |
| US10908275B2 | Cited by | United States of America | Applicant |
| US9985718B2 | Cited by | United States of America | Applicant |
| US8111680B2 | Cited by | United States of America | Search report |
| US9301306B2 | Cited by | United States of America | Search report |
| US2011246068A1 | Cited by | United States of America | Pre-grant |
| US7706327B2 | Cited by | United States of America | Search report |
| US2008025270A1 | Cited by | United States of America | Pre-grant |
| US7761515B2 | Cited by | United States of America | Applicant |
| US11574547B2 | Cited by | United States of America | Search report |
| US11210818B2 | Cited by | United States of America | Search report |
| US2009125918A1 | Cited by | United States of America | Pre-grant |
| US2009251366A1 | Cited by | United States of America | Pre-grant |
| US8495239B2 | Cited by | United States of America | Applicant |
| US2009141669A1 | Cited by | United States of America | Pre-grant |
| US10319244B2 | Cited by | United States of America | Applicant |
| US2022132487A1 | Cited by | United States of America | Search report |
| US2010014491A1 | Cited by | United States of America | Pre-grant |
| TWI511600B | Cited by | Taiwan Province of China | Examiner |
| GB2529108A | Cited by | United Kingdom | Search report |
| US9274226B2 | Cited by | United States of America | Applicant |
| US2007116017A1 | Cited by | United States of America | Pre-grant |
| US8509140B2 | Cited by | United States of America | Applicant |
| US2010128657A1 | Cited by | United States of America | Pre-grant |
| WO2016048698A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2007214254A1 | Cited by | United States of America | Pre-grant |
| CN109714728A | Cited by | China | Search report |
| EP2541853B2 | Cited by | European Patent Office (EPO) | Opposition |
| US2011246551A1 | Cited by | United States of America | Pre-grant |
3 members in 2 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 2437926 | Canada | – | |
| 2437926 | Canada | A | |
| 2437926 | Canada | A | |
| 2437926 | – | – | – |
| CA20032437926 | – | – | – |
Members3
| Document | Office | Kind | |
|---|---|---|---|
| CA2437926A1 | Canada | A1 | |
| CA2478693A1 | Canada | A1 | |
| US2005090201A1 | United States of America | A1 |
30 transactions on the USPTO file
Abandoned without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Mail Restriction RequirementMCTRS | MCTRS | |
| Restriction/Election RequirementCTRS | CTRS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Preliminary AmendmentA.PE | A.PE | |
| Workflow incoming amendment IFWWAMD | WAMD | |
| Corrected PaperCPAP | CPAP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Claim Preliminary AmendmentCLAIM | CLAIM | |
| Initial Exam Team nnIEXX | IEXX |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB | |
| AssignmentAS | AS |
Numbers
- Publication
- 20050090201
- Publication, DOCDB
- 2005090201
- Publication, EPODOC
- US2005090201
- Application
- 10921794
- Application, DOCDB
- 92179404
- Application, EPODOC
- US20040921794
Titles
- English
- System and method for a mobile AD HOC network suitable for aircraft
Classification
- CPC, 5
- H04B7/18506
- H04W40/20
- H04W40/30
- H04W40/32
- H04L45/00
- IPC, 8
- H04W84 18
- A62C99 00
- H04L12 56
- H04W40 20
- H04W40 24
- H04W40 30
- H04W40 32
- H04W84 20
- USPC, 2
- 455041200
- 455431000