BACKGROUND OF INVENTION
1. Field of Invention
The present invention relates to monitoring, configuration or installation of hardware on a computer system.
2. Discussion of the Background
In general, computer systems include hardware and software. Hardware is the actual physical computing machinery, while software is the list of instructions to operate the hardware. Typically, computer systems will include a variety of hardwaredevices that interface with one another. When hardware devices interface with one another, it is necessary for the software which operates the hardware to be configured to allow communication between the hardware devices, so that the hardware devicescan operate cooperatively. It is also desirable for hardware devices to be monitored. For the purposes of discussion, a hardware device that is configuring or monitoring will be referred to as a controlling device. Likewise, for the purposes ofdiscussion, the hardware device that is being configured to operate cooperatively or being monitored by the controlling device will be referred to as an interfacing device.
When hardware devices initially interface with one another, it is common for the software that operates the devices to remain unconfigured to allow cooperative operation. Accordingly, a significant part of installing computer hardware devicescollectively configure the software. In some arrangements, a user must configure the computer hardware manually by opening the computer hardware and physically setting jumpers or dip switches. In still some further arrangements, the installationprocess includes a user loading software from a floppy disk to configure the hardware devices. There have also been attempts for computer hardware devices to include software that can automatically configures hardware devices. There are, however, someapparent disadvantages and deficiencies with respect to the above-identified approaches.
One disadvantage is that automatic hardware installation software is limiting in its ability to adapt to new devices or to new manufacturers that were not specifically programmed into the software. In the prior art, if the controlling devicedoes not recognize the specific model of the interfacing device, automatic configuration is not possible. In other words if the controlling device is not programmed to anticipate the model of an interfacing device, then automatic hardware configurationwill not be successful. In such a circumstance, a user will have to manually install the configuration communication means to the hardware devices.
Another disadvantage of the prior art is that the controlling device is unable to partially configure hardware devices if the particular model of the interfacing device cannot be identified. In other words, if a controlling device cannotidentify a specific model of the interfacing device, then the interfacing device will not be configured to function cooperatively. This results in the unconfigured interfacing device being inoperable and essentially useless.
It is desirable for hardware devices located on a network to be monitored for maintenance, usage, or other purposes. However, it has been difficult for a controlling device to communicate with various interfacing devices on a network given thedifferent communication means between manufacturers and models of interfacing devices. These disadvantages prevent network administrators from obtaining crucial information about the performance and efficiency of interfacing devices on a network.
SUMMARY OF THE INVENTION
The present invention relates to a method and system for monitoring at least one network connected device (monitored device) using a controller.
A method and apparatus for providing multiple vendor support to remotely monitored devices is described. The method includes querying a monitored device to obtain at least one of manufacturer, model, and a unique identifier of the monitoreddevice, using a hierarchical technique to determine if the monitoring system is configured to interface with the monitored device using information stored in a first database; and determining if the monitored device is supported by the monitoring systemusing information stored in a second database. The hierarchical technique includes first determining if the manufacturer of the monitored device is supported by the monitoring system, and then subsequently determining if the model of the device issupported by the monitoring system.
In exemplary embodiments of the present invention, a plurality of databases are used to configure devices with systems. These embodiments are advantageous, as valuable computer resources are used during the initialization of the devices with asystem while preserving the computer resources during system operation. For example, a system may utilize two separate databases when a device is being configured. The first database (i.e. a System Configuration Database) stores device information fordevices that have already been configured to the system and wherein operational status information of the devices is stored as the devices are being monitored by the system. Such device information may include the manufacturer name, and model name whileoperational status information may include the page count and toner level.
The device information stored in the first database is utilized during the initialization of the system while the status information stored in the first database is accumulated during the system operation. The first database, therefore, will belarge since it will contain status information. Consumption of computer resources is, however, minor since the device information is used during initialization while status information is only added when the system is in operation.
In an exemplary embodiment of the present invention, the system of the present invention also utilizes a second database (i.e. a System Support Database). This second database may be relatively large as it would include data pertaining to aplurality of devices. When a device is initialized with a system, and the system is not yet configured to interface with the device, then the first database (i.e. System Configuration Database) can be updated using the information from the seconddatabase (i.e. System Support Database) so that the device can interface with the system. Due to the large amount of information stored, querying the second database is not only time consuming but also uses a large amount of valuable computer resources. Once, the critical information (i.e. protocol) relating the device is updated in the first database with information from the second database, only the first database is utilized.
In one aspect, the present invention provides in a network based system having a monitoring system and a plurality of monitored devices communicatively coupled via a network, the monitoring system being communicatively coupled to first and seconddatabases, a method of determining if a monitored device is supported by the monitoring system comprises querying the monitored device to obtain at least one of manufacturer, model, and a unique identifier of the monitored device; determining if themonitoring system is configured to interface with the monitored device using information stored in said first database; and determining if the monitored device is supported by the monitoring system using information stored in said second database.
The step of determining if the monitoring system is configured to interface with the monitored device is performed by querying the first database with at least one of manufacturer, model, and a unique identifier obtained from the monitoreddevice. The step of determining if the monitored device is supported by the monitoring system includes determining if a manufacturer of the monitored device is supported by the monitoring system, and if true; determining if a model of the monitoreddevice is supported by the monitoring system; and updating the first database with manufacturer and model information if the monitored device is supported by the monitoring system using information stored in the second database.
The above method further includes obtaining at least one of a serial number or unique identifier from the monitored device if the manufacturer is supported by the monitoring system; obtaining a MAC address of the monitored device if themanufacturer is not supported by the monitoring system; and assigning a random number to the unique identifier if the MAC address cannot be obtained from the monitored device. The method also includes listing the monitored device as generic if themanufacturer of the monitored device is not supported by the monitoring system; obtaining, from the monitored device, information that is common to the plurality of monitored devices, and obtaining information that is common to a plurality of monitoreddevices from the general manufacturer.
The method also includes obtaining information unique to the monitored device if the model of the monitored device is supported by the monitoring system; and obtaining information that is common to monitored devices manufactured by the generalmanufacturer. The first database is a system configuration database which comprises information for enabling communication between the monitoring system and the monitored device; and status information related to the monitored device, the statusinformation being added after initialization of the monitoring system.
The step of determining if the monitoring system is configured to interface with the monitored device comprises querying the monitored device with data stored in the first database. The first database is a system configuration database andcomprises information for enabling communication between the monitoring system and the monitored device; and status information related to the monitored device, the status information being added after initialization of the monitoring system formonitoring the monitored device. The second database is a system support database and comprises information about various manufacturers and device models supported by the monitoring system.
In another aspect, the present invention provides in a network based system having a plurality of monitored devices communicatively coupled to a network, an apparatus for monitoring at least one monitored device among the plurality of monitoreddevices, comprising: a monitoring system communicatively coupled to the network; first and second databases communicatively coupled to the monitoring system; means for querying the monitored device to obtain at least one of manufacturer, model, and aunique identifier of the monitored device; means for determining if the monitoring system is configured to interface with the monitored device using information stored in said first database; and means for determining if the monitored device is supportedby the monitoring system using information stored in said second database.
In a yet another aspect, the present invention provides a network based system having a monitoring system and a plurality of monitored devices communicatively coupled via a network, the monitoring system being communicatively coupled to first andsecond databases, a computer program product within a computer useable medium, comprising instructions for querying the monitored device to obtain at least one of manufacturer, model, and a unique identifier of the monitored device; instructions fordetermining if the monitoring system is configured to interface with the monitored device using information stored in said first database; and instructions for determining if the monitored device is supported by the monitoring system using informationstored in said second database.
In an additional aspect, the present invention provides in a network based system having a monitored device among a plurality of devices connected to a network, the system comprising first and second databases communicatively coupled to thecontroller, said second database storing information for determining if the monitored device is supported by the controller; a controller for monitoring the monitored device, said controller having logic for querying the monitored device to obtain atleast one of manufacturer, model, and a unique identifier of the monitored device; using a hierarchical method to determine if the monitoring system is configured to interface with the monitored device using information stored in the first database; anddetermining if the monitored device is supported by the monitoring system using information stored in the second database; and wherein configuration information in said first database is updated with information stored in the second database for enablingthe controller to interface with the monitored device, thereby allowing flexibility in updating devices monitored by the monitoring system among the plurality of devices.
An advantage of the present invention includes the ease with which to change the devices that the system supports by modifying the database rather than the system.
BRIEF DESCRIPTION OF THE DRAWINGS
A more complete appreciation of the present invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference of the following detailed description when considered in connectionwith the accompanying drawings.
FIG. 1 is a diagram illustrating the network relationship of device 2 and system 8, in an exemplary embodiment of the present invention.
FIG. 2 is an exemplary flowchart illustrating the steps involved to determine if system 8 is configured to interface with device 2;
FIG. 3 is an exemplary flow chart illustrating the steps involved to determine if system 8 is configured to interface with device 2 using the System Configuration Database 6;
FIG. 4 is an exemplary illustration of a hierarchical approach to determine if device 2 is supported by system 8;
FIG. 5 illustrates software objects in an exemplary embodiment of the present invention;
FIG. 6 illustrates an exemplary sequence diagram when the system is initialized to obtain information about object identifiers used to identify the manufacturer, model, and unique identifier, and to obtain information about the manufacturers andmodels supported by the system;
FIG. 7 illustrates an exemplary sequence diagram for creating device objects to represent the monitored devices during initialization;
FIG. 8 shows the sequence diagram for executing the setAgent( ) 122 function of VendorModel 118;
FIG. 9 is an exemplary flowchart for the setAgent( ) function of VendorModel;
FIG. 10 exemplifies a sequence diagram when the system obtains information used to obtain the status information for the specific manufacturer and model of the monitored devices;
FIG. 11 shows the flowchart for the createDevice( ) function of DeviceFactory;
FIG. 12 shows the sequence diagram for executing the monitorStatus( ) function;
FIG. 13 shows the sequence diagram for executing the getStatus( ) 214 function of Device 210;
FIG. 14 shows the tables of a database having information about the manufacturers and models supported by the system;
FIG. 15 shows an example of the contents in the tables of the database as described in FIG. 14; and
FIG. 16 shows the class diagram for the ODBC2 package.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 is a diagram illustrating the network relationship of device 2 and system 8. Device 2 interfaces with system 8 through network 4. System 8 is coupled to System Configuration Database (SCD) 6 and System Support Database (SSD) 10. Network4 can be any type of communication structure that allows device 2 and system 8 to exchange data. For example, network 4 could be either a Wide Area Network (WAN), Local Area Network (LAN), or a simple cable physically connecting the device 2 and system8. It will be appreciated that the present invention is not limiting of the type of networks, and that other networks may be used to enable communication between device 2 and system 8.
System Configuration Database 6 includes information of first and second types. The first type of information is configuration or device information, such as, for example, manufacturer name, model name, IP address, company name, contact person'sname, and contact person's e-mail address to name a few. The configuration information is used only during the initialization of system 8 in order to determine which devices need to be monitored. The System Configuration Database 6, however, does notinclude information about what protocol to use to communicate with the device 2. The SCD 6, however, includes information necessary for communication, such as for example, the IP address. Therefore, SCD 6 contains information that is used to determineif system 8 is configured to interface with device 2. The second type of information stored in SCD 6 is status information. Examples of status information include page count, error status, and toner level. Status information is added to the database(SCD 6) after the initialization of the system 8 when the system 8 is monitoring devices connected to the network 4. The System Configuration Database (SCD 6) is not directly dependent on the System Support Database (SSD 10).
The SSD 10 includes information about manufacturers and models that are supported by the system 8. Though this system can support all devices irrespective of manufacturer or model, the amount of status information obtained from the device 2depends upon manufacturers and models that are supported by the SSD 10. If the manufacturer and model are supported by SSD 10, then detailed status information may be obtained from the device 2. Thus, the SSD 10 determines what type of statusinformation is stored in the System Configuration Database (SCD 6).
Information from both SCD 6 and SSD 10 are used to create device objects to represent the devices being monitored. Although a single device 2 is shown to be connected to the network 4, it will be appreciated that a plurality of devices, thatneed to be monitored, may be connected to network 4. The device objects allow the system 8 to communicate with the device 2 and determine what information to obtain from the devices.
FIG. 2 is an exemplary flowchart illustrating how it is determined if system 8 is configured to interface with device 2. In block 12, the system 8 or some other device that is part of the network 4 determines if the system 8 is configured tointerface with device 2. For example, it is determined whether the system 8 is programmed with software that allows the system 8 to communicate with device 2. In other words, system 8 uses a protocol that is compatible with device 2, such that system 8and device 2 can exchange data and operate cooperatively. In determining if the system 8 is configured to interface with device 2, the system 8 also obtained configuration information from the device 2 and determines if device 2 is supported by thesystem 8.
In block 14, if it is determined that system 8 is configured to interface with device 2, then in block 20, a communication protocol is established between system 8 and device 2, based on information stored in System Support Database 10. In block22, the System Configuration Database (SCD 6) is updated with the configuration data obtained when determining if the system 8 was configured to interface with the device 2. However, if it is determined that the system 8 is not configured to interfacewith device 2 in block 14, then the process ends and device 2 will not interface with system 8.
FIG. 3 is an exemplary flow chart illustrating how it is determined if system 8 is configured to interface with device 2 using the System Configuration Database (SCD 6). In block 24, the device 2 is queried using a standard communicationprotocol to determine its manufacturer, model, and/or the unique identification.
In block 26, if the manufacturer, model, or unique identification of the device is determined then the process proceeds to block 36, otherwise, the process proceeds to block 28. In block 36, it is determined that the system is configured tointerface with the device 2.
In block 28, the device 2 is queried using data stored in the System Configuration Database 6 to determine the manufacturer, model, and/or unique identification of device 2. In block 34, it is determined if the manufacturer, model, and/or uniqueidentification of the device 2 was identified in block 28. If the determination of block 34 is positive, then it is determined in block 36 that the system is configured to interface with the device 2. If the determination of block 34 is negative, thenit is determined in block 38 that the system is not configured to interface with device 2.
In querying the device 2 for the manufacturer and model information in blocks 24 and 28, the manufacturer and model of the device is checked with the System Support Database 10 to determine if the manufacturer and model is supported by the system8. However, it does not affect whether or not the system 8 is configured to interface with the device 2.
The System Support Database 10 is used to determine what status information is to be obtained from the device 2 when it is being monitored by the system 8. A device object for the device 2 includes information from SSD 10 about what statusinformation to obtain. If the manufacturer and model of the device is not supported in the SSD 10, then the device object will obtain status information that is available to all devices connected to the network 4. If the manufacturer is supported inthe SSD 10 but the model of the device is not supported, then the device object will obtain status information that is available for all devices of a manufacturer. If the manufacturer and the model are supported, then the device object will obtainstatus information that is available for all devices of the model.
FIG. 4 is an exemplary illustration of a hierarchical approach to determining if device 2 is supported by system 8. In blocks 56 and 58, it is determined if the manufacturer of the device 2 is supported by the system 8. If the manufacturer isnot supported, then in block 60 it is determined that the device is to be configured to use a generic protocol. If the manufacturer is supported, then the process proceeds to block 62.
In blocks 62 and 64, it is determined if the model of device 2 is supported by the system 8. If the model is not supported, then it is determined in block 66 that the device 2 is to be configured using a manufacturer specific protocol. If themodel is supported, then it is determined in block 68 that the device 2 is to be configured using a model specific protocol.
FIG. 5 illustrates software object in an exemplary embodiment of the present invention. The software object Send Interface Manager 70 interfaces directly or indirectly with software objects DataTransfer 74, ODBC-1 72, DeviceFactory 76,VenderModel 78, ODBC-2 84, SNMP 80, and Device 82.
Table 1 illustrates the functions of the ODBC-1 72.
TABLE-US-00001 TABLE 1 updateConfig Before this function is called, the calling function should not replace the manufacturer and model entries if get functions return null string from VendorModel package. This function updates the deviceinformation database of the current record in the ODBC. This function is most efficient when the getConfig below is called initially. First, this function checks if IP address is same at the ODBC. If IP addresses are not the same, the record withcorrect IP address is obtained from the database. Then, the other fields are copied and the record is updated. getConfig This function obtains a map from ODBC for the device information in a given format. The function returns true if there is datareturned, false if there is no more data. saveStatus This function saves the status information into the ODBC. The function returns true when saving is successful, false otherwise.
Table 2 illustrates the functions of DeviceFactory 76.
TABLE-US-00002 TABLE 2 createDevice This function creates the device of the specification in the Device Factory. The function returns a pointer to the created device if the creation is successful, 0 otherwise.
Table 3 illustrates the functions of DataTransfer 74.
TABLE-US-00003 TABLE 3 startSend This function triggers the Data Transfer to prepare for sending the data specified in the infoType. The function returns the EerrorCode. dataSend This function in the Data Transfer sends the received data tothe appropriate destination after properly formatting, encrypting and encoding. The function returns the EerrorCode. endSend This function in the Data Transfer ends the data sending. The function returns the EerrorCode.
Table 4 illustrates the functions of Device 82.
TABLE-US-00004 TABLE 4 getStatus This function obtains status information from a device. The function returns true when the status is returned, false when status could not be obtained. This function resets the variable that keeps the errorstatus before returning. checkErrorStatus This function triggers the device to check the error status to be saved internally.
Table 5 illustrates the functions of ODBC-2 84.
TABLE-US-00005 TABLE 5 getManufInfo This function obtains the name of the manufacturer, its vendor OID, the OID where the model information is stored, and the OID where the unique ID can be obtained. This function returns true when the data isreturned, false when no more data is available and all the strings are set to null strings. getSupportedModel This function obtains the Manufacturer and supported model. There may be more than one instances of the same manufacturer, but the model isunique for the given manufacturer. This function returns true when the data is returned, false when no more data is available and all the strings are set to null strings. getManufStatusInfo This function obtains the infoType and OID associated with theinfoType for the given Manufacturer. The obtained infoType and OID pair is supported by all the devices from the given manufacture. This function returns true when the data is returned, false when no more data is available and all the strings are setto null strings. getModelStatusInfo This function obtains the infoType and OID associated with the infoType for the given Manufacturer and model. This function returns true when the data is returned, false when no more data is available and all thestrings are set to null strings.
Table 6 illustrates the functions of SNMP 80.
TABLE-US-00006 TABLE 6 setAgent This function sets the IP address of the device to be contacted. getManufacturer This function gets the manufacturer at the IP address. If the manufacturer is obtained, the function returns true. If the erroris detected in the process, the function returns false. getModel This function gets the model of the device. If the model is obtained, including the null string, the function returns true. If the error is detected in the process, the function returnsfalse. getUniqueId This function returns the unique ID from device. If the unique ID is obtained, including the null string, the function returns true. If the error is detected in the process, the function returns false.
VendorModel 78 is responsible for obtaining information about the manufacturer and model of the monitored device. This software object obtains the manufacturer, model, and unique identifier of the monitored device. The class CVendorModel ofVendorModel 78 uses information from the database to determine the manufacturers and models supported by the system. The class also uses information from the database needed to obtain the model and unique identifier from the monitored device. Thepublic and private functions of CVendorModel are shown in Table 7 below.
TABLE-US-00007 TABLE 7 Function Name Description Public CVendorModel ( ) Constructor