Configuration of IEEE 1394 Bus
Asynchronous Transaction Idle Periods
Some non-Basler camera models have problems with fast back-to-back asynchronous IEEE 1394 bus transactions. They react with many busy responses leading to poor performance or even worse, they may completely hang up. Inserting idle periods between consecutive asynchronous transactions (register accesses) has proven to ease these problems.
In existing versions of the BCAM device driver, the problems were addressed by having fixed, pre-configured asynchronous transaction idle periods for specific camera models. The fixed, pre-configured idle periods worked well, but the number of camera models for which we had to consider idle times increased and we reached the point where configurability was advisable.
With BCAM 1.8 Build 43 and up, pre-configured asynchronous transaction idle times are no longer used. Instead, asynchronous transaction idle times can now be configured to depend on a camera's vendor and model name or can be configured globally.
Asynchronous transaction idle times are configured in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bcam\Config registry branch. Rooted there, a tree of settings is defined where more specialized entries (located towards the leaves) are stronger than the more common entries (located towards the root) and become operative eventually. At all levels, asynchronous transaction idle periods are set in microsecond units by DWORD value entries with the name AsyncIdlePeriod_us. Missing entries evaluate to zero.
Starting at the configuration root HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bcam\Config is a global asynchronous transaction idle time in microseconds that can be configured by a DWORD value entry AsyncIdlePeriod_us.
This idle time value applies to all camera devices that have no better match in the configuration tree.

The next level of configuration is vendor name related and is located in the vendor keys below HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bcam\Config. A vendor specific asynchronous transaction idle time can be assigned by a DWORD value AsyncIdlePeriod_us entry below the registry key having that vendor's name.
This idle time value applies to all camera devices whose vendor name matches the name of the registry key containing the value entry.

The outermost level of configuration is vendor and model name related and is represented by the model name registry keys below the vendor name registry keys.
If the key name matches the model name and the name of the parent key matches the vendor name of a camera device, the settings defined below these keys become operational and trump any less specific assignment of the same property.

Consider the following example:
In HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bcam\Config, there is no value entry named AsyncIdlePeriod_us. But there are child keys named VendorA and VendorB. The VendorA key has the DWORD value entry AsyncIdlePeriod_us set to 1500. Also, it has ModelA and ModelB child registry key entries. ModelA has an AsyncIdlePeriod_us entry of 2000. ModelB has an AsyncIdlePeriod_us entry of 0. The VendorB registry key has a ModelC child key containing a DWORD value entry AsyncIdlePeriod_us set to 2000.
This results in the following settings:
All cameras from VendorA are configured to have an asynchronous idle period of 1500 µs except ModelA which has an idle period of 2000 µs and ModelB which has an idle period of 0 (that means no idle period). An idle period of 2000 µs applies to ModelC from VendorB, while all other camera models from this vendor have no idle period configured. No idle period is applied globally.

Attention: The current implementation of the asynchronous IEEE 1394 bus transaction idle periods is bound to the timer resolution of your operating system. However, we guarantee that the effective idle times will never be less than the configured idle times. This results in effective idle periods that are rounded up to the next integral numbered multiple of the timer resolution of the operating system. For Windows 2000 and up, the timer resolution is 10 or 15 ms depending on your particular hardware platform. That means that a configured idle period of, for example, 2000 µs results in an effective delay of 10 or even 15 ms! This may be a problem for some time critical applications.