Abstract:
A dynamic message controller is provided. The message provider includes a plurality of message descriptors and a message parser. Each message descriptor includes a unique pattern for a message that corresponds to a specific type of message received by the message controller. The message parser module is configured to match incoming messages with a select one of the message descriptors based on matched message patterns. The message parser module is further configured to load the matched message descriptor and parse an associated incoming message based on the matched message descriptor.

Description:
BACKGROUND 
     A Global Data Center (GDC) acts as a communications hub to facilitate thousands of air-to-ground and ground-to-air messages daily utilizing a variety of VHF and satellite datalink communications networks. Accessed directly from the aircraft&#39;s Flight Management System (FMS), convenient datalink messaging enables flight crews to keep in touch with the ground during all phases of flight. One issue that arises in the above system is that the message types used by aircrafts are prone to frequent changes. Hence, every time a new requirement for handling a new kind of message type comes in, the GDC has to figure out how to process the message. Moreover, different aircraft have different modules that use different message types (or different formats). For example, a first aircraft may send a position report to the GDC that contained the aircraft&#39;s latitude and longitude in a first format. A second aircraft of a different type would send its position data using a different format. Efforts to resolve this issue involved using multiple processing modules, each adapted to handle a specific message types with their specific logic arrangement. However, due to the frequent changes and additions to message types, occurrence regression is high and the process becomes inefficient. 
     For the reasons stated above and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a method for effectively and efficiently handling different types of messages in a GDC system. 
     SUMMARY OF INVENTION 
     The above-mentioned problems of current systems are addressed by embodiments of the present invention and will be understood by reading and studying the following specification. The following summary is made by way of example and not by way of limitation. It is merely provided to aid the reader in understanding some of the aspects of the invention. 
     In one embodiment, a message controller is provided. The message controller includes a plurality of message descriptors and a message parser. Each message descriptor includes a unique pattern for a message that corresponds to a specific type of message received by the message controller. The message parser module is configured to match incoming messages with a select one of the message descriptors based on matched message patterns. The message parser module is further configured to load the matched message descriptor and parse an associated incoming message based on the matched message descriptor. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention can be more easily understood and further advantages and uses thereof more readily apparent, when considered in view of the detailed description and the following figures in which: 
         FIG. 1  is an illustration of a flight communication system of one embodiment of the present invention; 
         FIG. 2  is a block diagram of a message controller of one embodiment of the present invention; and 
         FIG. 3  is a message controller flow diagram of one embodiment of present invention. 
     
    
    
     In accordance with common practice, the various described features are not drawn to scale but are drawn to emphasize specific features relevant to the present invention. Reference characters denote like elements throughout Figures and text. 
     DETAILED DESCRIPTION 
     In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the inventions may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical and electrical changes may be made without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the claims and equivalents thereof. 
     Embodiments of the present invention use a Dynamically Loadable Message Descriptor (DLMD) that enables efficient and flexible message parsing. DLMD facilitates easy extensibility (plug&#39;n&#39;play) of application functionality. This is achieved because of the loosely coupled behavior of the design model. DLMD is a unique combination of extendable markup language (XML) and regular expressions. In particular, the XML is used to achieve the modular capability while the regular expressions are used for pattern matching. 
     As stated above, the DLMD is a design model that uses regular expression and XML to parse messages based on rules mentioned in the message descriptor. Hence the implementation logic is separated from the message specification. Through this separation, message contents can be dynamically established with any updated specification simply by loading the appropriate message descriptor. Referring to  FIG. 1 , a flight communication system  100  of one embodiment is illustrated. As illustrated, this embodiment includes aircraft  102 - 1  and  102 - 2 . Each aircraft includes a flight management system (FMS)  103 - 1  and  103 - 2  to communicate with a global data center (GDC)  106 . In this example, the FMS  103 - 1  of the first aircraft  102 - 1  is in direct communication with the GDC  106  and the FMS  103 - 2  of the second aircraft  102 - 2  is in communication with the GDC  106  via satellite  104 . The GDC  106  includes a message controller  200  that processes messages using a message controller with a dynamically loadable message descriptor. 
     There are two major components to the message controller  200 , a message description file  202  (1-N) and a message parser module  206 . One embodiment of the message controller  200  is illustrated in  FIG. 2 . As illustrated, the message controller  200  further comprises an application  204  which includes the input messages from aircraft. The message description file  202  is an XML based file which contains the pattern of the message. This message descriptor  202  is dynamically loaded by the parser module  206  depending on the type of message. The message parser module  206  is where the message parsing logic ( 210 ) is implemented and is constant for any kind of message because of this design model. With the dynamic loadable message descriptor  202 , the constant change of message rules can be tackled easily by just modifying the descriptor  202  without interfering with the core logic  210 . By separating the logic from the implementation, embodiments ensure that only the descriptor  202  is updated with any message rule changes. The implementation is updated implicitly. Also if there is a new message type, a new descriptor  202  with the specific rules can be introduced. 
     The message description file  202  is the core to this concept. This is a XML based file containing the pattern to be matched with the message. The descriptor file  202  also specifies the information required for tagging the pattern matches. The descriptor  202  is dynamically selected and loaded depending on the message type. An output of the massage parser module  206  will be a XML file with the parsed values embedded in the XML via the XMLO/P  212 . The message parser module  206  is run by the XML engine  208 . Examples of the input message, message-descriptor and the output xml are given below. 
     Input Message: 
     
       
         
               
               
             
           
               
                   
               
             
             
               
                   
                 {SOH}QU HDQGLXH{CR}{LF} 
               
               
                   
                 .DDLXCXA 170000{CR}{LF} 
               
               
                   
                 {STX}M44{CR}{LF} 
               
               
                   
                 FI GS0/AN VV377{CR}{LF} 
               
               
                   
                 DT DDL XXD 170000 M52A{CR}{LF} 
               
               
                   
                 -POS02,N38436W093336,GRD,KADW,KSZL,0617,0000,0000, 
               
               
                   
                 16.4{CR}{LF} 
               
               
                   
                 {ETX} 
               
               
                   
               
             
          
         
       
     
     Message Descriptor: 
     
       
         
               
             
           
               
                   
               
             
             
               
                 -&lt;xml&gt; 
               
               
                  -&lt;line num=“1”&gt; 
               
               
                   &lt;regex&gt;- 
               
               
                   \s\s+(.{3})(.{2}),(.{6})(.{7}),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?)\ 
               
               
                   x03 
               
               
                   &lt;/regex&gt; 
               
               
                   -&lt;values&gt; 
               
               
                    &lt;var name=“imi” value=“$1” /&gt; 
               
               
                    &lt;var name=“format-version” value=“$2” /&gt; 
               
               
                    &lt;var name=“position” value=“$3.$4” /&gt; 
               
               
                    &lt;var name=“flight-level” value=“$5” /&gt; 
               
               
                    &lt;var name=“departure-airport” value=“$6” /&gt; 
               
               
                    &lt;var name=“destination-airport” value=“$7” /&gt; 
               
               
                    &lt;var name=“date” value=“$8” /&gt; 
               
               
                    &lt;var name=“timestamp” value=“$9” /&gt; 
               
               
                    &lt;var name=“eta” value=“$10” /&gt; 
               
               
                    &lt;var name=“fuel-on-board” value=“$11” /&gt; 
               
               
                   &lt;/values&gt; 
               
               
                  &lt;/line&gt; 
               
               
                 &lt;/xml&gt; 
               
               
                   
               
             
          
         
       
     
     Output xml: 
     
       
         
               
               
             
           
               
                   
               
             
             
               
                   
                 &lt;?xml version=“1.0” ?&gt; 
               
               
                   
                 -&lt;xml&gt; 
               
               
                   
                  -&lt;message&gt; 
               
               
                   
                  &lt;message-priority&gt;QU&lt;/message-priority&gt; 
               
               
                   
                  &lt;destination-adns&gt;HDQGLXH&lt;/destination-adns&gt; 
               
               
                   
                  &lt;supplimentary-adns-list /&gt; 
               
               
                   
                  &lt;source-adns&gt;DDLXCXA&lt;/source-adns&gt; 
               
               
                   
                  &lt;timestamp&gt;170000&lt;/timestamp&gt; 
               
               
                   
                  &lt;smi&gt;M44&lt;/smi&gt; 
               
               
                   
                  &lt;flight-identifier&gt;GS0&lt;/flight-identifier&gt; 
               
               
                   
                  &lt;tail-number&gt;VV377&lt;/tail-number&gt; 
               
               
                   
                  &lt;dsp-id&gt;DDL&lt;/dsp-id&gt; 
               
               
                   
                  &lt;ground-station&gt;XXD&lt;/ground-station&gt; 
               
               
                   
                  &lt;msn&gt;M52A&lt;/msn&gt; 
               
               
                   
                  &lt;equipment-type&gt;HMFA02&lt;/equipment-type&gt; 
               
               
                   
                   -&lt;free_text-list&gt; 
               
               
                   
                    &lt;free-text id=“imi”&gt;POS&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“format-version”&gt;02&lt;/free-text 
               
               
                   
                    &lt;free-text id=“position”&gt;N38436W093336&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“flight-level”&gt;GRD&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“departure-airport”&gt;KADW&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“destination-airport”&gt;KSZL&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“date”&gt;0617&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“timestamp”&gt;0000&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“eta”&gt;0000&lt;/free-text&gt; 
               
               
                   
                    &lt;free-text id=“fuel-on-board”&gt;16.4&lt;/free-text&gt; 
               
               
                   
                    &lt;/free_text-list&gt; 
               
               
                   
                   &lt;/message&gt; 
               
               
                   
                   &lt;application-data /&gt; 
               
               
                   
                  &lt;/xml&gt; 
               
               
                   
               
             
          
         
       
     
     The &lt;regex&gt; tag in the example descriptor contains the pattern that needs to be applied on the message and the &lt;values&gt; tag contains the variable names and the values to be parsed and stored. This output XML  212  acts as the input to the application  204  processing the messages. The output XML file  212  can also be stored in the database  214  for further usage or can be fed to a graph generator module  216  to draw graphs using the values from the output XML  212 . 
     Referring to  FIG. 3  a message controller flow diagram  300  is illustrated. As illustrated, the process starts in this embodiment when a message is received at the GDC ( 302 ). As discussed above, the message may come directly from a FMS of an aircraft or via satellite. One a message as been received, a pattern in the message (that indicates the type of message) is compared with a message descriptor file ( 304 ). If there is not a match  306 , it is determined if all of the message descriptors have been reviewed for a match ( 308 ). If they all have not been reviewed ( 308 ), the process continues at ( 304 ). If they have all been reviewed at ( 308 ) and no match has been found at ( 306 ), a new message descriptor is needed ( 316 ). Once a match has been found ( 306 ), the matched message descriptor is loaded in the message parser module ( 310 ). The message parser logic is then implemented on the received message ( 312 ). An output file is then output with parsed values embedded ( 314 ). As described above, the output is provided to the application function for processing. The output could also be stored in a database for further usage or feed to a graphic module. 
     The methods and techniques used by the components of the message controller  200  as described above can be implemented in digital electronic circuitry, or with a programmable processor (for example, a special-purpose processor or a general-purpose processor such as a computer) firmware, software, or in combinations of them. Apparatus embodying these techniques may include appropriate input and output devices, a programmable processor, and a storage medium tangibly embodying program instructions for execution by the programmable processor. A process embodying these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may advantageously be implemented in one or more programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and DVD disks. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASICs). 
     Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiment shown. For example, although the dynamically loadable message descriptor is explained in relation to aircraft communication other types of communication systems could implement embodiments of the invention. Hence, this application is intended to cover any adaptations or variations of the present invention. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.