Abstract:
A method for training a trainable RF transmitter to transmit variable code signals used to actuate a remote device having a receiver where the transmitter includes a memory that has stored variable code characteristics for a plurality of different remote devices includes initiating a training sequence and generating at least one RF carrier signal having the variable code characteristics associated with one remote device of the plurality of different remote devices. The method further includes transmitting the at least one RF carrier signal to the receiver of the remote device and repeating the generating and transmitting steps for the variable code characteristics of each remote device in the plurality of different remote device until feedback is received from a user that the remote device is activated. Upon receiving an indication that the remote device is activated, the transmitter stores an identifier of the variable code characteristics that activated the remote device.

Description:
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS 
       [0001]    This application is a Continuation of application Ser. No. 10/531,108, filed May 20, 2004, which is a national stage of PCT/US2004/015886, filed May 20, 2004, which claims the benefit of U.S. Provisional Application No. 60/472,049, filed May 20, 2003. application Ser. No. 10/531,108 is also a Continuation-in-Part of International Application No. PCT/US03/35641, filed Nov. 7, 2003, which claims the benefit of U.S. Provisional Application No. 60/424,989, filed Nov. 8, 2002. application Ser. No. 10/531,108 is also a Continuation-in-Part of International Application No. PCT/US2004/005257, filed Feb. 23, 2004, which claims the benefit of U.S. Provisional Application No. 60/448,993, filed Feb. 21, 2003. Each of application Ser. Nos. 10/531,108, PCT/US2004/015886, 60/472,049, PCT/US03/35641, 60/424,989, PCT/US2004/005257, and 60/448,993 are hereby incorporated by reference in their entireties. 
     
    
     FIELD 
       [0002]    The present invention relates to a radio frequency (RF) transmitter and particularly to training a transmitter that transmits a control signal from a vehicle to a remotely controlled device and controlling a remotely controlled device using a transmitter in a vehicle. 
       BACKGROUND 
       [0003]    Electronically operated remote control systems, such as garage door openers, home security systems, home lighting systems, etc. are becoming increasingly common. Such electronic remote control systems typically employ a battery powered portable RF transmitter for transmitting a modulated and encoded RF signal to a receiver located at the remote control system. For example, a garage door opener system may include a receiver located within a home owner&#39;s garage. The garage door receiver is tuned to the frequency of its associated portable RF transmitter and demodulates a predetermined code programmed into both the portable transmitter and receiver for operating the garage door. 
         [0004]    As an alternative to a portable transmitter, a trainable transceiver (e.g., a remote control transceiver) may be provided in vehicles for use with remote control devices such as garage door openers, gate controllers, alarm controls, home lighting systems, or other remotely controlled devices.  FIG. 1  shows a vehicle  10  including a trainable transceiver used to control a remote control system  14 . The transceiver (not shown) is mounted within the vehicle  10 , inside, for example, a rearview mirror  16 . The transceiver learns and stores the modulation scheme (i.e., code format), transmission codes and the particular RF carrier frequency of an OEM (original equipment manufacturer) remote transmitter  12  for use with the remote control system  14 . The transceiver is trained using an original remote RF transmitter  12  for the remote control system. The coded RF (or infrared) energy of the transmitter  12  is transmitted as indicated by arrow A to the transceiver mounted in the rearview mirror  16  of vehicle  10 . The transceiver receives the encoded transmitted energy, demodulates it and identifies and stores the control code and carrier frequency of the transmitted energy. Once trained to the control code and frequency of the remote transmitter  12 , the transceiver can be used to selectively transmit coded RF energy as indicated by arrow T to the remote control system  14  that is responsive to the signal. 
         [0005]    To enhance security of remote control devices, many manufacturers have implemented rolling code or cryptographic algorithms in their remote control system original transmitters and receivers to transmit and respond to randomly varying codes. A cryptographic algorithm is used to generate and encrypt a new control code for each transmission of the control signal. Typically, to keep track of which code is to be transmitted or received next, sequential code serial numbers are stored that identify which code was transmitted or received last, such that the next code will have associated therewith the next sequential serial number. To enable a vehicle-installed trainable transceiver to effectively operate in such systems, trainable transceivers have been developed that have the capability of recognizing when a received signal has been originated from a transmitter that generates a code that varies with each transmission in accordance with a cryptographic protocol. When such a variable code is recognized, the trainable transceiver determines which cryptographic protocol or algorithm is used to generate and transmit the next code to which the receiver will respond. Typically the receiver of the remote control system also needs to be trained to recognize and accept the transmitter as a valid transmitter for the remote control system (e.g., the receiver may be trained to recognize a unique transmitter serial number associated with the transmitter as valid). In addition, the receiver and transmitter are typically synchronized to a counter that increments or changes in a predictable way with each button press. The training of the receiver of the remote control system is commonly referred to as the second part of the training process or receiver training. An example of a trainable transceiver configured to learn variable codes as well as methods for synchronizing rolling codes are described in U.S. Pat. No. 5,661,804, herein incorporated by reference. 
       SUMMARY 
       [0006]    In accordance with one embodiment, a method for actuating a remote device having a receiver using an RF transmitter in a vehicle to transmit variable code signals, the RF transmitter including a memory having variable code characteristics associated with a plurality of different remote devices includes initiating an operating sequence to actuate the remote device, generating a plurality of RF carrier signals, each RF carrier signal including variable code characteristics associated with a different remote device from the plurality of different remote devices, and transmitting the plurality of RF carrier signals to the receiver of the remote device in order to remotely actuate the remote device. 
         [0007]    In accordance with another embodiment, a method for training a trainable RF transmitter in a vehicle to transmit variable code signals used to actuate a remote device having a receiver, the trainable transmitter having a memory including stored variable code characteristics for a plurality of different remote devices, includes initiating a training sequence, generating at least one RF carrier signal having variable code characteristics associated with one remote device from the plurality of different remote devices, transmitting the at least one RF carrier signal to the receiver of the remote device, repeating the generating and transmitting steps for the variable code characteristics of each remote device in the plurality of different remote devices until feedback is received from a user that the remote device is activated, and upon receiving an indication that the remote device is activated, storing an identifier of the variable code characteristics that activated the remote device. 
         [0008]    In accordance with yet another embodiment, a method for training a trainable RF transmitter in a vehicle to transmit variable code signals used to actuate remote devices, the trainable transmitter including a memory having stored variable code characteristics for a plurality of different remote devices, includes receiving inputs from a user, identifying a remote device to be actuated from the plurality of different remote devices based on the received inputs, and associating the identified remote device with a user input device of the trainable transmitter for subsequent transmission of a variable code signal having variable code characteristics of the identified remote device to actuate the identified remote device. 
         [0009]    In accordance with another embodiment, a method for training a trainable RF transmitter in a vehicle to transmit variable code signals used to actuate remote devices, the trainable transmitter including a memory having stored variable code characteristics for a plurality of different remote devices includes receiving inputs from a user, identifying a remote device to be actuated from the plurality of different remote devices based on the received inputs, generating an RF carrier signal having variable code characteristics of the identified remote device, and transmitting the RF carrier signal to a receiver of the identified remote device to actuate the identified remote device. 
         [0010]    In accordance with a further embodiment, a trainable transmitter in a vehicle for transmitting variable code signals used to actuate remote devices includes a memory having stored variable code characteristics for a plurality of different remote devices, a user input device configured to receive inputs from a user, a control circuit coupled to the user input device and the memory and configured to receive the inputs from the user input device, to identify a remote device from the plurality of different remote devices based on the received inputs and to associate the identified remote device with the user input device for subsequent transmission of a variable code signal having variable code characteristics of the identified remote device, and a transmitter circuit coupled to the control circuit and configured to transmit the variable code signal to actuate the identified remote device. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    The invention will be more readily understood by reference to the following description taken with the accompanying drawings, in which: 
           [0012]      FIG. 1  shows a vehicle including a trainable transceiver used to control a remote control system. 
           [0013]      FIG. 2  shows a vehicle including a trainable transmitter in accordance with an embodiment. 
           [0014]      FIG. 3  is a schematic block diagram of a trainable transmitter in accordance with an embodiment. 
           [0015]      FIG. 4  illustrates a method for using a transmitter to remotely actuate a device in accordance with an embodiment. 
           [0016]      FIGS. 5A and 5B  illustrate interleaving of messages in accordance with an embodiment. 
           [0017]      FIG. 6  illustrates a method for training a trainable transmitter in accordance with an embodiment. 
           [0018]      FIG. 7  illustrates a method for training a trainable transmitter in accordance with an alternative embodiment. 
           [0019]      FIGS. 8   a  and  8   b  illustrates methods for training a trainable transceiver in accordance with an alternative embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0020]      FIG. 2  shows a vehicle  20  including a trainable transmitter in accordance with an embodiment. Vehicle  20  is an automobile, although it should be understood that the trainable transmitter of the present invention may be embodied in other vehicles (e.g., a truck, sport utility vehicle (SUV), mini-van, or other vehicle) or other systems. The system as illustrated in  FIG. 2  also includes a remote control system  24  such as a garage door opener, home security system, home lighting system, gate opener, etc. Remote control system  24  is responsive to a variable code (or rolling code) RF control signal. Accordingly, a cryptographic algorithm or protocol is used to generate a new control code for each transmission of the control signal. The trainable transmitter  35  (shown in  FIG. 3 ) is mounted within the vehicle  20  inside, for example, a rearview mirror  26  or other suitable location such as an overhead console, a visor, etc. Alternatively, one or more elements of trainable transmitter may be mounted to other vehicle interior elements, such as an instrument panel or visor. Trainable transmitter  35  (shown in  FIG. 3 ) also includes a programmable control circuit coupled to a transmitter circuit. The transmitter circuit and programmable control circuit are configured to identify, retrieve and/or store the carrier frequency and the cryptographic or rolling code algorithm or protocol for the variable control code used to control the remote control system  24 . The transmitter selectively generates coded RF energy in accordance with the cryptographic protocol and transmits the coded RF energy as indicated by arrow B to the remote control system  24 . Remote control system  24  includes a receiver  37  (shown in  FIG. 3 ) to receive the transmitted RF energy. The programmable control circuit also controls the transmitter circuit  30  (shown in  FIG. 3 ) to generate a carrier signal and modulate a binary code onto the carrier signal to generate the control signal for the remote control system  24 . The operation of the trainable transmitter and the programmable control circuit are described in further detail below. 
         [0021]      FIG. 3  is a schematic block diagram of a trainable transmitter in accordance with an embodiment. Trainable transmitter  35  shown in  FIG. 3  includes a transmitter circuit  30 , that is coupled to an antenna  38  and a control circuit  32 . Advantageously, trainable transmitter  35  does not require a receiver to be trained to operate a remote control system  33 . Accordingly, an original transmitter of the remote control system is also not required to train transmitter  35 . A power supply  36  is conventionally coupled to the various components for supplying their necessary operating power in a conventional manner. A user interface  34  is used to receive input from a user regarding a particular remote system to be controlled. Transmitter  35  may be used to control a plurality of systems and devices. For example, user interface  34  may include an operator input device such as a series of push button switches which may each be associated with a separate remote control system, such as different garage doors, electronically operated access gates, house lighting controls or other remote control systems, each of which may have its own unique operating RF frequency, modulation scheme and/or cryptographic algorithm or protocol for a control code. Thus, each switch may correspond to a different radio frequency channel for transmitter circuit  30 . Alternatively, the series of push button switches may each be associated with a different type of remote control system such as garage door opener, gate controller, house lighting control, each of which may have an associated set of manufacturers, makes, models, etc. Each manufacturer and/or specific make or model of system may have a unique operating frequency or frequencies, encryption data, cryptographic algorithm or protocol, etc. In another embodiment, user interface  34  may also include a display (or be coupled to a vehicle mounted electronic display) with a menu identifying, for example, particular remote control systems or types of remote control systems. 
         [0022]    Trainable transmitter  35  includes a control circuit  32  configured to control the various portions of transmitter  35 , to store data in a memory  31 , to operate preprogrammed functionality, etc. Control circuit  32  may include various types of control circuitry, digital and/or analog, and may include a microprocessor, microcontroller, application-specific integrated circuit (ASIC), or other circuitry configured to perform various input/output, control, analysis, and other functions as described herein. Control circuit  32  is coupled to user interface  34  which may include an operator input device which includes one or more push button switches, but may alternatively include other user input devices, such as switches, knobs, dials, etc., or even a voice-actuated input control circuit configured to receive voice signals from a vehicle occupant and to provide such signals to control circuit  32  for control of transmitter  35 . 
         [0023]    Transmitter  35  is used to control remote control system  33  that uses a rolling control code. Once transmitter circuit  30  and control circuit  32  are trained to the carrier frequency and cryptographic algorithm associated with the remote control system  33  (e.g., a garage door opener), transmitter circuit  30  may then be used to transmit an RF signal B that has the characteristics necessary to activate remote control system  33  to a receiver  37  located at the remote control system  33 . 
         [0024]    Control circuit  32  includes data input terminals for receiving signals from the user interface  34  indicating, for example, that a training mode should be initiated, that an operating mode should be initiated, or for receiving information regarding the remote control system  33 , etc. The training mode or operating mode may be initiated by, for example, actuating a push button, by a message on a vehicle bus (if the transceiver is mounted in a vehicle), a combination of key presses, selecting a menu item on a display, etc. The training and operating processes are is discussed in further detail below with respect to  FIGS. 4-8 . Control circuit  32  also includes a memory  31  that includes stored variable code characteristics for a plurality of remote control system manufacturers and particular makes or models of remote control systems for each manufacturer. The variable code characteristics may include, for example, possible carrier frequencies, modulation schemes, encryption data, cryptographic algorithms or protocols etc. for each system manufacturer and/or for specific makes or models of a system. Preferably, each system for a particular manufacturer has an entry in memory  31 . In one embodiment, an index number may be provided for each system that identifies the system and the location of its entry in memory  31 . Memory  31  may be a volatile or non-volatile memory, and may include read only memory (ROM), random access memory (RAM), flash memory, or other memory types. 
         [0025]    Control circuit  32  is also coupled to transmitter circuit  30 . Transmitter circuit  30  is configured to communicate with receiver  37  of the remote control system and may be used to transmit signals via antenna  38 . In an alternative embodiment, trainable transmitter  35  may include a plurality of transmitter circuits  30  and/or antennas  38  in order to transmit multiple signals at multiple frequencies. Once transmitter  35  has been trained, receiver  37  of the remote control system  33  is synchronized with transmitter circuit  30  regarding the variable control code (and its associated serial number) generated using the cryptographic algorithm that was either received last or that is expected to be transmitted next. The receiver is also trained to recognize and accept transmitter  35  as a valid transmitter and synchronize a rolling code counter(s). 
         [0026]      FIG. 4  illustrates a method for using a transmitter to remotely actuate a device in accordance with an embodiment. At block  402 , an operating mode is initiated to transmit rolling code signals for a particular device type. For example, if the remote control system to be controlled is a garage door opener, the user may initiate the transmission of rolling codes associated with various garage door opener manufacturers and systems as stored in the memory  31  of the control circuit  32 . Alternatively, the operating mode maybe configured to transmit rolling code signals for all known rolling code protocols for all known systems stored in memory  31 . The rolling code transmission process may be initiated by, for example, actuating a push button, by a message on a vehicle bus (if the transceiver is mounted in a vehicle), a combination of key presses, selecting a menu item on a display, etc. At block  404 , a plurality of RF carrier signals are generated by the control circuit  32 . Each RF signal has the variable code characteristics (e.g., control code according to a cryptographic algorithm, carrier frequency, etc.) for a different one of the systems stored in the memory of the control circuit including the particular device to be actuated. At block  406 , the plurality of RF signals are transmitted to the receiver of the remote control system. In one embodiment, the plurality of RF signals are transmitted sequentially. The transmitter  35  (shone in  FIG. 3 ) will cycle through each known rolling code protocol (e.g., for a particular type of remote control system or for all known systems) stored in memory at each activation. If the remote control system corresponds to one of the system for which characteristics are stored in the transmitter, the remote control system should be actuated by the transmission of signals for all possible systems stored in the memory of the transmitter. Accordingly, the particular remote control system and its associated variable code characteristics do not need to be identified by the transmitter. At each activation of the rolling code transmission process, control circuit  32  (shown in  FIG. 3 ) will increment each rolling code value unique to rolling code protocol. As mentioned, the receiver of the remote control system should be trained to accept the transmitter as a valid transmitter. 
         [0027]    In another embodiment, an RF signal for each system stored in memory may be transmitted simultaneously. In this embodiment, a separate transmitter circuit  30  (shown in  FIG. 3 ) may be required to transmit each RF signal. Accordingly, as mentioned above, transmitter  35  (shown in  FIG. 3 ) may include a plurality of transmitter circuits  30 . In another alternative embodiment, the data packets of the plurality of signals are transmitted simultaneously using a single transmitter circuit  30 . Referring to  FIG. 5A , each transmission of a message  502  by transmitter circuit  30  includes a packet of data  504  followed by idle time. For example, a typical transmission packet  504  may be 20 to 30 ms in duration, followed by approximately 75 ms of idle time. Each packet  504  contains a plurality of bits. By switching between frequencies and/or data packet transmissions, multiple message, for example four messages, can be interleaved while appearing continuous to the remote control system receiver and the user. The actual number of messages that may be interleaved may vary based on the contents of the transmission. As shown in  FIG. 5B , multiple messages ( 506 - 512 ) can be sent on different frequencies. A first data string (or message)  506  is sent on a first frequency, a second data string  508  is sent on a second frequency, a third data string  510  is sent on a third frequency and a fourth data string  512  is sent on a fourth frequency. Each data string corresponds to a unique system. Each frequency may be the same or different, depending on the system to which it corresponds. The number of messages (or data packets) that may be sent in this manner, however, may be limited by the duration and format of a transmission by the transmitter. 
         [0028]    At each activation, the transmitter cycles through the various rolling code protocols in memory and generates an interleaved message(s). Depending on the number of rolling code protocols or systems stored in memory, more than one interleaved message may be required (i.e., each message will represent a subset of the protocols/systems in memory). As mentioned above, if the remote control system corresponds to one of the systems for which characteristics are stored in the transmitter, the remote control system should be actuated by the transmission of signals for all possible systems (e.g., simultaneously). Accordingly, the remote control system and its associated variable code characteristics (e.g., rolling code protocol) do not need to be identified by the transmitter. Each time the rolling code transmission process is initiated, the rolling code value unique to each system is incremented. As mentioned above, the receiver  37  (see  FIG. 3 ) of the remote control system should be trained to accept the transmitter as a valid transmitter. 
         [0029]      FIG. 6  illustrates a method for training a trainable transmitter in accordance with one embodiment. At block  602 , a rolling code training mode is initiated to identify the remote control system and the correct frequency and variable control code for the remote control system. The training mode may be initiated by, for example, actuating a push button, by a message on a vehicle bus (if the transceiver is mounted in a vehicle), a combination of key presses, selecting a menu item on a display, etc. At block  604 , an index counter is set to one. As discussed previously, each system in memory may be identified by, for example, an index number. Accordingly, the training process begins with the system and its associated characteristics identified by an index number of one. As the process proceeds, each of the stored systems will be tried based on the sequential order of the corresponding index numbers in memory. At block  606 , an RF control signal is generated using the stored characteristics, e.g., rolling code and frequency, for the first system in memory and transmitted to the remote control system. The transmitter waits for user feedback regarding whether the remote system was activated by the transmission at block  608 . A user may provide feedback by, for example, actuating a push button, releasing a push button, a combination of button presses, a menu selection, a time period between button presses, etc. If the remote control system is activated (block  608 ), the rolling code characteristics used are stored at block  610  and may be associated with a switch or other operator input device of the transmitter. The switch is also associated with the remote control system and may be used to initiate subsequent transmissions to the remote control system. As mentioned above, the receiver  37  (see  FIG. 3 ) of the remote control system should be trained to accept the transmitter as a valid transmitter. 
         [0030]    If the remote control system is not activated (block  608 ), it is determined whether the last stored system in memory has been reached at block  614 . If the last stored system has not been reached, the index counter is incremented at block  612 . The system and characteristics identified by the incremented index number in memory are used to generate an RF control signal transmitted to the remote control system (block  606 ). The process is repeated for each system stored in memory until either the remote system is activated or all possible systems have been tried. If, at block  614 , the last stored system has been reached and the remote system has not been activated, the process may start over at block  604 . 
         [0031]      FIG. 7  illustrates a method for training a trainable transmitter in accordance with an alternative embodiment. At block  702 , a rolling code training mode is initiated. The training mode may be initiated by, for example, actuating a push button, by a message on a vehicle bus (if the transceiver is mounted in a vehicle), a combination of key presses, selecting a menu item on a display, etc. At block  704 , a plurality of RF signals corresponding to a subset of the systems or devices included in the memory is generated by the control circuit. The subset of signals maybe transmitted, for example, sequentially or simultaneously (e.g., via multiple transmitter circuits or an interleaved message). The transmitter may then send a transmission with a set of packets representing the subset of all possible systems at block  706 . At block  708 , the transmitter waits for user feedback regarding whether the remote system was activated by the transmission at block  706 . A user may provide feedback by, for example, actuating or releasing a push button, a combination of key presses, a menu selection, a time period between button presses, etc. If the remote control system is activated, the subset of systems used may be stored and associated with a switch or button for subsequent transmission to the remote control system at block  712 . As mentioned above, the receiver  37  (see  FIG. 3 ) of the remote control system should be trained to accept the transmitter as a valid transmitter. If the transmission does not activate the remote control system or device, it is determined whether the last subset of systems in memory has been reached at block  714 . If the last subset of systems has not been reached, another subset of possible systems from the memory are used to generate a plurality of RF signals at block  710 . Each time the rolling code transmission process is initiated, the rolling code value unique to each system in the identified subset of systems is incremented. This process continues until the system is activated or all possible systems have been tried. If, at block  714 , the last subset of systems has been reached and the remote system has not been activated, the process may start over at block  704 . 
         [0032]      FIG. 8   a  illustrates a method for training a trainable transmitter in accordance with an alternative embodiment of the invention. At block  802 , a rolling code training mode is initiated to identify the remote control system and the correct frequency and variable control code for the remote control system. The training mode may be initiated by, for example, actuating a push button, by a message on a vehicle bus (if the transceiver is mounted in a vehicle), a combination of key presses, selecting a menu item on a display, etc. At block  804 , a user provides input to the transmitter and control circuit that identifies the remote control system (e.g., manufacturer, make/model, etc.) to be controlled. For example, the transmitter user interface may include a display or be coupled to a display in the vehicle that can be used to show a menu of possible remote control systems (i.e., systems that have characteristics stored in the memory of the transmitter). The user may select from the menu the appropriate system that corresponds to the remote control system to be controlled by the transmitter. Alternatively, a menu of the possible systems that have characteristics stored in the memory of the transmitter may be provided in a written document, such as an owner&#39;s manual, and the user can select a system by a combination of key or button presses. Once the control circuit of the transmitter receives the system identification, the system and/or variable code characteristics for the identified system may be associated with a switch or button at block  806  for subsequent transmission to the remote control system. As mentioned above, the receiver  37  (see  FIG. 3 ) of the remote control system should be trained to accept the transmitter as a valid transmitter. 
         [0033]      FIG. 8   b  illustrates a method for training a trainable transmitter in accordance with an alternative embodiment of the invention. At blocks  808  and  810 , a rolling code training mode is initiated and a user provides an input to the transmitter and control circuit to identify the remote control system to be controlled in a manner similar to that described above with respect of  FIG. 8   a . In the embodiment of  FIG. 8   b , once the control circuit of the transmitter receives the system identification, the variable code characteristics for the system are retrieved and the rolling code and frequency are used to create a RF control signal that is transmitted to the remote control system at block  812 . The transmitter waits for user feedback regarding whether the remote system was activated by the transmission at block  814 . A user may provide feedback by, for example, actuating a push button, a combination of button presses, a menu selection, a time period between button presses, etc. If the remote control system is activated (block  814 ), the rolling code characteristics used are stored at block  818  and associated with a switch or other input device of the transmitter. The switch or other input device is also associated with the remote control system and may be used to initiate subsequent transmissions to the remote control system. If the remote control system is not activated (block  814 ), the transmitter may prompt the user to reenter or reselect the system or to provide additional input regarding the remote control system at block  816 . The transmitter may then re-transmit an RF control signal (block  8812 ) to the remote control system. As mentioned above, the receiver  37  (see  FIG. 3 ) of the remote control system should be trained to accept the transmitter as a valid transmitter. 
         [0034]    It is also important to note that the construction and arrangement of the elements of the trainable transmitter as shown in the preferred and other exemplary embodiments are illustrative only. Although only a few embodiments of the present invention have been described in detail in this disclosure, those skilled in the art who review this disclosure will readily appreciate that many modifications are possible (e.g., variations in sizes, dimensions, structures, shapes and proportions of the various elements, values of parameters, mounting arrangements, circuit elements, etc.) without materially departing from the novel teachings and advantages of the subject matter recited herein. Accordingly, all such modifications are intended to be included within the scope of the present invention as described herein. The order or sequence of any process or method steps may be varied or re-sequenced according to alternative embodiments. Other substitutions, modifications, changes and/or omissions may be made in the design, operating conditions and arrangement of the preferred and other exemplary embodiments without departing from the exemplary embodiments of the present invention as expressed herein.