1. Field of the Invention
The present invention relates to a load control system comprising a plurality of load control devices for controlling the amount of power delivered to a plurality of electrical loads from an AC power source, and more particularly, to a communication protocol for an interprocessor link providing for communication of digital messages between a plurality of processors of a lighting control system.
2. Description of the Related Art
Typical load control systems are operable to control the amount of power delivered to an electrical load, such as a lighting load or a motor load, from an alternating-current (AC) power source. A load control system generally comprises a plurality of control devices coupled to a communication link to allow for communication between the control devices. The control devices of a lighting control system include load control devices operable to control the amount of power delivered to the loads in response to digital messages received across the communication link or local inputs, such as user actuations of a button. Further, the control devices of a lighting control system often include one or more keypad controllers that transmit commands across the communication link in order to control the loads coupled to the load control devices. An example of a lighting control system is described in greater detail in commonly-assigned U.S. Pat. No. 6,803,728, issued Oct. 12, 2004, entitled SYSTEM FOR CONTROL OF DEVICES, which is incorporated herein by reference.
The lighting control system 10 further comprises a processor 22, which controls the operation of the lighting control system and thus the amount of power delivered to the lighting loads 16 by the load control modules 14. The processor 22 is operable to communicate with the module interface 18 of the power panel 12 via a power panel link 24. Accordingly, the module interface 18 is operable to cause the load control modules 14 to turn off and on and to control the intensity of the lighting loads 16 in response to digital messages received from the processor 22. The processor 22 is operable to be coupled to a plurality of power panels via the power panel link 24.
In addition to being coupled to the power panel link 24, the central processor 22 is also coupled to a control station link 26 for communication with a plurality of control stations 28 (i.e., wallstations or keypads). The control stations 28 allow users to provide inputs to the lighting control system 10. The processor 22 is operable to control the lighting loads 16 in response to digital messages received from the control stations 28.
The lighting control system 10 as shown in
However, these existing Internet protocols do not provide an ideal solution for communication between multiple processors 22, 32 of the lighting control system 10. For example, TCP provides for reliable, in-order delivery of digital messages, but does not allow for multicasting (i.e., broadcasting) of digital messages and results in high traffic on the Ethernet link 34 of digital messages that are transmitted to multiple control devices. In contrast, UDP provides for multicasting and broadcasting, but does not guarantee reliable delivery of digital messages. Thus, there is a need for a communication protocol for an Ethernet link of a load control system that offers reliable communications and allows for multicasting of digital messages.
According to the present invention, a load control system comprises a plurality of control devices (e.g., processors) and a communication link (e.g., an interprocessor communication link) coupled to each of the control devices. Each of the control devices is characterized by a unique individual address (e.g., an individual processor address), while a subset (e.g., a sub-system) of the control devices are characterized by an identical multicast address (e.g., an sub-system multicast internet protocol address). Each of the control devices are operable to transmit an initial digital message having a target address (e.g., a target internet protocol address) on the communication link, re-transmit the initial digital message on the communication link only if the target address of the initial digital message is equal to the multicast address, and transmit an acknowledgement message in response to receiving the initial digital message. Each control device is further operable to determine if acknowledgement messages are received from each of the control devices from which acknowledgement messages are expected during a predetermined amount of time after transmitting the initial digital message, and transmit a retry message in response to determining that the acknowledgement messages were not received from each of the control devices from which acknowledgement messages were expected during the predetermined amount of time. Preferably, the first retry message comprises the initial digital message along with a bitmap having bits set to represent the control devices from which the first control device did not receive an acknowledgement message.
According to another embodiment of the present invention, a load control system comprises a plurality of sub-systems, a plurality of processors included in each of the sub-systems, and an interprocessor link coupling together the processors. Each of the processors are operable to transmit an initial digital message to all of the processors of a specific sub-system. Each processor is operable to transmit an acknowledgement message in response to receiving the initial digital message. Each processor is further operable to determine if acknowledgement messages are received from each of the processors from which acknowledgements messages were expected during a predetermined amount of time after transmitting the initial digital message, and transmit a retry message in response to determining that the acknowledgement messages were not received from each of the processors from which acknowledgements messages were expected during the predetermined amount of time.
The present invention further provides a method of communicating a digital message in a load control system having a plurality of control devices (including first, second, and third control devices) coupled together via a communication link. Each of the control devices is characterized by a unique individual address, and a subset of the control devices are characterized by an identical multicast address. The method comprises the steps of: (1) the first control device maintaining a list of the individual addresses of each of the control devices on the communication link; (2) the first control device transmitting an initial digital message on the communication link, the initial digital message including a target address; (3) the second control device receiving the initial digital message; (4) the second control device re-transmitting the initial digital message on the communication link if the target address of the initial digital message is equal to the multicast address of the control devices; (5) the second control device transmitting an acknowledgement message to the first control device in response to receiving the initial digital message; (6) the first control device waiting for a predetermined amount of time after the first control device transmitted the initial digital message to receive an acknowledgement message from the second and third control devices; (7) the first control device determining that an acknowledgment message was not received from the third control device; and (8) the first control device transmitting a first retry message after the end of the predetermined amount of time in response to determining that the first control device did not receive the acknowledgement message from the third control. Preferably, the first retry message comprises the initial digital message along with a bitmap having bits set to represent the control devices from which the first control device did not receive an acknowledgement message.
In addition, the present invention provides a processor for a load control system having a plurality of processors coupled together via a communication link, where each of the processors is characterized by a unique individual address, and a subset of the processors are characterized by an identical multicast address. The processor comprises a managed Ethernet switch adapted to be coupled to the communication link, a controller coupled to the managed Ethernet switch, and a memory coupled to the controller. The managed Ethernet switch is operable to store the multicast address and re-transmit a received digital message on the communication link if a target address of the received digital message is equal to the multicast address. The controller is operable to transmit an initial digital message on the communication link, and receive a plurality of acknowledgement messages in response to the initial digital message. The memory stores the individual addresses of at least one of the processors on the communication link. The controller is operable to determine if acknowledgement messages are received from each of the control devices having an individual address stored in the memory during a predetermined amount of time after transmitting the initial digital message, and transmit a retry message in response to determining that the acknowledgement messages were not received from each of the control devices having an individual address stored in the memory during the predetermined amount of time.
According to another aspect of the present invention, a method of communicating a digital message in a load control system having a plurality of control devices coupled together via a communication link comprises the steps of: (1) transmitting an initial digital message on the communication link; (2) determining that an acknowledgment message was not received from at least one of the control devices in response to the initial digital message; and (3) transmitting a retry message in response to determining that the acknowledgement message was not received from the at least one of the control devices, the retry message comprising the initial digital message along with data representative of the at least one control device from which the acknowledgement message was not received.
Other features and advantages of the present invention will become apparent from the following description of the invention that refers to the accompanying drawings.
The foregoing summary, as well as the following detailed description of the preferred embodiments, is better understood when read in conjunction with the appended drawings. For the purposes of illustrating the invention, there is shown in the drawings an embodiment that is presently preferred, in which like numerals represent similar parts throughout the several views of the drawings, it being understood, however, that the invention is not limited to the specific methods and instrumentalities disclosed.
The processors 120A-124C are all coupled together via an interprocessor communication link 130, e.g., an Ethernet link, which allows the processors to communicate digital messages with each other. One of the processors 120A, 122A, 123A of each of the sub-systems 110, 112, 114 is coupled to an unmanaged Ethernet hub 132, i.e., an unmanaged Ethernet switch, to allow for communication between the sub-systems. The Ethernet hub 132 simply re-transmits any digital messages received on one portion of the interprocessor link 130 on the other portions of the interprocessor link. The load control system 100 also includes an application server 140, e.g., a PC, which executes a graphical user interface (GUI) software for allowing a user of the load control system 100 to configure, monitor, and control the operation of the load control system. The application server 140 is operable to transmit and receive digital messages with the processors 120A-124C of each of the sub-systems 110, 112, 114.
The processors 120A, 120B are operable to communicate with the multiple-zone lighting control device 154 and the electronic drive units 160 via wired serial communication links 162, e.g., RS-485 digital communication links. The digital ballasts 156 are coupled to separate digital ballast communication links 164, e.g., Digital Addressable Lighting Interface (DALI) communication links, which are coupled to the wired serial communication links 162 via digital ballast controllers (DBC) 166. Each digital ballast controller 166 is operable to receive digital signals on the connected wired serial communication link 162 and to re-transmit the received digital signals on the connected digital ballast communication link 164 (and vice versa). The digital ballast controllers 166 also assist in the programming of the digital ballasts 156 during configuration of the load control system 100.
The sub-system 110 also includes wallstations 168, an occupancy sensor 170, a daylight sensor 172, and an infrared (IR) sensor 174. The infrared sensor 174 is operable to receive IR signals 178 from a handheld remote control 176, e.g., a personal digital assistant (PDA). As shown in
The processor 120A also comprises a power supply 184, which receives, for example, a 24-volt DC voltage from an external power supply (not shown) at a voltage supply terminal 186. The power supply 184 generates a DC supply voltage VCC (e.g., 5 VDC) for powering the controller 180 and other low-voltage circuitry of the processor 120A. Alternatively, the power supply 184 may comprise an AC/DC power supply for receiving an AC voltage and generating a DC voltage for powering the controller 180.
The processor 120A has two physical Ethernet connections 188A, 188B to the interprocessor link 130 and a managed Ethernet switch 190 (e.g., part number KSZ8893MQL, manufactured by Micrel, Inc.) coupled between the two connections. The managed Ethernet switch 190 is operable to receive a digital message on one of the two connections to the interprocessor link 130 (e.g., the connection 188A), re-transmit the received digital message on the other connection (e.g., the connection 188B), and forward the received digital message to the controller 180, as will be described in greater detail below.
The controller 180 is also coupled to a communication circuit 192, e.g., an RS-485 transceiver, which is connected to one of the wired serial communication links of the sub-system 110. The controller 180 is operable to transmit digital messages on the wired serial communication link 162 in response to digital message received on the interprocessor link 130 (and vice versa).
The processors 120A-120C of the subsystem 110 are operable to communicate with each other by transmitting and receiving digital message across the interprocessor link 130 using an interprocessor link communication protocol. For example, the second processor 120B of the sub-system 110 is operable to transmit a digital message to the first processor 120A to control the intensities of incandescent lamps 152 connected to the multi-zone lighting control device 154 in response to an actuation of a button of the wallstation 168 connected to the second processor 120B.
According to the present invention, the interprocessor link protocol provides a robust communication protocol that allows for reliable delivery and multicasting of digital messages. The interprocessor link protocol is implemented as one of a number of protocol layers, which operate together to communicate the digital messages between the processors 120A-124C. The interprocessor link protocol layer is implemented on top of a lower-level transport layer, preferably, the industry-standard User Datagram Protocol (UDP), in addition to other protocol layers, such as, for example, the Transmission Control Protocol (TCP) layer and the Ethernet layer. The lower-level layers operate to translate the data from the interprocessor link protocol layer to a form that can be physically transmitted on the interprocessor link 130. Each processor 120A-124C of the load control system 100 is assigned a 32-bit Internet Protocol (IP) address, which is used by the lower-level layers to transport the digital messages between the processors. Each digital message transmitted using UDP includes a source IP address and a target IP address.
An application layer sits on top of the interprocessor link protocol layer and operates to determine what digital messages need to be transmitted across the interprocessor link 130 and what needs to be done with digital messages received via the interprocessor link 130.
Since the interprocessor link protocol layer is implemented on top of UDP, which supports multicasting and broadcasting, each processor 120A-120C of the first sub-system are operable to transmit a digital message to a single processor (e.g., the second processor 120B), and to broadcast a digital message to all of the processors of the first sub-system 110 or all of the processors 120A-124C in the load control system 100. Each of the processors 120A-120C of the first sub-system 100 is characterized by an identical sub-system multicast IP address such that the processors can broadcast digital messages to all of the other processors of the first sub-system. The processors 122A-122C of the second sub-system 112 and the processors 124A-124C of the third subsystem 114 have different sub-system multicast IP addresses than the processors 120A-120C of the first sub-system 110. In addition, each of the processors 120A-124C is characterized by a system broadcast IP address, which allows the any of the processors to transmit digital messages to all of the processors in the load control system 100.
The application server 140 includes the individual IP addresses of all of the processors 120A-124C, the sub-system multicast IP addresses of each of the sub-systems 110, 112, 114, and the system broadcast IP address of the load control system 100. Accordingly, the application server 140 is operable to transmit digital messages to the processors 120A, 120B, 120C via the interprocessor link 130 to control and configure the lighting loads and the motorized window treatments. The application server 140 also listens to all digital messages transmitted across the interprocessor link 130 and updates the GUI software to display the status of the load control system 100 on a display screen of the application server.
During configuration of the load control system 100, the application server 140 is operable to communicate with the processors 120A-124C using a configuration broadcast address, which is stored in every processor during manufacturing of the processor. The application server 140 uses the configuration broadcast address to discover the MAC addresses of all of the processors 120A-124C using an autodiscovery procedure, which is described in greater detail in co-pending commonly-assigned U.S. patent application Ser. No. 11/870,783, filed Oct. 11, 2007, entitled METHOD OF BUILDING A DATABASE OF A LIGHTING CONTROL SYSTEM, the entire disclosure of which is hereby incorporated by reference. The MAC addresses are then used to assign the IP addresses of the processors 120A-124C and the sub-system multicast IP addresses of the sub-systems 110, 112, 114.
The managed Ethernet switch 190 of each of the processors 120A-124C includes an internal lookup table for storage of an IP address list of the individual IP addresses of each of the processors of its sub-system, the multicast IP address of its sub-system, and the system multicast IP address. The managed Ethernet switch 190 builds the IP address list of the individual IP addresses of the processors 120A-124C in response to the digital message transmitted across the interprocessor link, while the multicast IP address is directly assigned by the application server 140. Preferably, each of the processors 120A-124C is guaranteed to transmit at least one digital message within a predetermined message time period TMSG, e.g., approximately every 30 seconds, as will be described in greater detail with reference to
When a digital message is received on one of the two connections to the interprocessor link 130 (e.g., the connection 188A), the managed Ethernet switch 190 re-transmits the digital message on the other connection (e.g., the connection 188A) only if the target IP address of the received digital message is any of the individual IP addresses, the sub-system multicast IP address, or the system broadcast IP address stored in the internal lookup table. Further, the managed Ethernet switch 190 only forwards a digital message to the controller 180 if the target address of the digital message is the individual IP address of the specific processor in which the managed Ethernet switch is located, or one of the sub-system multicast IP address, or the system broadcast IP address from the internal lookup table.
Preferably, only one of the processors 120A, 122A, 124A of each of the sub-systems 110, 112, 114 is connected to the Ethernet hub 132, such that the processor is operable to provide address filtering of the digital signals received from the Ethernet hub. The address filtering prevents digital messages having a target IP address that is not one of the individual IP addresses of the processors of the sub-system, the sub-system multicast IP address of the sub-system, or the system broadcast IP address from being transmitted to the other processors of the sub-system, thus minimizing the number of transmissions in each sub-system. For example, if the processor 120A receives a digital message having a target IP address that is not one of the individual IP addresses of the processors 120B, 120C, the multicast IP address of the sub-system 110, or the broadcast IP address of the load control system 100, then the processor simply does not re-transmit the digital message.
In addition to the 32-bit IP addresses used by the transport layer, the processors 120A-124C of the load control system 100 are also characterized by 8-bit processor (PROC) addresses. Specifically, each processor 120A-124C stores an 8-bit individual PROC address, an 8-bit sub-system multicast PROC address, and an 8-bit system broadcast PROC address. The application server 140 uses the 32-bit IP addresses of each of the processors 120A-124C to assign the various 8-bit PROC addresses to the processors 120A-124C. The individual PROC addresses may range, for example, from 0-127, such that each processor 120A-124C is assigned a unique individual PROC address. All of the processors 120A-120C of the first sub-system 110 are assigned an identical multicast PROC address, while the processors 122A-122C of the second sub-system 112 and the processors 124A-124C of the third sub-system 114 are assigned respective second and third multicast PROC addresses. Since the digital messages intended for different sub-systems are filtered using the 32-bit IP addresses (as described above) of the processors 120A-124C, the processors of each of the sub-systems 110, 112, 114 are preferably all assigned the same multicast PROC address, e.g., 255 (i.e., 0xFF). Finally, all of the processors 120A-124C of the load control system 100 are assigned an identical system broadcast PROC address.
Since UDP does not provide for guaranteed delivery of the digital messages, the interprocessor link protocol includes provisions to allow the processors 120A-120C to transmit acknowledgement (ACK) messages in response to receiving digital messages. Each of the processors 120A-120C maintains a list in memory of the individual PROC addresses of all of the processors in its sub-system 110, 112, 114 (i.e., a processor list). Similar to the managed Ethernet switch 190, the controller 180 of each of the processors 120A-124C builds the processor list in response to the received digital messages. If any of the processors 120A-124C receive a digital message from a processor whose individual address is not included in the processor list, the processor that received the digital message adds the individual address of the newly-found processor into the processor list.
If a first processor transmits an initial digital message using a multicast PROC address and does not receive acknowledgement messages from all of the processors having individual PROC addresses in the processor list in the memory 182, the first processor transmits a retry message. Preferably, only those processors from which the first processor did not receive an acknowledgement message transmit acknowledgement messages in response to the retry message. Specifically, each retry message includes an ACK bitmap, which is representative of the processors from which the first processor did not receive acknowledgement messages and need to transmit acknowledgement messages in response to the retry message. If a processor receives a retry message, but has already processed the initial digital message, the processor does not process the retry message independent of whether the processor needs to transmit an acknowledgement message in response to the retry message.
Further, the processors are operable to update the processor lists of individual PROC addresses in response to the digital messages transmitted on the interprocessor link 130. If a first processor transmits an initial digital message and a predetermined number of retry messages (e.g., two retry messages) to a second processor and does not receive any acknowledgement messages from the second processor, the first processor is operable to remove the individual PROC address of the second processor from the processor list stored in the memory 182 to that the first processor no longer expects to receive acknowledgement message from the second processor. If the first processor receives a digital message from a third processor, which has a individual PROC address that is not in the processor list in the memory 182, the first processor is operable to add the individual PROC address of the third processor to the processor list.
When a processor 120A-124C transmits a command or event message, the processor does not transmit any new command, event, or data messages until the processor either receives all of the acknowledgement messages or transmits the predetermined number of retry messages (i.e., two retry messages). Accordingly, each processor 120A-124C only deals with only one transmitted command, event, or data message at a time, which ensures that the processor has finished processing the digital message before moving onto the next digital message. Each processor 120A-124C maintains a sequence number, which is included with each new command, event, and data message and is incremented when each new command, event, or data message is transmitted by the processor.
The interprocessor link protocol supports different types of digital messages: command messages, event messages, data messages, acknowledgement messages, acknowledgement with data messages, and retry messages. Command messages are transmitted to cause the receiver to perform an action (e.g., controlling the intensity of the connected lighting load to a desired light intensity). Event messages are transmitted in response to inputs to the load control system 100 (e.g., an actuation of a button of a wallstation 168 or a change of state of an occupancy sensor). Data messages are transmitted to provides updates of system information (e.g., present light intensity, daylight sensor reading, etc.) to the other processors 120A-124C and the application server 140. Acknowledgement messages are only transmitted in response to receiving a command or an event message. Acknowledgement messages may include data (i.e., acknowledgement with data messages) if the acknowledgement message is being transmitted in response to a command message that is a request for data. Retry messages are transmitted if acknowledgement messages are not received from all processors in the sub-system. Additionally, the interprocessor protocol could include other types of digital messages.
Preferably, all command, event, data, and retry messages transmitted by the processors 120A-124C having target IP addresses equal to the multicast IP address of the sub-system 110, 112, 114 in which the transmitting processor is located. However, each acknowledgement message and acknowledgement with data message is transmitted having the target IP address equal to the individual IP address that was included as the source IP address of the received command, event, data, or retry message. For example, the managed Ethernet switch 190 of the first processor 120A only forwards an acknowledgement message to the controller 180 if the target IP address of the acknowledgement message is equal to the individual IP address of the first processor. Accordingly, acknowledgement messages and acknowledgement with data messages are only processed by the controllers 180 that need to receive the acknowledgement messages.
Each command, event, or data message begins with an eight-byte header, which is shown in
Next, the header includes an 8-bit sender PROC address (i.e., the individual PROC address of the processor 120A-124C that is transmitting the digital message) and an 8-bit target PROC address. The target PROC address may comprise the individual PROC address of one of the processors 120A-124C, the sub-system multicast PROC address of one of the sub-systems 110, 112, 114, or the system broadcast PROC address of the entire load control system 100. Finally, the header includes the two-byte sequence number, which is different for each new initial transmission of a command, event, or data message by one of the processors 120A-124C. The acknowledgement messages include the sequence number of the command or event message for which the acknowledgement message is being transmitted. The retry messages include the sequence number of the initial command or event message.
Next, the controller 180 waits to receive acknowledgment messages from all of the processors having an individual PROC address in the processor list stored in the memory 182 at step 216, or until a timeout (e.g., 400 msec) expires at step 218. If the controller 180 receives acknowledgment messages from all of the processors having individual PROC addresses in the processor list in the memory 182 at step 216, the controller determines at step 220 as to whether any acknowledgement messages were received from processors that have an individual PROC address that is not presently in the processor list at step 220. If so, the controller 180 adds the individual PROC address of the newly-found processor to the processor list at step 222. Since all of the expected acknowledgment messages were received at step 216, the controller 180 increments its sequence number at step 224 and the transmitting procedure 200 loops around to wait for the next digital message to transmit at step 210.
If the timeout expires at step 218 before the controller 180 receives acknowledgement messages from all of the processors at step 216, the controller increments a No_ACK counter at step 226 for each of the processors from which acknowledgement messages were not received. If the controller 180 received an acknowledgement message from any processors having an individual PROC address presently not in the processor list at step 228, the controller adds the individual PROC address of the new processor to the processor list at step 230.
If the No_ACK counters of the processors from which acknowledgement messages were not received are less than a maximum counter value CMAX (e.g., two) at step 232, the controller 180 builds a retry message at step 234 and transmits the retry message at step 236. For example, the processor constructs a retry message (as shown in
If the No_ACK counters of the processors from which acknowledgement messages were not received are not less than the maximum counter value CMAX at step 232, the controller 180 removes the individual PROC addresses of the processors from which acknowledgement messages were not received from the processor list in the memory 182 and clears the No_ACK counters at step 238. Finally, the controller 180 increments the sequence number at step 224 and the transmitting procedure 200 loops around to wait for the next digital message to transmit at step 210.
If the message time period TMSG expires at step 212 before the controller 180 has a digital message to transmit at step 210, the controller builds a data message at step 240 and transmits the data message on the interprocessor link 130 at step 242. The controller 180 may construct the data message (as shown in
If the received digital message is not a data message at step 312 but is a command or event message at step 318 and the ACK requirement flag is set in the header of the received digital message at step 320, the controller 180 builds an acknowledgement message at step 322 and transmits the acknowledgement message at step 324. For example, if the controller 180 receives a digital message having a “go to preset” command, the controller builds an acknowledgement message comprising simply a header (as shown in
If the received digital message is not a data message at step 318, but is a retry message at step 324, a determination is made at step 326 as to whether the appropriate bit for the receiving processor is set in the ACK bitmap of the retry message. If so, the controller 180 builds an appropriate acknowledgement message at step 328 and transmits the acknowledgement message at step 330.
If the stored sequence number for the processor from which the digital message was received (i.e., as stored in the memory 182) is equal to the present sequence number from the received digital message at step 332, the controller 180 has already received and processed the digital message. Accordingly, the receiving procedure 300 simply exits. If the present sequence number from the received digital message is not equal to the stored sequence number at step 332, but is equal to one more than the stored sequence number at step 334, the controller 180 determines that the last digital message was missed. Thus, the controller 180 processes the command or event from the received retry message at step 326 and updates the stored sequence number at step 316. However, if the present sequence number is equal to the stored sequence number at step 332 or one more than the stored sequence number at step 334, then a conclusion is made at step 336 that the controller 180 is out of sync with the communications of the interprocessor link 130. If the controller 180 determines at step 338 that the received digital message is from a processor of which the individual PROC address is not in the processor list, the controller add the individual PROC address of the newly-found processor to the processor list at step 340. Finally, the receiving procedure 300 exits.
Although the present invention has been described in relation to particular embodiments thereof, many other variations and modifications and other uses will become apparent to those skilled in the art. It is preferred, therefore, that the present invention be limited not by the specific disclosure herein, but only by the appended claims.
This application is based on and claims priority to U.S. Provisional Application Ser. No. 60/985,037, filed Nov. 2, 2007, entitled INTERPROCESSOR COMMUNICATION LINK FOR A LOAD CONTROL SYSTEM. The entire contents of which are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60985037 | Nov 2007 | US |