Abstract:
A reconfigurable network-equipment power-management system, comprising: a power-controller device having a serial interface for communicating with a user, and a plurality of power-control ports that are able to interrupt operating power to a corresponding plurality of co-located computer data network appliances; a user configuration file for affecting said plurality of power-control ports; a memory disposed in the power-controller device and providing for storage of the user configuration file; and a file transfer mechanism for importing and exporting the user configuration file to said user via said serial interface.

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
       [0001]    This application is a continuation of U.S. patent application Ser. No. 12/853,193, filed Aug. 9, 2010, titled “POWER-MANAGER CONFIGURATION UPLOAD AND DOWNLOAD METHOD AND SYSTEM FOR NETWORK MANAGERS” which is a continuation of U.S. Pat. No. 7,774,443, issued Aug. 10, 2010, titled “POWER-MANAGER CONFIGURATION UPLOAD AND DOWNLOAD METHOD AND SYSTEM FOR NETWORK MANAGERS,” the disclosures of which are incorporated herein in their entireties. 
         [0002]    This application is related to U.S. Pat. No. 7,099,934, issued Aug. 29, 2006, titled “NETWORK-CONNECTED POWER MANAGER FOR REBOOTING REMOTE COMPUTER-BASED APPLIANCES,” and U.S. Pat. No. 6,711,613, issued Mar. 23, 2004, titled “REMOTE POWER CONTROL SYSTEM THAT VERIFIES WHICH DEVICES IS SHUT-DOWN BEFORE SUCH ACTION IS COMMITTED TO” and U.S. Pat. No. 5,949,974, issued on Sep. 7, 1999, titled “SYSTEM FOR READING THE STATUS AND CONTROLLING THE POWER SUPPLIES OF APPLIANCES CONNECTED TO COMPUTER NETWORKS,” the disclosures of which are incorporated herein in their entireties. 
     
    
     TECHNICAL FIELD 
       [0003]    The invention relates generally to remote power management systems, and more particularly to uploading and downloading user configuration information in bulk to avoid time-consuming and tedious power-manager configuration dialogs and scripts. 
       BACKGROUND 
       [0004]    Remotely located power managers at network equipment centers typically need to be configured by either the installer or network administrator. When only a few power controllers and options are being handled, such configuration management is next to trivial. But large network server farms, hotels, and other concentrated-equipment sites are being put in all around the world. The numbers of controlled equipment and the numbers of sites can be overwhelming. Manually peeking and poking at the configuration from a network administrator&#39;s control panel is not very feasible for these major installations. 
       SUMMARY 
       [0005]    Briefly, a power management system embodiment of the present invention comprises a power manager with a network agent in communication over a network with a network manager. The power manager is connected to control the operating power flowing to various pieces of computer network equipment at a single site. A user is able to assign names to each control port, and the power manager maintains a list of enrolled users who have access. Many operational mode choices are possible, and each can be configured by the user while remote from the power manager. The power manager can be commanded to upload a user configuration list, and it can be commanded to accept a downloaded user configuration list. 
         [0006]    An advantage of the present invention is that a system and method are provided that can speed the configuration of a power manager. 
         [0007]    Another advantage of the present invention is that a system and method are provided for duplicating, modifying, and replicating user configurations for power managers. 
         [0008]    A further advantage of the present invention is that a system and method are provided that allows a network console operator to control the electrical power status of a router or other network device. 
         [0009]    A still further advantage of the present invention is that a system and method are provided for reducing the need for enterprise network operators to dispatch third party maintenance vendors to remote equipment rooms and POP locations simply to power-cycle failed network appliances. 
         [0010]    Another advantage of the present invention is that a system and method are provided for reducing the time it takes to restore a failed network appliance and improving service levels. 
         [0011]    Another advantage of the present invention is that a system and method are provided for reducing organization losses from network downtime. 
         [0012]    These and many other objects and advantages of the present invention will no doubt become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]      FIG. 1  is a functional block diagram of a power manager system embodiment of the present invention that is able to pass user configuration data over a computer data network like the Internet. 
           [0014]      FIG. 2  is a functional block diagram of a power manager embodiment of the present invention showing the configuration and flow of user configuration files and display screens. 
           [0015]      FIG. 3  is a functional block diagram of a number of power managers in a system embodiment of the present invention that have been connected in a daisy-chain serial arrangement to expand the number of power control points possible. 
           [0016]      FIG. 4  is a plan view of a layout of a printed circuit board for a power manager in one embodiment of the present invention that has reduced EMI levels. 
           [0017]      FIGS. 5A and 5B  are functional block diagrams of how a power manager with only four logic-level power-control points and modular output connectors can be expanded to serially control sixteen power-control points. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]      FIG. 1  represents a power manager system embodiment of the present invention, and is referred to herein by the general reference numeral  100 . A network management system (NMS)  102  is connected by a network  104  to a remote site  106 . A power controller  108  forwards operating power through a sensor  110  and relay-switch  112  to a computer-based appliance  114 . Such operating power can be the traditional 110 VAC or 220 VAC power familiar to consumers, or direct current (DC) battery power familiar to telephone central-office “plant” employees. A network interface controller (NIC)  116  may be used to connect the computer-based appliance  114  to the network  104 . Such would be especially true if the computer-based appliance  114  were a server, router, bridge, etc. 
         [0019]    The power controller  108  can be configured to operate in a number of different modes, and such options are selected and stored in a configuration memory. The NMS  102  may download configurations to power controller  108 , and may upload them for editing, archiving, and/or duplication to other power controllers  108  at other remote sites  106 . Embodiments of the present invention are directed towards systems and methods that do such uploading, downloading, editing, archiving, and duplication of power manager configuration files. 
         [0020]    The power manager system  100  maintains the operating health of the computer-based appliance  114 . Such computer-based appliance  114  is prone to freezing or crashing where it is effectively dead and unresponsive. It is also some mission-critical assignment that suffers during such down time. It is therefore the role and purpose of the power manager  100  to monitor the power and environmental operating conditions in which the computer-based appliance  114  operates, and to afford management personnel the ability to turn the computer-based appliance  114  on and off. Such allows a power-on rebooting of software in the computer-based appliance  114  to be forced remotely from the NMS  102 . The operating conditions and environment are preferably reported to the NMS  102  on request and when alarms occur. 
         [0021]    The power controller  108  further includes a network interface controller (NIC)  118 , and this may be connected to a security device  120 . If the network  104  is the Internet, or otherwise insecure, it is important to provide protection of a network agent  122  from accidental and/or malicious attacks that could disrupt the operation or control of the computer-based appliance  114 . At a minimum, the security device  120  can be a user password mechanism. Better than that, it could include a discrete network firewall and data encryption. 
         [0022]    The network agent  122  interfaces to a remote power manager  124 , and it converts software commands communicated in the form of TCP/IP datapackets  126  into signals the remote power manager can use. For example, messages can be sent from the NMS  102  that will cause the remote power manager  124  to operate the relay-switch  112 . In reverse, voltage, current, and temperature readings collected by the sensor  110  are collected by the remote power manager  124  and encoded by the network agent  122  into appropriate datapackets  126 . Locally, a keyboard  128  can be used to select a variety of readouts on a display  130 , and also to control the relay-switch  112 . 
         [0023]    The display  130  and keyboard  128  can be connected as a terminal through a serial connection to the power manager  124 . Such serial connection can have a set of intervening modems that allow the terminal to be remotely located. The display  130  and keyboard  128  can also be virtual, in the sense that they are both emulated by a Telnet connection over the network  104 . 
         [0024]    The NMS  102  typically comprises a network interface controller (NIC)  132  connected to a computer platform and its operating system  134 . Such operating system can include Microsoft WINDOWS-NT, or any other similar commercial product. Such preferably supports or includes a Telnet application  136 , a network browser  138 , and/or an SNMP application  140  with an appropriate MIB  142 . A terminal emulation program or user terminal  144  is provided so a user can manage the system  100  from a single console. 
         [0025]    If the computer-based appliance  114  is a conventional piece of network equipment, e.g., as supplied by Cisco Systems (San Jose, Calif.), there will usually be a great deal of pre-existing SNMP management software already installed, e.g., in NMS  102  and especially in the form of SNMP  140 . In such case it is usually preferable to communicate with the network agent  122  using SNMP protocols and procedures. Alternatively, the Telnet application  136  can be used to control the remote site  106 . 
         [0026]    An ordinary browser application  138  can be implemented with MSN Explorer, Microsoft Internet Explorer, or Netscape NAVIGATOR or COMMUNICATOR. The network agent  122  preferably includes the ability to send http-messages to the NMS  102  in datapackets  126 . In essence, the network agent  122  would include an embedded website that exists at the IP-address of the remote site  106 . An exemplary embodiment of a similar technology is represented by the MASTERSWITCH-PLUS marketed by American Power Conversion (West Kingston, R.I.). 
         [0027]    Many commercial network devices provide a contact or logic-level input port that can be usurped for the “tickle” signal. Cisco Systems routers, for example, provide an input that can be supported in software to issue the necessary message and identifier to the system administrator. A device interrupt has been described here because it demands immediate system attention, but a polled input port could also be used. 
         [0028]    Network information is generally exchanged with protocol data unit (PDU) messages, which are objects that contain variables and have both titles and values. SNMP uses five types of PDUs to monitor a network. Two deal with reading terminal data, two deal with setting terminal data, and one, the trap, is used for monitoring network events such as terminal start-ups or shut-downs. When a user wants to see if a terminal is attached to the network, for example, SNMP is used to send out a read PDU to that terminal. If the terminal is attached, a user receives back a PDU with a value “yes, the terminal is attached”. If the terminal was shut off, a user would receive a packet informing them of the shutdown with a trap PDU. 
         [0029]    In alternative embodiments of the present invention, it may be advantageous to include the power manager and intelligent power module functions internally as intrinsic components of an uninterruptable power supply (UPS). In applications where it is too late to incorporate such functionally, external plug-in assemblies are preferred such that off-the-shelf UPS systems can be used. 
         [0030]    Once a user has installed and configured the power manager  108 , a serial communications connection is established. For example, with a terminal or terminal emulation program. Commercial embodiments of the present invention that have been constructed use a variety of communications access methods. 
         [0031]    For modem access, the communication software is launched that supports ANSI or VT 100  terminal emulation to dial the phone number of the external modem attached to the power manager. When the modems connect, a user should see a “CONNECT” message. A user then presses the enter key to send a carriage return. 
         [0032]    For direct RS-232C access, a user preferably starts any serial communication software that supports ANSI or VT 100  terminal emulation. The program configures a serial port to one of the supported data rates (38400, 19200, 9600, 4800, 2400, 1200, and 300 BPS), along with no parity, eight data bits, and one stop bit, and must assert its Device Ready signal (DTR or DSR). A user then presses the enter key to send a carriage return. 
         [0033]    For Ethernet network connections, the user typically connects to a power manager  108  by using a TELNET program or TCP/IP interface. The power manager will automatically detect the data rate of the carriage return and send a username login prompt back to a user, starting a session. After the carriage return, a user will receive a banner that consists of the word “power manager” followed by the current power manager version string and a blank line and then a “Username:” prompt. 
         [0034]    A user logged in with the administrative username can control power and make configuration changes. A user logged in with a general username can control power. Also, while a user logged in with the administrative username can control power to all intelligent power modules, a user logged in with a general username may be restricted to controlling power to a specific intelligent power module or set of intelligent power modules, as configured by the administrator. 
         [0035]    In a related case, U.S. Pat. No. 7,099,934, issued Aug. 29, 2006, titled NETWORK-CONNECTED POWER MANAGER FOR REBOOTING REMOTE COMPUTER-BASED APPLIANCES, includes many details on the connection and command structure used for configuration management of power manager embodiments of the present invention. Such patent application is incorporated herein by reference and the reader will find many useful implementation details there. Such then need not be repeated here. 
         [0036]    Referring again to  FIG. 1 , a user at the user terminal  144  is able to send a command to the power manager  124  to have the power manager configuration file uploaded. The power manager  124  concentrates the configuration data it is currently operating with into a file. The user at user terminal  144  is also able to send a command to the power manager  124  to have it accept a power manager configuration file download. The download file then follows. Once downloaded, the power manager  124  begins operating with that configuration if there were no transfer or format errors detected. These commands to upload and download configuration files are preferably implemented as an extension to an already existing repertoire of commands, and behind some preexisting password protection mechanism. HyperTerminal, and other terminal emulation programs allow users to send and receive files. 
         [0037]    In a minimal implementation, the power manager configuration files are not directly editable because they are in a concentrated format. It would, however be possible to implement specialized disassemblers, editers, and assemblers to manipulate these files off-line. 
         [0038]      FIG. 2  represents a power management system  200  that includes a power controller  202 . A microprocessor  204  is connected to a non-volatile memory  206  that can store user configuration data, e.g., user-assigned names for various controlled ports. A plurality of power control relays and sensors  208  respond to various control signals issued by the microprocessor  204  and are dependent on the user configuration data. A serial input/output (I/O) port  210  allows the configuration data to be inspected or modified via a data terminal  212 . For example, a SHOW display screen  214  on the terminal  212  graphically displays all user configuration choices in the memory  206 . 
         [0039]    Alternatively, the user configuration can be transferred in a file  216  over a data modem pair  217 - 218  to a remote terminal  220 . The file  216  may also be uploaded or downloaded from a disk  222 . An off-line editor  224  allows the user configuration file to be created, uploaded-modified, and downloaded. For example, where many power management systems  202  are being installed or maintained, the user configuration file  216  corresponding to each can be individually customized by the editor  224 . Such could save a great deal of time, effort, and expense. 
         [0040]      FIG. 3  is a diagram of an expandable power management system  300 . In one commercial embodiment of the present invention, a first power controller board  302  is daisy-chain connected through a serial cable  303  to a second power controller board  304 . In turn, the second power controller board  304  is connected through a serial cable  305  to a third power controller board  306 . All three power controller boards can communicate with a user terminal  308  connected by a cable  309 , but such communication must pass through the top power controller board  302  first. 
         [0041]    Alternatively, the user terminal can be replaced by an IP-address interface that will provide a webpresence and interactive webpages. If then connected to the Internet, ordinary browsers can be used to upload and download user configurations. 
         [0042]    Each power controller board is preferably identical in its hardware and software construction, and yet the one placed at the top of the serial daisy-daisy-chain is able to detect that situation and take on a unique role as gateway. Each power controller board is similar to power controller  202  ( FIG. 2 ). Each power controller board communicates with the others to coordinate actions. Each power controller board independently stores user configuration data for each of its power control ports. A typical implementation will have four relay-operated power control ports. Part of the user configuration can include a user-assigned name for each control port. 
         [0043]    A resynchronization program is executed in each microprocessor of each power controller board  302 ,  304 , and  306 , that detects where in the order of the daisy-chain that the particular power controller board is preferably located. The appropriate main program control loop is selected from a collection of firmware programs that are copied to every power controller board. In such way, power controller boards may be freely added, replaced, or removed, and the resulting group will resynchronize itself with whatever is present. 
         [0044]    The top power controller board  302  uniquely handles interactive user log-in, user-name tables, its private port names, and transfer acknowledgements from the other power controller boards. All the other power controller boards concern themselves only with their private resources, e.g., port names. 
         [0045]    During a user configuration file upload, power controller board  302  begins a complete message for all the power controller boards in the string with the user-table. Such is followed by the first outlets configuration block from power controller board  302 , and the other outlet configuration blocks from power controller boards  304  and  306 . The power controller board  302  tells each when to chime in. Each block carries a checksum so transmission errors can be detected. Each block begins with a header that identifies the source or destination, then the data, then the checksum. 
         [0046]    During a user configuration file download, power controller board  302  receives a command from a user that says a configuration file is next. The user-name table and the serial-name table is received by power controller board  302  along with its private outlets configuration block and checksum. The next section is steered to power controller board  304  and it receives its outlets configuration block and checksum. If good, an acknowledgement is sent to the top power controller board  302 . The power controller boards further down the string do the same until the whole download has been received. If all power controller boards returned an acknowledgement, the power controller board  302  acknowledges the whole download. Operation then commences with the configuration. Otherwise a fault is generated and the old configuration is retained. 
         [0047]      FIG. 4  is a plan view of a power controller printed circuit board (PCB)  400 , in an implementation of power controller boards  302 ,  304 , and  306 . A microprocessor (CPU)  402  comprises a Dallas Semiconductor DS80C320, which is a CMOS derivative of an Intel 8051. A pair of programmable array logic (PAL) devices  404  and  406  do I/O port and memory address decoding. A socket  408  is provided for a two M-bit flash memory device that will ultimately store the user configuration data. A PIC-microcontroller  410 , e.g., a Microchip Technology (Chandler, Ariz.) PIC16F84A device, talks with a temperature sensor, controls serial communication data rates, and secures the flash memory in socket  408 . It further is responsible for LED blink synchronization amongst the power controller boards. Four serial I/O connectors  411 - 414  are RS-232 interfaced by a set of level conversion interface chips  416 - 419 . A three-terminal regulator  420  provides operating power for the digital logic. A pair of analog matrix devices  422  and  424 , e.g., CD74HC22106 types, allow the serial I/O ports to be interconnected in a variety of arrangements. A set of four RJ-11 type connectors  426 - 429  respectively connect to four power-control relay boards (see  FIG. 5 ) that actually switch high-current utility circuits to network appliances. A set of two-wire connectors  430 - 433  can be used to forewarn each network appliance that its utility power is about to be interrupted, e.g., so a graceful shutdown can be executed. 
         [0048]    Such PIC-microcontroller  410  preferably includes a code protection bit that can be permanently set to make its internal program code unreadable. Such then allows the PIC-microcontroller  410  to act as a tamper-protection device for the whole PCB  400 , and especially for the program code and data executing and passing through CPU  402  from the flash memory. 
         [0049]    Electromagnetic interference (EMI) is now a major concern among governments and equipment manufacturers/users. So the PCB  400  has been implemented as a four-layer board with its signal layers on the outside and the powerplanes on the inside. Such construction has been found to reduce EMI to acceptable levels. 
         [0050]    DB-9-connectors had been used on previous products, but it was learned that IDC-10 type connectors were more reliable and did not express the micro-shorting behavior of the conventional connectors. These IDC-10 connectors allow mass termination with ribbon conductor cable types, and so are easier to manufacture. 
         [0051]      FIG. 5A  represents a basic power control system  500  that includes four single-point relay boards  501 - 504  that are able to independently control the operating power flowing to various pieces of network equipment and other appliances. Each relay board  501 - 504  is separately connected to a power manager  506 , e.g., with a three-wire cable  507 - 510  and RJ-11 type plugs and jacks. A user can control the system  500  from a user terminal  512 . 
         [0052]      FIG. 5B  represents an expanded power control system  520  that includes four four-point relay boards  521 - 524 . This array is able to independently control the operating power flowing to sixteen pieces of network equipment and other appliances. Each relay board  521 - 524  is separately connected via a serial RS-232 communications link to a power manager  526 , e.g., with a three-wire cable  527 - 530  and RJ-11 type plugs and jacks. A user can control the system  520  from a user terminal  532 . Preferably, the power managers  506  and  526  differ only in their programming, and not in their constituent hardware. Logic level relay boards require only two-wires (control signal and common), but serial relay boards require three wires (data send, data receive, and common). Even logic level boards use three wires, with the third wire being used for the relay board to report power output status (on or off) back to the power controller circuit board. 
         [0053]    Each relay board  521 - 524  includes a PIC-microcontroller, e.g., a Microchip Technology (Chandler, Ariz.) PIC16F84A device, that controls the serial communication interface with the power manager  526 . Serial data is interpreted by the microcontroller and is used to independently operate each of the relay board&#39;s several onboard relays. Such serial communication and therefore the microcontroller isn&#39;t necessary for the relay boards  501 - 504  ( FIG. 5A ). 
         [0054]    In a preferred application, the expanded power control system  520  is used instead of daisy-chain connecting power managers to get more control points. For example, power controller boards  304  and  306  ( FIG. 3 ) could be eliminated and still as many as sixteen control points can be accommodated. The configuration in  FIG. 3  would otherwise accommodate twelve control points as shown. 
         [0055]    In general, power controller embodiments of the present invention will have a number of configuration parameters that are set by users. These include descriptions of the type of power controller hardware present, e.g., the type, number and capabilities of the various intelligent power modules (IPM&#39;s) and sensors. The power controller configuration attaches names to power control relays (PCR&#39;s), and other components. The configuration can be used to switch serial connections, and control usernames, passwords and access to control of power controller PCR&#39;s based on the login username. 
         [0056]    The power controller configuration data is preferably located in a single 256-byte memory on each board. Even in a daisy-chain of power controller boards, each memory is used to store information about the board it is on. The memory at least contains all configuration information specific to the particular power controller board. A first board in a power controller board daisy-chain further includes a list of defined users and the passwords associated with the users, and a list of alias names associated with serial connections that can be accessed via a power-controller CONNECT command. 
         [0057]    The first board in a power controller board daisy-chain uniquely maintains a username and password table for user login validation. User access to particular PCR&#39;s is based on an access bit map for each PCR associated with the power controller board. When the first board in a daisy-chain has verified a username, a user identification number associated with the username is activated and is used by all boards to allow access to various power controller resources. Saving and restoring power controller configuration information involves the 256-byte memory on each board in the daisy-chain. The username and serial name tables for all boards in a daisy-chain are kept only on the first board in the power controller board. 
         [0058]    A command retrieves configuration data from the power controller, and another sends the data to the power controller. Initially, the configuration data is passed between users and the power controller via an ASCII file upload and download. Such upload and download is performed via a standard terminal emulation program such as the Windows HYPERTERM program. Once the code is completed on the power controller to allow this simple mechanism to save and restore power controller configuration, the next phase of this development effort is to create a Windows based program that will automate the configuration upload and download. In addition to automating the upload/download procedure for Windows users, this program further provides a graphical user interface program to allow Windows users the ability to view and manipulate a power controller configuration file. 
         [0059]    A power controller configuration save/restore command includes various parameters. Depending on the action requested by the user (via the command parameters) the command interacts with the user to either set up an ASCII file upload or download. The ASCII data that is sent or received contains the power controller configuration information. 
         [0060]    An SCFG command is used initiate a configuration upload or download, depending on a parameter supplied, e.g., SCFG SAVE|RESTORE. The SCFG command is used to copy the power controller configuration information from the power controller when the SAVE parameter is specified, and to copy the power controller configuration information to the power controller when the RESTORE parameter is specified. If the command is simply used with no parameters, an error message is displayed that lists the allowable parameters. If the SAVE parameter is specified, the user is prompted to press “Q” for quit, “C” for continue, or “D” for delay. The continue option will cause the power controller to start sending configuration data immediately. The delay option inserts a sixty second delay before sending the configuration data. 
         [0061]    When the power controller has sent all of its configuration data, a message is displayed, “Configuration Send Complete—stop receiving ASCII data”. The usual power-controller prompt is displayed signaling the upload is complete. 
         [0062]    If the RESTORE parameter was specified, a message, “Ready to receive ASCII configuration data—begin sending ASCII configuration data” is displayed. The power controller begins parsing any received data for configuration information. The configuration data download is aborted if no data is received for sixty seconds, or if a Ctrl-C is received. If the data received does not conform to the expected configuration data format, the download is rejected. An appropriate message is displayed. 
         [0063]    The power controller preferably waits to display any message until after the last character is received. Such delay helps ensure a configuration data stream does not obscure the message. The power controller automatically restarts using the existing configuration if the download was aborted or rejected. The configuration data transmissions preferably include checksums to improve data integrity. If the data and checksums add up wrong, the power controller rejects the data as being corrupted. 
         [0064]    As long as the configuration data is not detected as being corrupted, the power controller will use as much of the download configuration data as possible to update the current configuration. Too much data for the board combination is not considered to be corrupted data. For example, it is possible to download configuration data for a ten-board power controller board daisy-chain to a two-board power controller board daisy-chain, or to download configuration data for a two-board power controller board daisy-chain to a ten-board power controller board daisy-chain. The power controller configuration does not revert to defaults if no configuration data is received, the current configuration remains in effect if no configuration data is received. 
         [0065]    Once the power controller has successfully received an entire configuration data file, a message is displayed, “Configuration data successfully received for N power controller boards . . . This power controller board daisy-chain contains M power controller boards . . . WARNING—Only Partial Configuration Data Received . . . Press Y)es to use this data or N)o to discard this data”. 
         [0066]    The WARNING message is only displayed if the number of power controller boards that the configuration file refers to does not match the number of power controller boards actually in the power controller board daisy-chain. The user then responds with a “Y” to cause the power controller to restart using the data or with an “N” to cause the power controller to restart using the previous configuration. The “Y” and “N” responses can be entered in either upper or lower case. If the users does not respond to the message within the standard five minute power controller prompt time out, the power controller will restart using the previous configuration data. 
         [0067]    The power controller will display, “Restarting using configuration” or “Restarting using existing configuration”. The SCFG command requires administrative username privileges to execute. 
         [0068]    The configuration data that is sent to or from the power controller is sent in seven-bit ASCII format. There are two general data configuration blocks that are contained in the power controller configuration data. One of the general configuration blocks is used for comments while the other contains the actual power controller configuration data. During normal data stream parsing of a power controller configuration data stream, the processing code is sensitive to four possible events. 
         [0069]    If sixty seconds elapse between characters in a power controller configuration data stream, the parsing assumes a problem exists with the configuration data and the process is aborted with appropriate messages. None of the data in a power controller configuration data stream is used. Such time out detection is active during all power controller configuration data stream parsing. 
         [0070]    If a CTRL-C character is detected in the power controller configuration data stream, the parsing assumes the process is being aborted by user intervention and the process is aborted with appropriate messages. None of the data in a power controller configuration data stream is used. Such abort character detection and processing is active during all power controller configuration data stream parsing. 
         [0071]    A comment data configuration block indicator (e.g., the “#”) is received, if a “#” character is detected in the power controller configuration data stream, processing switches to the comment block data stream processing. Comment character parsing is only active during normal data stream parsing when neither a comment nor a configuration data block is being parsed. 
         [0072]    A configuration data block indicator (e.g., the “$”) is received, if a “$” character is detected in the power controller configuration data stream. Processing switches to the configuration block data stream processing. Configuration data block character parsing is only active during normal data stream parsing when neither a comment nor a configuration data block is being parsed. 
         [0073]    A power controller configuration comment block is recognized by a “#” character. When the configuration data stream is being parsed in the normal data stream parsing mode, a “#” indicates the beginning of a general comment block. When a “#” character is detected, normal data stream processing switches to comment block data stream processing. During comment block data stream processing, all data in the configuration data stream after the “#” character is treated as comment data until a carriage return or line feed character is received. The sixty-second time out and the CTRL C parsing and actions continue in effect. 
         [0074]    The carriage return character (0x0D) signifies the end of a comment block and causes the parsing of a power controller configuration data stream to return to the normal data stream processing as described earlier. 
         [0075]    The line feed character (0x0A) signifies the end of a comment block and causes the parsing of a power controller configuration data stream to return to the normal data stream processing. 
         [0076]    There are no checksums associated with comment blocks and no additional checks for data integrity are performed on comment blocks. Once a carriage return or line feed is detected in the comment block data, normal data stream processing continues. It is possible for garbage characters to exist in the configuration data stream between comment blocks and configuration data blocks. Garbage characters that occur between valid configuration blocks are ignored (unless the character is a CTRL C which aborts the process). 
         [0077]    A power controller configuration data record block is recognized by a “$” character. When the configuration data stream is being parsed in the normal data stream parsing mode, a “$” indicates the beginning of a configuration data record block. When a “$” character is detected, normal data stream processing switches to data record block data stream processing. During data record block data stream processing, the data that follows the “$” character is expected to be in the following format: 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 bytes 1 and two 
               
               
                   
                 bytes 3 and 4 
               
               
                   
                 byte 5 and 6 
               
               
                   
                 bytes 7 . . . 516 
               
               
                   
                 last two bytes 
               
               
                   
                 count field 
               
               
                   
                 board ID field 
               
               
                   
                 record type field 
               
               
                   
                 record data field 
               
               
                   
                 checksum field 
               
               
                   
                   
               
             
          
         
       
     
         [0078]    The first two characters after the “$” represent the high nibble and the low nibble of a one-byte hexadecimal value in the range of 00 through FF, e.g., 0-255 decimal. Because the two characters in the count field represent a single hexadecimal byte, the characters are limited to the ASCII-0-9 digits and the upper case ASCII characters A through F. The value of the hexadecimal byte represented by the two characters in the count field is the actual number of hexadecimal bytes that are represented by the characters in the record data field. The count is not the actual number of characters that are transmitted in the record data field data stream since the representation of a single hexadecimal byte requires two characters (one character for each nibble). The maximum size of a power controller configuration data record block is five hundred eighteen characters. Two characters for count, plus two characters for board-ID plus two characters for record type, plus up to five hundred ten characters for record data, and two characters for checksum. 
         [0079]    The two characters after the count field represent a one-byte hexadecimal value in the range of 00-1A (e.g., 0-26 decimal) that is the power controller board ID that the record data is associated with. The “00” value is a special value that is used to indicate the associated data record applies to all power controller boards in a daisy-chain. Other values are used to identify a specific power controller board in a daisy-chain to which the associated record data applies. The characters in this field are limited to the ASCII-0-9 digits and upper case ASCII “A” character. 
         [0080]    The two characters after the board ID field represent a one-byte hexadecimal value in the range of 00 through 04 that is the record type identifier for this data record block. Currently five record types are defined as follows: 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                 00 - configuration data general trailer record (MUST be last record) 
               
               
                 01 - configuration data general header/version record (MUST be first 
               
               
                 record) 
               
               
                 02 - user-name table entry record 
               
               
                 03 - serial port name table entry record 
               
               
                 04 - power controller board page configuration table record 
               
               
                   
               
             
          
         
       
     
         [0081]    Although only five record types are defined at this time, the structure allows expansion up to two hundred fifty-six different record types. Record type 01 must be the first record in the power controller configuration data stream and record type 00 must be the last record in the power controller configuration data stream. 
         [0082]    In the record data field, the record type field is from zero to five hundred ten characters that represent up to two hundred fifty-five hexadecimal bytes of configuration data. Each character in the record data field represents a nibble of a single hexadecimal byte. As a result the number of characters in the record data field must be an even number of characters. The characters are limited to the ASCII-0-9 digits and the ASCII A-F characters (upper case only). 
         [0083]    Following the record data field is a two-character field that represents a single hexadecimal byte, which is the record checksum value. The checksum value is the value that when added to the sum of the values of all of the hexadecimal bytes that are represented by the characters in the data stream will result in a value of zero. The checksum applies to actual hexadecimal values represented by the characters in the data stream, not to characters in the data stream. All of the fields in the configuration data record block (e.g., count field, board ID field, record type field, and record data field) are included in the sum to which the checksum value is applied. 
         [0084]    The configuration data general header/version record is the identified by an ASCII-01 in the record type field. Such record provides information on the entire contents of the configuration data stream. Such record must be the first configuration data record block in a configuration data stream. Configuration data comment blocks may precede the current record in the configuration data stream, but the first configuration data record block must be a header/version record. 
         [0085]    The count field of the current record is set to ASCII-04 to reflect the number of bytes of actual data that are contained in the record data field. The board ID field of the current record is set to ASCII-01 to indicate that the current record is directed towards the first board in the daisy-chain. The record data field of the general header/version record is formatted as follows: 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 bytes 1 and two 
               
               
                   
                 bytes 3 and 4 
               
               
                   
                 bytes 5 and 6 
               
               
                   
                 bytes 7 and 8 
               
               
                   
                 version 
               
               
                   
                 number of username table entry records 
               
               
                   
                 number of serial port table entry records 
               
               
                   
                 number of power controller board page configuration table 
               
               
                   
                 records 
               
               
                   
                   
               
             
          
         
       
     
         [0086]    The first two characters in the record data field are an ASCII representation of the current version of this configuration data. The initial version value is set to ASCII-01. Following the version characters is a two-character ASCII representation of the number of username table entry records that are contained in this configuration data stream. The range of values is 00 through seventy-eight (e.g., 0 through one hundred twenty-eight decimal). A value of 00 indicates that there are no username table entry records in the configuration data stream. Following the number of username table entry records is a two-character ASCII representation of the number of serial port table entry records that are contained in this configuration data stream. The range of values is 00 through twenty (e.g., 0 through thirty-two decimal). A value of 00 indicates that there are no serial port table entry records in the configuration data stream. Following the number of serial port table entry records is a two-character ASCII representation of the number of power controller page configuration table records that are contained in this configuration data stream. The range of values is 00 through IA (e.g., 0 through twenty-six decimal). A value of 00 indicates that there are no power controller configuration table records in the configuration data stream. All configuration data record blocks use the last two characters to represent the checksum value. 
         [0087]    The username table entry record is the identified by an ASCII-02 in the record type field. Such record is used to send an entry in the power controller user-name table. These records can appear in any order in the configuration data stream except as the first or last configuration data record block in a configuration data stream. The count field of the current record is set to ASCII twenty-eight (e.g., forty decimal) to reflect the number of bytes of actual data that are contained in the record data field. The board ID field of the current record is set to ASCII-01 to indicate that the current record is directed towards the first board in the daisy-chain. The record data field of the username table entry record contains ASCII characters that represent the high and low nibbles of the actual hexadecimal bytes that make an entry in the power controller username table. The actual number of ASCII characters in the record data field is eighty (e.g., two characters for each hexadecimal byte). As with all configuration data record blocks, the last two characters contain the checksum value. 
         [0088]    The serial port table entry record is identified by an ASCII-03 in the record type field. Such record is used to send an entry in the power controller serial port table. These records can appear in any order in the configuration data stream except as the first or last configuration data record block in a configuration data stream. The count field of the current record is set to ASCII twenty-eight (e.g., forty decimal) to reflect the number of bytes of actual data that are contained in the record data field. The board ID field of the current record is set to ASCII-01 to indicate that the current record is directed towards the first board in the daisy-chain. The record data field of the serial port table entry record contains ASCII characters that represent the high and low nibbles of the actual hexadecimal bytes that make an entry in the power controller serial port table. The actual number of ASCII characters in the record data field is eighty, e.g., two characters for each hexadecimal byte. As with all configuration data record blocks, the last two characters contain the checksum value. 
         [0089]    The power controller board page configuration table entry is the identified by an ASCII-04 in the record type field. Such record is used to send an entire 256-byte power controller board configuration data area. The single byte count field in the configuration data record block limits the actual amount of data that can be represented in a record to two hundred fifty-five bytes. As a result, the first byte of the power controller board configuration data area is not included in the data. Such byte is used internally by the power controller code for virtual power controller purposes and is not required nor desired to be included in the configuration data. These records can appear in any order in the configuration data stream except as the first or last configuration data record block in a configuration data stream. 
         [0090]    The count field of the current record is set to ASCII FF to reflect the number of bytes of actual data that are contained in the record data field. The board ID field of the current record is set to reflect the ASCII representation of the unit ID of the power controller board to which the record applies. The record data field contains ASCII characters that represent the high and low nibbles of the actual hexadecimal bytes of the power controller board configuration data area. The actual number of ASCII characters in the record data field is five hundred ten, e.g., two characters for each of the two hundred fifty-five hexadecimal bytes. As with all configuration data record blocks, the last two characters contain the checksum value. 
         [0091]    The configuration data general trailer record is the identified by an ASCII-00 in the record type field. Such record is used to signal the end of the configuration data stream. Such record must be the last configuration data record block in a configuration data stream. Configuration data comment blocks may precede or follow the current record in the configuration data stream, but no additional configuration data record blocks may follow the current record. The count field of the current record is set to ASCII-00 to indicate there is no data in the record data field for the current record. The board ID field of the current record is set to ASCII-01 to indicate that the current record is directed towards the first board in the daisy-chain. As with all configuration data record blocks, the last two characters contain the checksum value. 
         [0092]    An SCFG command initiates a configuration upload/download. The first board in a power controller board daisy-chain assumes control of all upload/download operations. A command line processor on the first board preferably evaluates the operation and signals the other boards in the daisy-chain. A SAVE operation uploads the power controller configuration from the power controller to the user system. A RESTORE operation downloads configuration data from a user system to the power controller. 
         [0093]    When a user enters the SCFG command using a SAVE parameter, a power controller command processor code preferably prompts the user to prepare to receive the configuration data as described in SCFG command description earlier in this document. 
         [0094]    Once the user responds to the power controller prompt with an indication that the SAVE operation is to proceed. This may include a sixty second delay. The power controller code formats and sends a power controller internal command to the power controller board daisy-chain to inform them that a configuration send is in progress. The first-in-daisy-chain board then formats and sends the configuration data general header/version record to the user. Then a record is sent for all active username table and serial port table entries. Then a record is formatted and sent for each of the 256-byte configuration blocks for each virtual sentry, if there are more than one. Once all of the configuration data is sent by the first-in-daisy-chain board, the first-in-daisy-chain board raises DTR to the daisy-chain. Such causes each board to send its own 256-byte configuration block, one for each virtual sentry. As each board completes its configuration data send, it propagates DTR down the daisy-chain which causes all of the boards to send their configuration data. The first-in-daisy-chain board monitors the data traffic flowing from the downstream boards. When no data is transmitted for one or two seconds, the first-in-daisy-chain board assumes all data has been transmitted. At this point the first-in-daisy-chain board formats and sends the general trailer record and the upload is complete. 
         [0095]    For configuration download (RESTORE), a user enters the SCFG command using a RESTORE parameter. The command processor on the first board in the daisy-chain sends an internal power controller command to all of the boards in the power controller board daisy-chain that informs them that a configuration data stream is to be received. Such is similar to a SET CODE UPLOAD command that puts all of the boards into a receive data mode, and causes a current configuration to be saved to flash ROM. However this command does not return to the system monitor. The power controller code that processes this command prepares to receive the configuration data and sends a positive response to the first board in the daisy-chain to indicate the configuration upload state is active. The first board in the daisy-chain waits for a response from all boards in the daisy-chain and then displays the download message to prompt the user to begin the configuration data send. A timer is set to allow the user five minutes to begin the configuration download. If the download fails for time out, invalid data detected, etc., an error message is displayed for twenty seconds. Then a power controller restart is initiated. The error message that is displayed in the event of an error is only displayed after a ten second time period has elapsed since the last character was received from the user. Such delay is incorporated to prevent the error message from colliding with an incoming data stream and therefore being lost. 
         [0096]    The parsing that occurs during the data transfer is described in the power controller configuration data format section of this document. Individual power controller boards process data that is directed to them as necessary. If errors are detected, the individual power controller boards record the error and wait for the end of command condition to report the error. 
         [0097]    Once the configuration data general trailer record is received, all boards verify their received data. Such verification includes verifying version number agreement between the configuration data and the existing data as well as checksum verification. The first-in-daisy-chain board propagates DTR down the daisy-chain and waits for a response from each board. Boards in the daisy-chain send a “+” to indicate the configuration was received and is verified. The boards send a “−” to indicate the received data was not verified. The boards send a “?” to indicate no configuration data was received for this board. If any boards report invalid data, the entire operation in aborted and the power controller is reset using the previous configuration data. 
         [0098]    he first-in-daisy-chain board evaluates the responses from the other boards in the daisy-chain and sends a message to the user indicating the result of the command and prompting the user to commit the configuration. If the number of boards in the power controller board daisy-chain does not correspond to the number of configuration data records received or if some of the boards responded with a “?”, a warning message is displayed in addition to the normal prompt messages to the user. Such warning message is to alert the user to discrepancy between the configuration data and the actual power controller board daisy-chain being configured. 
         [0099]    Based on the users response to the prompt, the first-in-daisy-chain board sends a power controller internal command to the daisy-chain to signal the boards to save or ignore the configuration. The first board then displays the success message and after a twenty second delay, initiates a power controller restart. At this point the power controller will restart with either the configuration or with the existing configuration depending on the users response. 
         [0100]    From the foregoing, it will be appreciated that specific embodiments of the invention have been described herein for purposes of illustration, but that various modifications may be made without deviating from the scope of the invention. Accordingly, the invention is not limited except as by the appended claims.