1. Field of the Invention
This invention relates to ID allocation techniques. More particularly, this invention relates to methods for allocating identification nomenclature to AV/C entities.
2. The Prior Art
The IEEE 1394 multimedia bus standard is to be the “convergence bus” bringing together the worlds of the PC and digital consumer electronics. It is readily becoming the digital interface of choice for consumer digital audio/video applications, providing a simple, low-cost and seamless plug-and-play interconnect for clusters of digital A/V devices, and it is being adopted for PCs and peripherals.
The original specification for 1394, called IEEE 1394-1995, supported data transmission speeds of 100 to 400 Mbits/second. Most consumer electronic devices available on the market have supported either 100 or 100/200 Mbits/second; meaning that plenty of headroom remains in the 1394 specification. However, as more devices are added to a system, and improvements in the quality of the A/V data (i.e., more pixels and more bits per pixel) emerge, a need for greater bandwidth and connectivity flexibility has been indicated.
The 1394a specification (pending approval) offers efficiency improvements, including support for very low power, arbitration acceleration, fast reset and suspend/resume features. However, current methods for allocating ID's to new devices are both manual and crude especially when considered in the context of “hot swappable” devices.
As indicated in the AV/C Digital Interface Command Set General Specification (hereinafter, the General Specification): an AV unit is the physical instantiation of a consumer electronic device, e.g., a camcorder or a VCR, within a Serial Bus node; an AV subunit is an instantiation of a virtual entity that can be identified uniquely within an AV unit and offers a set of coherent functions; an AV/C is an Audio/video control; and a plug is a physical or virtual end-point of connection implemented by an AV unit or subunit that may receive or transmit isochronous or other data—plugs may be Serial Bus plugs, accessible through the PCR's (PCR: is a Plug Control Register, as defined by IEC 61883, Digital Interface for Consumer Electronic Audio/Video Equipment; further, an iPCR: is an input plug PCR, as defined by IEC 61883 and an oPCR: is an output plug PCR, as defined by IEC 61883) they may be external, physical plugs on the AV unit; or they may be internal virtual plugs implemented by the AV subunits.
An AV/C target implementation is made up of multiple entities including AV/C subunits and plugs. Each separate entity has an associated ID number used to specify that entity when an AV/C controller sends a command acting upon that entity.
The implementation of the AV/C target device must ensure that the IDs used for the target entities are unique among all entities of the same type. In addition they must be between 0 and n−1 where n is the number of a particular type of entity. Thus an AV/C subunit and plug may both have an ID of 0, but two AV/C subunits may not both have an ID of 0.
The old methods for implementing AV/C target entities are to statically allocate the IDs for each entity. Thus, when implementing the software for the entities, the number of entities must be known in advance. Updating the implementation to support a new entity requires manual allocation of another ID. In addition, removal of an entity requires manual deallocation of its ID, and if its ID (m) is less than n−1 (e.g., 0≦m<n−1), thus, residing somerwhere in the middle of the identification listings, the IDs for the entities between m+1 and n−1 must be manually decremented.
Modularity of software components, and independence of implementation between software components, are elements of good software design. However, the manual allocation of IDs described above prevents total independence between the implementations of the AV/C entities. In addition, the manual allocation prevents an implementation of dynamic AV/C entities as would be needed when components are hot swapped into an AV/C device.
This invention provides a means of automatically and dynamically allocating IDs for AV/C entities. The IDs do not need to be determined during the implementation of the entities. The IDs are determined at run time. This has the benefit of allowing an implementation of dynamic AV/C entities.
This invention provides an AV/C entity allocation service which maintains a list of the currently allocated IDs. This list is initially empty. When an AV/C entity is initialized, it calls the allocation service to allocate an ID which it then uses for the initialized entity. The allocation service allocates an ID by starting with an ID of 0. The service then searches its allocated ID list to see if the current ID has already been allocated. If it finds the ID in the list, it increments its current ID and searches the list again. If it does not find the ID, it adds the current ID to the allocated list and returns the ID to the entity.
Persons of ordinary skill in the art will realize that the following description of the present invention is illustrative only and not in any way limiting. Other embodiments of the invention will readily suggest themselves to such skilled persons having the benefit of this disclosure.
Generally speaking, units, plugs, and subunits are known as entities. According to the General Specification, each entity must have a unique ID associated with it within its class. Referring now to
Since each entity must have a unique ID associated with it, the AV/C unit would have an ID0 (not shown since no other unit are depicted in
To allocate these IDs in an ordered fashion, ID allocator service 28 lies within a memory space, such as an EEPROM. Referring now to
To accomplish this task, and referring now to
In use and operation, another exemplary schematic 210 is depicted in
It will be understood that included within the STB 212 will be a USB AV/C subunit software module for detecting USB devices on the USB buses. Once a device is connected to one of the USB ports, the USB software will detect the entity and make a call to the ID allocator service as described above.
In this example, then, the camera 214 is first connected via an appropriate USB cable to port 218. The system is turned on, and the new entity is detected by the USB software which builds an AV/C camera subunit 222 and a virtual plug 228 to put in operative communication with port 218. Plug 228 is an input plug, whereas plugs 232 and 240 are output plugs, and hence AV/C considers them to be of different classes, and as such separate class IDs are associated therewith. The USB software, thus, makes a call to the ID allocator service 226 which initiates its recursive search for an ID as discussed with respect to
Thereafter, a second camera 216 is added to the STB 212 at port 220. Another call is made to the ID allocator service 226. The ID allocator service then assigns the next available ID, which is ID1 in this case, to the new subunit 224. Again, three virtual plugs are needed to bridge the camera with the televisions 238 and 248 at ports 236 and 246 respectively. Thus, a first virtual input plug 230 is assigned ID0. Then a first virtual output plug 242 is assigned ID0, while a second virtual output plug 234 is assigned ID1. Without the allocator 226, the second subunit could not be built without manually assigning a new ID. As one can appreciate, such is quite a cumbersome and user unfriendly task. Furthermore, if, thereafter, camera 214 were unplugged from plug 218, the IDs associated therewith would be removed from the ID allocator list and be available for future use automatically in the present system.
While embodiments and applications of this invention have been shown and described, it would be apparent to those skilled in the art that many more modifications than mentioned above are possible without departing from the inventive concepts herein. The invention, therefore, is not to be restricted except in the spirit of the appended claims.
This application is a continuation of U.S. patent application Ser. No. 09/432,872, filed Nov. 2, 1999 now U.S. Pat. No. 6,631,426.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4156798 | Doelz | May 1979 | A |
| 4194113 | Fulks et al. | Mar 1980 | A |
| 5014262 | Harshavardhar | May 1991 | A |
| 5274631 | Bhardwaj | Dec 1993 | A |
| 5343461 | Barton et al. | Aug 1994 | A |
| 5394556 | Oprescu | Feb 1995 | A |
| 5452330 | Goldstein | Sep 1995 | A |
| 5490253 | Laha et al. | Feb 1996 | A |
| 5495481 | Duckwall | Feb 1996 | A |
| 5563886 | Kawamura et al. | Oct 1996 | A |
| 5568641 | Nelson | Oct 1996 | A |
| 5583922 | Davis et al. | Dec 1996 | A |
| 5621659 | Matsumoto et al. | Apr 1997 | A |
| 5630173 | Oprescu | May 1997 | A |
| 5640595 | Baugher et al. | Jun 1997 | A |
| 5684715 | Palmer | Nov 1997 | A |
| 5701476 | Fenger | Dec 1997 | A |
| 5701492 | Wadsworth et al. | Dec 1997 | A |
| 5712834 | Nagano et al. | Jan 1998 | A |
| 5719862 | Lee et al. | Feb 1998 | A |
| 5784648 | Duckwall | Jul 1998 | A |
| 5802048 | Duckwall | Sep 1998 | A |
| 5802057 | Duckwall et al. | Sep 1998 | A |
| 5809331 | Staats et al. | Sep 1998 | A |
| 5832298 | Sanchez et al. | Nov 1998 | A |
| 5835761 | Ishii et al. | Nov 1998 | A |
| 5867730 | Leyda | Feb 1999 | A |
| 5875301 | Duckwall et al. | Feb 1999 | A |
| 5938764 | Klein | Aug 1999 | A |
| 5968152 | Staats | Oct 1999 | A |
| 5970052 | Lo et al. | Oct 1999 | A |
| 5987605 | Hill et al. | Nov 1999 | A |
| 6032202 | Lea et al. | Feb 2000 | A |
| 6038625 | Ogino et al. | Mar 2000 | A |
| 6070187 | Subramaniam et al. | May 2000 | A |
| 6073206 | Piwonka et al. | Jun 2000 | A |
| 6122248 | Murakoshi et al. | Sep 2000 | A |
| 6131129 | Ludtke | Oct 2000 | A |
| 6133938 | James | Oct 2000 | A |
| 6138196 | Takayama et al. | Oct 2000 | A |
| 6141702 | Ludtke et al. | Oct 2000 | A |
| 6141767 | Hu et al. | Oct 2000 | A |
| 6157972 | Newman et al. | Dec 2000 | A |
| 6160769 | Ohnuki et al. | Dec 2000 | A |
| 6167532 | Wisecup | Dec 2000 | A |
| 6173327 | De Borst et al. | Jan 2001 | B1 |
| 6192189 | Fujinami et al. | Feb 2001 | B1 |
| 6202210 | Ludtke | Mar 2001 | B1 |
| 6233615 | Van Loo | May 2001 | B1 |
| 6233624 | Hyder et al. | May 2001 | B1 |
| 6247083 | Hake et al. | Jun 2001 | B1 |
| 6253114 | Takihara | Jun 2001 | B1 |
| 6253255 | Hyder et al. | Jun 2001 | B1 |
| 6260063 | Ludtke et al. | Jul 2001 | B1 |
| 6266334 | Duckwall | Jul 2001 | B1 |
| 6266701 | Sridhar et al. | Jul 2001 | B1 |
| 6282597 | Kawamura | Aug 2001 | B1 |
| 6295479 | Shima et al. | Sep 2001 | B1 |
| 6308222 | Krueger et al. | Oct 2001 | B1 |
| 6311228 | Ray | Oct 2001 | B1 |
| 6345315 | Mishra | Feb 2002 | B1 |
| 6353868 | Takayama et al. | Mar 2002 | B1 |
| 6385679 | Duckwall et al. | May 2002 | B1 |
| Number | Date | Country |
|---|---|---|
| 1 085 706 | Mar 2001 | EP |
| 1 085 706 | Oct 2002 | EP |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 09432872 | Nov 1999 | US |
| Child | 10607736 | US |