Abstract:
A modem is implemented as a virtual device driver with all processing handled by the host computer thus obviating the need for a stand alone processor for the modem. The modem virtual device driver ensures that the modem obtains adequate processing time regardless of other processes running on the host. By combining a port driver directly into the modem contact code, the need for a hardware UART with its attendant limitations is eliminated.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]    This application is related to application Ser. No. 08/774,648, filed Dec. 30, 1996, in the name of Richard P. Tarquini and entitled REAL TIME SERVICES IN BACKWARDLY COMPATIBLE OPERATING SYSTEMS, which is hereby incorporated by reference in its entirety. 
     
    
     
       TECHNICAL FIELD OF THE INVENTION  
         [0002]    The invention relates to communication systems, and, more particularly, to a modem which operates without a separate controller.  
         BACKGROUND OF THE INVENTION  
         [0003]    Computers which use a modem for communications are well-known in the art. As discussed more hereinafter, an exemplary computer of this type is shown in FIGS.  1 A- 1 C and its use with a modem for communications is shown in FIG. 1D.  
           [0004]    Communications between a computer and a modem typically occurs over a universal asynchronous receiver transmitter (UART) link. Modems can be connected to computers either by inserting a modem card into a bus connector for connecting to the computer bus directly (an internal modem) or modems can be connected to the computer over a communications port, when the modem is external. Internal and external modems of the prior art typically have an onboard processor or controller for managing the data protocols and transfers. The existence of an onboard processor is necessary, in the prior art, in order to ensure that the modem functions get adequate processing time. The need for a dedicated processor is particularly acute in a multi-tasking computer system in which a plurality of simultaneous tasks may be running. If those tasks fail to relinquish the processor to a modem application in a timely fashion, data characters will be lost and a data transfer can be aborted.  
         THE PROBLEMS  
         [0005]    The provision of a separate processor or controller to run a modem, merely to ensure adequate processing power for modem tasks, is expensive and provides redundant capabilities to that which already exist on a computer hosting the modem. The host has its own processor, bus and system clock. Providing these redundantly in a modem provides additional costs which would be obviated if a modem could utilize the host processor capabilities.  
           [0006]    Nevertheless, in the past, it has not been feasible to utilize the host processor and bus to do modem processing given the stringent timing requirements needed to ensure reliable data communications over the modem and given the presence of other processes which compete for processor time.  
         SUMMARY OF THE INVENTION  
         [0007]    The invention provides a controllerless modem which utilizes the services of the host processor and ensures reliable data communications even in the presence of competing processes. A controllerless modem in accordance with the invention is guaranteed adequate processing time from the host processor to service communications needs. Further, the controllerless modem of the invention eliminates certain hardware which was necessary to coordinate between the host and the modem in the prior art.  
           [0008]    The invention relates to apparatus, methods, systems and computer program products for providing modem functionality as a virtual device driver running on a host processor rather than as a standalone modem having its own processor.  
           [0009]    Still other objects and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein only the preferred embodiment of the invention is shown and described, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawing and description are to be regarded as illustrative in nature, and not as restrictive. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]    [0010]FIG. 1A is an illustration of a computer suitable for use in carrying out the invention.  
         [0011]    [0011]FIG. 1B is a block diagram of an exemplary bus architecture suitable for carrying out the invention.  
         [0012]    [0012]FIG. 1C is an illustration of an exemplary memory medium suitable for storing program information and data.  
         [0013]    [0013]FIG. 1D is a block diagram of computer-to-computer communications.  
         [0014]    [0014]FIG. 2 is a block diagram showing exemplary software and hardware relationships between a computer (DTE) and a modem (DCE) of the prior art.  
         [0015]    [0015]FIG. 3 is a block diagram of a controllerless modem (CLM) in accordance with the invention.  
         [0016]    [0016]FIG. 4 is a block diagram showing the implementation of a controllerless modem in accordance with the invention in a Windows 95™ operating system environment.  
         [0017]    [0017]FIG. 5 is a diagram showing software layers of a controllerless modem port driver V×D and its hardware interface.  
         [0018]    [0018]FIG. 6 is a block diagram of an exemplary implementation of modem codes shown in FIGS. 2 and 3.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0019]    [0019]FIG. 1A is an illustration of an exemplary computer of a type suitable for use in carrying out the invention. FIG. 1A illustrates a computer system having a processor unit  100 , a display unit  120 , a keyboard  130 , and an input/output device, such as a mouse  140 . One or more disk drives  110 A and  110 B may be provided in the processor unit  100  to facilitate the storage and retrieval of information. One of these may be a hard drive (not shown) or drives utilizing removable media such as floppy drives or CD ROM drives.  
         [0020]    [0020]FIG. 1B is a block diagram of an exemplary computer bus architecture of a type suitable for carrying out the invention. A bus  150  connects a central processing unit  155  to other elements of a computer processor system  100 . An interface  145  connects external input/output devices such as keyboard  130  and mouse  140 . A display interface  125  is also connected to the bus and interfaces the computer display  120  to the central processing unit and to other devices. In this exemplary embodiment, read only memory (ROM)  160  and random access memory (RAM)  165  provides storage of program and data information utilized by the CPU  155 . A disk controller  170  permits information to be read from and written to mass storage such as optical memory  171 , hard drive  172  and floppy drive  173 . A communications port  185  provides a communications interface between external devices and the computer bus  150 . An internal modem  180  connects directly to the bus  150  of the computer. The communications port may optionally be utilized to connect to an external modem  190  if an external modem is utilized either in lieu of or as supplemental to internal modem  180 .  
         [0021]    [0021]FIG. 1C is an illustration of an exemplary memory medium suitable for storing program and data information in accordance with the invention. In the example shown, program and data information are stored on a floppy disk  195 .  
         [0022]    [0022]FIG. 1D is a block diagram of computer-to-computer communications. Historically, a terminal or computer driving a modem is referred to as data terminal equipment (DTE) such as DTE  195  shown in FIG. 1D. The data terminal equipment interfaces with data communications equipment (DCE)  196  and DCE  196  connects with DCE  196 ′ across a communications link. The DCE at the other end ( 196 ′) connects with its own receiving host DTE  195 ′. DCEs are typically modems and the interface specifications which describe how a computer interacts with a modem are standardized and well-known. Similarly, the way that two DCEs interact when passing data is also standardized and known. The communications may occur by direct connection or over a network.  
         [0023]    [0023]FIG. 2 is a block diagram showing exemplary software and hardware relationships between a computer (DTE) and a modem (DCE) of the prior art. On the computer side, an application program  200 , such as terminal software used for controlling communications, runs over an operating system layer  210 . The operating system provides a consistent interface to certain lower level services as is known in the art. In this case, the operating system layer  210  interfaces a port driver  215  which controls a universal asynchronous receiver transmitter (UART)  220 . When the computer is connected to a modem, either an internal or an external modem, the UART from the computer  220  connects to a UART  230  in the modem. That way, data and instructions are sent from the computer to the modem. Data and instructions from the UART are processed by a block of modem code  235  which may vary from manufacturer to manufacturer of modems. The modem code controls the modem hardware  240  to send and receive data to and from the modem communications line. Although not expressly shown in FIG. 2, modems, be they internal or external, typically have their own processor, bus and supporting hardware for running the modem code  235  and for carrying out the other functions required in the modem.  
         [0024]    [0024]FIG. 3 is a block diagram of a controllerless modem (CLM) in accordance with the invention. Application  300 , operating system layer  310  and hardware  340  corresponds roughly to application layer  200 , operating system layer  210  and hardware  240  of FIG. 2. In FIG. 3, however, a CLM port driver  350  which constitutes a virtual device driver (V×D), replaces the corresponding functionality  250  shown in FIG. 2. Note that the necessity for UART-to-UART communications is eliminated. The CLM port driver  350  runs on the host and therefore does not require its own dedicated processor bus structure and other supporting hardware.  
         [0025]    The CLM port driver includes a CLM port driver interface  315  which manages data and instructions to and from the operating system layer  310 . In cases where it is desirable to keep the modem code  335  the same as modem code  235  utilized in modems having a dedicated processor, a software UART emulation layer may be placed between the CLM port driver interface  315  and the modem code  335  and utilized to give the appearance that the modem code is talking to a UART as it did in the prior art. It is of course preferable to simply write the CLM port driver interface to directly control the modem code  335  without the necessity of emulating a UART for interface purposes.  
         [0026]    The invention will be described with reference to a modern operating system, in this case, with respect to the Windows 95™ operating system. Windows 95™ is a Trademark of Microsoft Corporation. It is apparent, however, that the invention has application to other operating systems generally.  
         [0027]    In a Windows 95™ environment, the CLM port driver interface  315  communicates with the VCOMM layer of Windows 95™ to provide hardware—specific modem functions. Most communications API calls made by applications will be translated into VCOMM calls, which are then translated into port driver calls. The port driver maintains setup information, configures and interfaces with the operating system layer for data transfer, handles aspects of flow control and issues notifications to the application of events and the like. It also maintains the settings for baud rate, flow control, parity, data bits, stop bits, etc. It also keeps track of the state of DTR, DSR, RLSD, and ring lines. Buffers are set aside and are used for transferring data between the modem and the computer by passing data into and out of the buffers.  
         [0028]    [0028]FIG. 4 is a block diagram showing implementation of a controllerless modem in accordance with the invention in a Windows 95™ operating system environment. The privileges with which certain modules run in a Windows 95™ environment are determined by the ring level. Ring  0  is the most privileged layer whereas ring  3  is less privileged. Certain windows applications  400  will interface to communication services over a telephone application programming interface (TAPI)  405  and a unimodem  410  layer. Sixteen bit applications such as those found in Windows 3.X ( 415 ) interface through a WIN  16  layer  420  and a com.drv interface  425 . Windows  32  bit applications ( 430 ) interface directly. The interfacing of legacy DOS applications requires a treatment different from that described in accordance with this invention and will not be described herein. Each of the applications  400 ,  415  and  430  acquire communication services through a VCOMM V×D ( 440 ) of the Windows 95™ operating system. The VCOMM V×D of the Windows 95™ operating system then interfaces directly with the controllerless modem port driver V×D  450  in accordance with the invention as described in conjunction with FIG. 5. The controllerless modem port driver V×D then drives the hardware  460  for modem communications. Note that the VCOMM V×D and the controllerless modem port driver V×D  450  operate at ring  0  level.  
         [0029]    [0029]FIG. 5 is a diagram showing software layers of a controllerless modem port driver V×D and its hardware interface. These include the Windows interface layer, an optional UART layer, the module layer, the module I/O layer, the interrupt layer, and the physical layer. The port driver interface  510  and the UART emulation  520  were discussed in conjunction with FIG. 4 above.  
         [0030]    Plug and play makes it easy for computer users to add new hardware to their systems. Plug and play prevents device conflicts, allocates resources, and enables the enumeration of devices on an automatic basis. The controllerless modem presents a PCI based interface which is plug and play compatible with Windows 95™. All configuration management in the plug and play framework is controlled by the configuration manager of the Windows 95™ operating system.  
         [0031]    The real time services (RTS) module  512  with the Windows interface layer is utilized to ensure that the CLM port driver V×D gets adequate processing time to service its needs. RTS utilizes services of the host to set timers and provide time out responses to the CLM port driver V×D. The RTS  512  is described in more detail in the co-pending application referred to above. In a preferred embodiment, real time services provides processing time to the V×D in a way which is controllable as to the frequency of the processor allocation and as to its duration. Timer  551  which provides timing for the interrupt layer can either be implemented independently or utilize the services of RTS for its functionality. The fax module  530 , V.42 module  531 , and VCE module  532  provide the various protocol services for the handling of fax, V.42 data and voice services provided by the modem. The ACU module  533  functions somewhat as a operating system for the modem. The DTE module  534  is responsible for break handling and terminal escape sequence processing.  
         [0032]    The fax I/O  540 , V.42 I/O  541  and VCE I/O  542  provide an input/output interface to the data transmit receive module  550 . The modem task  543  implements DCE functionality. The data transmit/receive module  550  of the interrupt layer passes data to the PCI bus I/O line driver  560  for transmission over the communications line. The functionality allocated to hardware and software begins to blur in the physical layer and may be implementation dependent. In one implementation, the PCI I/O line driver  560  signals data TX/RX  550  of the interrupt layer that data has been received and requires processing. The data TX/RX module  550  will then signal an interrupt so that the incoming data can be serviced. Outgoing data, may be typically loaded into the PCI&#39;s I/O line driver  560  for transmission when line conditions permit.  
         [0033]    What is significant, is that the DCE hardware no longer requires the dedicated processor or controller and no longer requires UARTs in order to operate. Depending upon the amount of control required in the hardware of a particular implementation, that control can either be run on the host or can be implemented as a relatively simple finite state machine without the necessity of a separate dedicated processor.  
         [0034]    [0034]FIG. 6 is a block diagram of an exemplary implementation of a modem code shown in FIGS. 2 and 3. For simplification purposes, only fax and V.42 data modes are illustrated in FIG. 6. Voice handling is not shown. In the example shown in FIG. 6, three separate classes of events are processed in parallel channels. The DTE information  600  received from the software UART layer  320  can include, in the example shown, either control functions which will be routed to the ACU unit or fax related information and data transmission information and data.  
         [0035]    ACU type events are routed over the ACU I/O module  610  to the ACU processing module. The processing module handles control the operation of the modem. Incoming fax information is routed to the fax module  640  where, in the example shown, a class  1  fax functionality is implemented and the fax I/O data is routed to and from the DCE  695 . The DTE module  660  interfaces incoming data to the data module  670  where error detection and correction are performed using, for example, LAPM or MNP. In addition, V.42 control is implemented before being passed the DCE I/O module  680  and to the DCE transmit and receive module  695 .  
         [0036]    When implementing previously developed modem code in a controllerless modem environment, the code should be reviewed to remove infinite loops and long polling delays. Mechanisms can be put in place to limit the amount of time that the code may delay and to limit the number of loops that may execute consecutively without status checking. If long loops exist to wait for data to be input from that PC or line, for example, special background processing time could be given to the corresponding code modules to allow the data to “catch up” when necessary. Effort should be made to prevent the fax code from locking up the computers processor for an extended period of time. The following is a list of items that should be considered in implementation:  
         [0037]    1. It may be late in configuring the line but HDLC packets are mandatorily transmitted upto three times so latency of three to five seconds is acceptable. This could become an issue if delay is over six or nine seconds. A failure will occur.  
         [0038]    2. Under Windows, if TCF is missed, fax will now send FTT and retrain down. Wait for DCS again.  
         [0039]    3. Remove “infinite while” loops that wait for events.  
         [0040]    4. Check for fax and voice timer resolutions of less than 10 ms.  
         [0041]    5. One should check for the DOS full screen effects on timers.  
         [0042]    6. One should check whether disk access steals too much time.  
         [0043]    There has thus been described a controllerless modem which reduces hardware requirements for modems while ensuring adequate to processing time to the modem so that communication functions are not degraded. In addition, the invention overcomes the problems of the prior art and provides a lower cost solution to communications requirements.  
         [0044]    In this disclosure, there is shown and described only the preferred embodiment of the invention, but, as aforementioned, it is to be understood that the invention is capable of use in various other combinations and environments and is capable of changes or modifications within the scope of the inventive concept as expressed herein.