Abstract:
A data transmission system (5) transmits data between a transmitter (10) and a receiver (20). Each data packet frame (130) is made up of three parts: a header (131), a packet identifier number (132), and subframes of data (133). Error codes are generated corresponding to each subframe of data (133). The transmitter (10) will then check the error code to determine which subframes of data (133) contain an error. If there are errors in the data packet (130), then the receiver (20) stores the error-free subframes in memory and does not send an acknowledgment packet (140). The master (10) will retransmit the same data packet until it receives an acknowledgment packet (140).

Description:
FIELD OF THE INVENTION 
     This invention pertains generally to communications, and more particularly, to packetized data transfers. 
     BACKGROUND OF THE INVENTION 
     Transmission of data packets mostly results in successful arrival of intact packets at a receiving system. However, as wireless communication becomes more pervasive, congestion and interference becomes more of a problem. Frequently, data packets are jumbled during propagation and reception may be difficult or impossible. When data packets do not arrive intact as transmitted, they must be retransmitted and these retransmissions impact the bandwidth of the communication channel. Certain transmission links become particularly susceptible to higher bit error rates such as where it is necessary to utilize minimum power to transmit signals. This is a particular problem in cellular satellite data communications where satellite transmission power must be minimized. Accordingly, what is needed is a system and method for reducing the number of errors in a communication system that has high bit error rates. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 shows a block diagram of a communication system according to a preferred embodiment of the invention; 
     FIG. 2 illustrates a format of a data packet frame according to a preferred embodiment of the invention; 
     FIG. 3 illustrates a format of an acknowledgment packet according to a preferred embodiment of the invention; 
     FIG. 4 shows a block diagram of a transmitter and/or receiver according to a preferred embodiment of the invention; 
     FIG. 5 shows a flow chart of a method for a transmitting data packets according to a preferred embodiment of the invention; and 
     FIG. 6 shows a flow chart of a method for receiving data packets according to a preferred embodiment of the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The invention provides a method and system for improving receipt of error-free data packets. FIG. 1 illustrates a block diagram of communication system 5 according to a preferred embodiment of the invention. In FIG. 1, communications between transmitter 10 and receiver 20 follow a traditional ping-pong approach with transmitter 10 transmitting data packets to receiver 20, and receiver 20 responding to transmitter 10 with an acknowledgment packet 140. Such communication continues with data packets being transmitted from transmitter 10 and acknowledgment packets of correct data being sent by receiver 20. Transmitter 10 and receiver 20 may be telephones, satellite telephones, satellites, base stations, computers, facsimile devices and any other communication device. 
     FIG. 2 illustrates a format of data packet frame 130 according to a preferred embodiment of the invention. As shown in FIG. 2, data packet frame 130 conveys digitized data from transmitter 10 to receiver 20 and comprises header 131, packet number 132 and a plurality of subframes of data 133. Header 131 may carry routing or synchronizing data depending on the specific configuration of the communication system. Packet number 132 uniquely identifies an individual data packet frame 130 for acknowledgment purposes and may serve other purposes such as enabling receiver 20 to reassemble received data packets in sequential order. Each of the multiple subframes of data 133 contains data. A checksum error code is generated for each of the plurality of subframes 133 and for the entire data packet frame 130. The checksum error code may be put at the end of the segment or interspersed within the segment. It does not matter where the checksum is put. What is important that each segment and collectively all segements of a frame are verified by an encoding process to be received correctly. There may be other fields that may be added to data packet frame 130. Moreover, the order of the fields is not important to this invention. 
     FIG. 3 illustrates a format of an acknowledgment packet 140 according to a preferred embodiment of the invention. Acknowledgment packet 140 is transmitted from receiver 20 to transmitter 10 and comprises header 141 and at least one packet number 142. Header 141 carries synchronization or routing data that is dependent upon the configuration of the communication system. Packet number 142 identifies the packet for which an acknowledgment is being sent. More fields may be added to acknowledgment packet 140, and the order of the fields is not important to this invention. 
     FIG. 4 shows a block diagram of transmitter 10 and/or receiver 20 according to a preferred embodiment of the invention. Discussion of FIG. 4 will first discuss the components of FIG. 4 in relation to transmitter 10, followed by a discussion of receiver 20. Transmitter 10 comprises antenna 161, transceiver 162, controller 163, and memory 164. Transceiver 162 of transmitter 10 transmits and retransmits data packets to receiver 20 and receives and evaluates an acknowledgment confirming the successful arrival of data packets. Controller 163 executes program controls to perform steps such as assembling data packets for transmission by transceiver 162 and for generating error detecting codes such as a checksum code over subframes and frames of data packets, for example. Controller 163 also receives and processes acknowledgments from transceiver 162 and manages the selection of packets for transmission. Memory 164 facilitates program execution for the described method and may also be shared with other applications being performed within transmitter 10 such as data packet buffering or storage. 
     Transceiver 162 of receiver 20 monitors data packets from transmitter 10 and transmits an acknowledgment confirming the successful arrival of a data packet and successful assembly of a data packet as described below. Controller 163 is operatively coupled to transceiver 162 for receiving data packets from transceiver 162, and for assembling an acknowledgment for delivery to transceiver 162. Memory 164 facilitates program execution for the described method and may also be shared with other applications being performed within receiver 20 such as data packet buffering or storage such as for storing subframes which have been received without error. 
     FIG. 5 shows a flowchart of method 400 for transmitting frames of data packets according to a preferred embodiment of the invention. Method 400 may be executed by transmitter 10. Method 400 starts in step 402 by waiting for a frame of data which is received internally. The frames of data are stored in memory for transmission. After a frame of data is received in step 402, method 400 subdivides in step 403 the frame of data into subframes. 
     The frame in the illustrative embodiment is broken into subframes of forty bits in length. In the preferred embodiment, each frame includes a plurality of subframes which preferably are ten subframes. However, as one skilled in the art would be aware, the size of each subframe as well as the number of subframes in a frame of packetized data may be varied. An error detecting code, for example, a checksum, is calculated over each subframe. The error detecting code may be put at the end of the segment or interspersed within the segment. It does not matter where the error detecting code is put. What is important that each segment and collectively all segements of a frame are verified by an encoding process to be received correctly. In addition, the subframe data may be encoded for transmission. 
     Method 400 generates in step 404 a header for the frame by generating a packet number to identify the frame. The header may also include the number of subframes in the frame. Step 404 also records in memory 164 of the transmitter 10 the data packet number and any other housekeeping matters for retrieval. Recording of data packet numbers provides a log of the data packets. In step 404, an error code which, in the preferred embodiment is a checksum, determined solely for the header and included in the header. 
     Method 400 (via transmitter 10) transmits in step 405 the frame of information which includes the header and subframes. After transmitting the frame, method 400 waits in step 406 for a predetermined period of time for an acknowledgment. Controller 163, for example, includes a counter which provides this timing function. In the event that an acknowledgment is not received before expiration of the time period, step 405 is again repeated by retransmitting the data packet frame. Only after an acknowledgment signal is received will the transceiver again return to step 402 to wait to receive internally another data packet frame before beginning the steps for transmitting the frame. 
     FIG. 6 shows a flowchart of method 500 for receiving data packets according to a preferred embodiment of the invention. The steps shown in FIG. 6 are performed by receiver 20. Method 500 begins in step 501 by waiting for receipt of a data packet. Next in step 502, method 500 checks the error codes of both the frame and header by calculating a checksum, for example, over the frame and comparing it to the checksum code which has been transmitted along with the frame. If an error is detected in step 502, method 500 returns to step 501 and no acknowledgment signal is sent to transmitter 10. The result is that transmitter 10 will retransmit the frame of information to receiver 20 after expiration of its timer. 
     If method 500 determines that the error code for the frame and header is correct in step 502, method 500 checks in step 503 for errors in each of the subframes. The error codes for the subframes, again, are checksums and the checksum is calculated over each subframe and compared with the checksum code transmitted as part of the data packet. If method 500 determines that any subframe checksums indicate that some sub-frames are error-free in step 503, method 500 returns to step 501 and does not provide an acknowledgment. Whenever method 500 returns to step 501, it awaits retransmission of a new frame of packet data. 
     If, however, method determines in step 503 that at least some of the subframes are error-free, then method 500 stores only the good or error-free subframes in memory 164 of receiver 20. Method 500 next checks in step 505 whether all the subframes stored in memory are designated as belonging to a particular frame number. If not, method 500 returns to step 501 and does not send an acknowledgment signal. If, however, method 500 determines in step 505 that all the subframes for the frame stored in memory 164 have been received and do not contain errors, then an error-free frame has been assembled in memory 164. Step 506 is performed in which an acknowledgment signal is sent to the transmitter 10. 
     It should be noted that the transmitter 10 includes in its controller 163 an acknowledgment timer and that timer is triggered upon transmitting a data packet. During the time determined by the acknowledgment timer, an acknowledgment signal must be returned to the transmitter 10 or the data packet will be resent. 
     Thus, in accordance with the principles of the invention and the illustrative embodiment as described, packetized data is sent in subframes and the data packet is resent until each subframe for a frame has been correctly received at least once. Further in accordance with the principles of the invention, a frame is reconstructed from subframes which do not contain errors. Thus, the same frame may be sent multiple times before an acknowledgment signal is provided. 
     In addition, although the foregoing steps were described with respect to a single data packet or frame being sent, it will be understood by those skilled in the art that multiple frames may be sent at a time and that acknowledgments may be provided for each of the frames such that only the frames containing errors are resent and not the entirety of all the multiple frames which were originally sent. 
     It will be understood by those skilled in the art that various variations and modifications may be made to the method and apparatus of the illustrative embodiment without departing from the spirit or scope of the invention. Accordingly, the invention is intended to embrace all such alterations, modifications, equivalents and variations as fall within the spirit and scope of the appended claims.