Abstract:
Software executes on a processor of a device, such as an automate teller machine, at start-up to perform validation of expected peripheral devices for a predetermined number of start-ups. Once the predetermined number of start-ups has been reached with the same peripheral devices being present and operational the validation operation is curtailed and start-up of the device is sped up.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to a device start up system and method. More particularly, but not exclusively, the present invention relates to a device start up system and method in which peripheral device of the device are verified on initial start up and are assumed to be present on subsequent start ups. 
       BACKGROUND TO THE INVENTION 
       [0002]    Upon start up of a self-service terminal, for example an automated teller machine (ATM), each peripheral device that is expected to be present in the ATM, for example a card reader or cash dispenser, undergoes a check routine in order to determine if it is present and if it is functioning correctly. This check routine slows the start up of the ATM down as the start up period of an ATM is a process heavy period with hard disc operations and virus checking etc., being carried out. For example, an ATM with ten peripheral devices start up can take a matter of minutes. 
         [0003]    The extended start up period leads to increased downtime of the ATM following, for example routine maintenance, such as cash replenishment, or following a system reboot due to a software glitch, either locally at the ATM or at the operating financial institutions “back office” system. Increased downtime of any self-service terminal, but in particular of ATMs, leads to lost transaction opportunities for the terminal operator, it also leads to customer dissatisfaction for the terminal operator. 
         [0004]    Another problem associated with this approach is that if a peripheral device has a fault condition, like a firmware hang, a system reboot and subsequent detection of the device will show it as not present, when it actually is present but in a fault condition. This can result in fault conditions not being detected and the consequent reduction in functionality not being remedied. 
       SUMMARY OF THE INVENTION 
       [0005]    According to a first aspect of the present invention there is provided a device start up system comprising: 
         [0006]    a device comprising a processor and a plurality of peripheral devices; 
         [0007]    the processor having software installed thereupon, the software being arranged to cause the processor to determine the operational status of each of the peripheral devices upon an initial start up of the device and for a pre-determined number of subsequent start ups of the device thereafter; and 
         [0008]    the software being further arranged to cause the processor to initialise the peripheral devices determined to be operational during the initial start up and the pre-determined number of subsequent start ups, omitting determining the operational status of said peripheral devices once the pre-determined number of subsequent start ups of the device has been reached. 
         [0009]    Such a system allows for the start up, initialisation, of the device without recourse to a lengthy period of determining which peripheral devices are present during the process intensive start up phase. 
         [0010]    The software may be further arranged to cause the processor to determine the operational status of each of the peripheral devices a pre-determined time period after start up, once the pre-determined number of subsequent start ups have been reached. The software may be arranged to cause the processor to re-initialise the device if at least one of the peripheral devices is determined to not be operational. The software may be arranged to cause the processor to re-initialise at least one peripheral device if said at least one peripheral device is determined to not be operational. 
         [0011]    This allows the presence of the peripheral devices to be determined and remedial action to be taken to restore any peripheral devices found to be non-functional after the process intensive phase of the device start up has been completed. 
         [0012]    The number of subsequent start ups may be zero. 
         [0013]    The software may be arranged to store configuration data corresponding to peripheral devices discovered during start up of the device on a data storage device associated with the device. The software may be arranged to store start up count date with the configuration data on the data storage device. The software may be arranged to store configuration data on the data storage device after each of the pre-determined number of start ups. The software may be arranged to store final configuration data on the data storage device the final configuration data, corresponding to a preferred set of peripheral devices upon completion of the last of the pre-determined number of start ups. 
         [0014]    The device may comprise any one of the following: an ATM, an information kiosk, an electronic funds transfer (EFT) terminal a financial services centre, a bill payment kiosk, a video, DVD, multi-media, mpeg3 etc sales/rental kiosk, a lottery kiosk, a postal services machine, a check-in and/or check-out terminal such as those used in the retail, hotel, car rental, gaming, healthcare, and airline industries 
         [0015]    According to a second aspect of the present invention there is provided software, which when executed upon a processor of a device, causes the processor to determine the operational status of each of a plurality of peripheral devices upon an initial start up of the device and for a pre-determined number of subsequent start ups of the device thereafter; and 
         [0016]    the software being further arranged to cause the processor to initialise the peripheral devices determined to be operational during the initial start up and the pre-determined number of subsequent start ups, omitting determining the operational status of said peripheral devices once the pre-determined number of subsequent start ups of the device has been reached. 
         [0017]    The software may be further arranged to cause the processor to determine the operational status of each of the peripheral devices a pre-determined time period after start up, once the pre-determined number of subsequent start ups have been reached. The software may be arranged to cause the processor to re-initialise the device if at least one of the peripheral devices is determined to not be operational. The software may be arranged to cause the processor to re-initialise at least one peripheral device if said at least one peripheral device is determined to not be operational. 
         [0018]    The software may be arranged to store configuration data corresponding to peripheral devices discovered during start up of the device on a data storage device associated with the device. The software may be arranged to store start up count date with the configuration data on the data storage device. The software may be arranged to store configuration data on the data storage device after each of the pre-determined number of start ups. The software may be arranged to store final configuration data on the data storage device the final configuration data, corresponding to a preferred set of peripheral devices upon completion of the last of the pre-determined number of start ups. 
         [0019]    According to a third aspect of the present invention there is provided a method of reducing the start-up time of a device comprising the steps of: 
         [0020]    determining the operational status of each of a plurality of peripheral devices upon an initial start up of the device and for a pre-determined number of subsequent start ups of the device thereafter at a processor of the device; and 
         [0021]    causing the processor to initialise the peripheral devices determined to be operational during the initial start up and the pre-determined number of subsequent start ups, omitting determining the operational status of said peripheral devices once the pre-determined number of subsequent start ups of the device has been reached. 
         [0022]    The method may further comprise determining the operational status of each of the peripheral devices a pre-determined time period after start up, once the pre-determined number of subsequent start ups have been reached. The method may comprise re-initialising the device if at least one of the peripheral devices is determined to not be operational. The method may further comprise cause re-initialising at least one peripheral device if said at least one peripheral device is determined to not be operational. 
         [0023]    The method may comprise storing configuration data corresponding to peripheral devices discovered during start up of the device on a data storage device associated with the device. The method may comprise storing start up count date with the configuration data on the data storage device. The method may comprise storing configuration data on the data storage device after each of the pre-determined number of start ups. The method may comprise storing final configuration data on the data storage device the final configuration data, corresponding to a preferred set of peripheral devices upon completion of the last of the pre-determined number of start ups. 
         [0024]    According to a fourth aspect of the present invention there is provided a device start up program for executing on a processor to which a plurality of peripheral devices may be connected, the program being operable: 
         [0025]    (i) to determine which peripheral devices are operational on:
       (a) initial start up of the program and   (b) a pre-determined number of subsequent start ups of the program thereafter;       
 
         [0028]    (ii) to initialise those peripheral devices determined to be operational during the initial start up and the pre-determined number of subsequent start ups; 
         [0029]    (iii) in the event that the same peripheral devices are determined to be operational during initial start up and the pre-determined number of subsequent start ups, to set a configuration comprising those peripheral devices; and 
         [0030]    (iv) on a start up after the pre-determined number of subsequent start ups, to initialise the configuration without determining which peripheral devices are operational. 
         [0031]    According to a fifth aspect of the present invention there is provided processor executing the program of the fourth aspect of the present invention 
         [0032]    According to a sixth aspect of the present invention there is provided a system including the processor of the fifth aspect of the present invention and further comprising a plurality of peripherals connected thereto. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0033]    The invention will now be described, by way of example only, with reference to the accompanying drawings, in which: 
           [0034]      FIG. 1  is a front elevational view of an automated teller machine (ATM) according to an aspect of the present invention; 
           [0035]      FIG. 2  is a schematic view of selected internal elements of the ATM of  FIG. 1 ; and 
           [0036]      FIG. 3  is a flowchart detailing a method of reducing the start-up time of a device according to another aspect of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0037]    Referring now to  FIGS. 1 and 2 , an automated teller machine (ATM)  100  comprises a controller  102 , a data storage device  104 , a number of peripheral devices  106   a - f , and a network connection  108 . Typically, the control processor  102  is a PC core operating under a Microsoft Windows™ operating system. Normally, the data storage device  104  is a magnetic disc and may form part of the controller in some embodiments. 
         [0038]    The controller  102  is typically a PC core running the Microsoft® Windows XP® system. The controller  102  comprises a BIOS  110  stored in non-volatile memory, a microprocessor  112  and associated main memory  114 . 
         [0039]    Typical peripheral devices found in the ATM  100  comprise, but are not limited to, a card reader device  106   a , a receipt printer device  106   b , a display  106   c  and associated function display keys (FDKs)  106   d , a dispenser device  106   e  and an encrypting keypad  106   f.    
         [0040]    The ATM  100  connects to a communications network (not shown) comprising a secure network over which transactions data for transactions executed at the ATM  100  passes to an authorisation host (not shown). 
         [0041]    In use, the controller  102  loads an operating system kernel  118  and an ATM application program  120 , for example the APTRA XFS platform available form NCR Corporation of Duluth, Ga., into the main memory  114 . The ATM application program  120  acts as an API mediating communications between the controller  102  and the peripheral devices  106   a - f.    
         [0042]    The application program  120  comprises a suite of routines and objects  122  for controlling the operation of the ATM  100  such as providing the sequence of screens used in each transaction. The application program  120  also comprises a number of service providers  124   a - f , in the case of APRTA XFS these will be CEN XFS service providers. The service providers  124  control at least one, possibly many, of the peripheral devices  106   a - f , and/or applications running on the ATM  100 . The service providers  124   a - f  drive requests from the controller  102  to the peripheral devices  106   a - f  For example the service provider  124   f  relates to the encrypting keypad  106   f  drives requests for both an encryptor device and a keyboard device that comprise the keypad  106   f.    
         [0043]    Typically, the driving of requests involves translating any proprietary communications, command data and/or response data required to drive the peripheral device  106   a - f  and monitor its performance. In an exemplary embodiment utilising the CEN XFS standard, the standard defines a programming standard for communicating with each individual class of CEN XFS service provider  124   a - f , such that expected requests, excepted responses and events associated with each service provider  124   a - f  are defined. 
         [0044]    The controller  102  contains a database listing those peripheral devices which it expects to be present on start-up. On the first start-up of the ATM  100  the controller  102  carries out a handshake routine with each of the peripheral devices  106   a - f  in order to determine that they are both physically present and operational. The manner of handshake routines are standard for determining the presence and operational status of peripheral devices on start-up of ATMs and will be known to those in the art. The controller  102  is configured to carry out such a “soft” start-up a predetermined number of times, for example for the first three start-ups of the ATM  100 . If, following the pre-determined number of start-ups all of the expected peripheral devices  106   a - f  are present the list of expected peripheral devices  106   a - f  in the database is hardened, and the peripheral devices  106   a - f  are subsequently assumed to be physically present and operational on start-up and the handshake routines are omitted at the ATM  100  start-up. This allows the ATM  100  to be in an operational state more quickly than is currently the case. 
         [0045]    In a preferred embodiment, the handshake routines between the controller  102  and the peripheral devices  106   a - f  are merely delayed for a pre-determined period, typically of the order of a five minutes, such that the computationally intensive period of start-up where, for example, virus checking and disc operations are carried out is complete. This preferred embodiment allows the quick start-up of the ATM  100  coupled with an accurate knowledge of which peripheral devices  106   a - f  are operational on the ATM  100 . If a peripheral device  106   a - f  is found to be not operational the controller  102  enters the details in a log and may, in certain embodiments, instigate a call to a remote maintenance operations centre from which a customer service engineer can be dispatched to deal with the faulty peripheral device. 
         [0046]    Upon addition of a new peripheral device it is necessary for the ATM  100  to register the new device and trigger a reboot to revert back to discovering each peripheral device upon start-up with a handshake routine. This can be achieved in a number of ways, for example, a check of the universal serial bus (USB) vendor identifiers (VID) or product identifiers (PIDs) registered at the controller during the start-up of the ATM  100 . The presence of any new VID or PID triggers a reboot of the ATM  100  followed by a full re-discovery of peripheral devices  106   a - f  present on the ATM  100 . The ATM  100  is again required to undergo a predetermined number of “soft” start-ups in which all peripheral devices  112   a - f  are discovered via handshake routines. Once the predetermined number of “soft” start-ups have been carried out and a “hard” list of peripheral devices  106   a - f  present on the ATM  100  established, the ATM  100  reverts to the start-up routine noted hereinbefore in which the handshake routines are either delayed or dispensed with. 
         [0047]    One alternative approach to detecting the addition of peripheral devices to the ATM  100  is via the monitoring of software installation. The controller  102  monitors installer activity and if any new software installation occurs the controller  102  triggers a reboot of the ATM  100  followed by a full re-discovery of peripheral devices  106   a - f  present on the ATM  100 . The ATM  100  is again required to undergo a predetermined number of “soft” start-ups in which all peripheral devices  106   a - f  are discovered via handshake routines. Once the predetermined number of “soft” start-ups have been carried out and a “hard” list of peripheral devices  106   a - f  present on the ATM  100  established, the ATM  100  reverts to the start-up routine noted hereinbefore in which the handshake routines are either delayed or dispensed with. 
         [0048]    It is possible that the either the system application or a supervisor application may be configured to allow manual rebooting and resetting of the ATM  100  to a “soft” start-up routine to provide a backup to manually override the automatic device addition routines. 
         [0049]    It will be appreciated that the foregoing methods of monitoring for the addition of a new peripheral device are exemplary only and additional and/or alternative methods of new peripheral device discovery are possible. 
         [0050]    If a peripheral device  106   a - f  is removed from the ATM  100   a  communications fault is logged with the systems application and a customer service engineer will be dispatched to deal with the fault. In one embodiment, the customer service engineer will be prompted to confirm that the peripheral device  106   a - f  has been removed from the ATM  100 . If the customer service engineer confirms the removal of the peripheral device  106   a - f  from the ATM  100 , the controller  102  triggers a reboot of the ATM  100  followed by a full re-discovery of peripheral devices  106   a - f  present on the ATM  100 . The ATM  100  is again required to undergo a predetermined number of “soft” start-ups in which all peripheral devices  106   a - f  are discovered via handshake routines. Once the predetermined number of “soft” start-ups have been carried out and a “hard” list of peripheral devices  106   a - f  present on the ATM  100  established, the ATM  100  reverts to the start-up routine noted hereinbefore in which the handshake routines are either delayed or dispensed with. 
         [0051]    Referring now to  FIG. 3 , a method of reducing the start-up time of a device, for example an ATM, comprises determining the operational status of each of a plurality of peripheral devices upon an initial start up of the device and for a pre-determined number of subsequent start ups of the device thereafter at a processor of the device (Step  300 ). The processor initialises the peripheral devices determined to be operational during the initial start up and the pre-determined number of subsequent start ups, omitting determining the operational status of said peripheral devices once the pre-determined number of subsequent start ups of the device has been reached (Step  302 ). 
         [0052]    It will be appreciated that, although the present invention is described with reference to an ATM, the present invention is applicable to the following, non-limiting, examples of devices: an information kiosk, an electronic funds transfer (EFT) terminal a financial services centre, a bill payment kiosk, a video, DVD, multi-media, mpeg3 etc sales/rental kiosk, a lottery kiosk, a postal services machine, a check-in and/or check-out terminal such as those used in the retail, hotel, car rental, gaming, healthcare, and airline industries, or the like. 
         [0053]    It will also be appreciated that the steps of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate. The methods described herein may be performed by software in machine readable form on a tangible storage medium or as a propagating signal. 
         [0054]    Typically, the peripheral device implements its function either in response to a customer action and/or a command received from a PC core (which is also a peripheral device) of the device. Non-limiting examples of peripheral devices include: display, card reader, journal printer, rear operator panel, encrypting keypad, PC core, cash dispenser etc. 
         [0055]    Typically, each peripheral device comprises a processor to enable the peripheral device to perform its function, and a communications facility to enable the peripheral device to communicate with the controller, but in some instances this may not be essential. 
         [0056]    Each peripheral device comprises one or more components that contribute to the execution of the peripheral device&#39;s respective function. Typically, each component comprises a replaceable part within the module. Non-limiting examples of components include: for the display module, a display panel, a display panel housing, and the like; for a cash dispense module, a note thickness sensor, a pick unit, a presenter unit, and the like. 
         [0057]    Each component comprises one or more parts configured to enable the device to contribute to the execution of the peripheral device&#39;s function. Non-limiting examples of parts include: for a motorised card reader module, a width switch, a shutter, a pre-read magnetic head, a magnetic stripe reading head, and the like. 
         [0058]    Various modifications may be made to the above described embodiments without departing from the spirit and the scope of the invention.