# InstaCal, API Detection, or Both?

Most programmers using the Universal Library will install and configure their hardware using InstaCal. All software using the Universal Library will then use the configuration file "cb.cfg" generated by InstaCal to determine what devices are installed and how they are configured. If that is adequate for your situation, you will not need any of the API functions listed in the Device Discovery sections below. Almost all of the example programs use this method for hardware detection and configuration.

Other programmers may find it desirable to detect and configure hardware at runtime. Although this requires a bit more work for the programmer, it may be more convenient for the end user of the application. This approach will typically be used by OEMs and distributed applications where the hardware to be used is undefined. A couple of example programs are available that demonstrate this approach.

The Universal Library API provides functions and methods for detecting many types of MCC devices at runtime. These features can be used in lieu of, or in addition to, using InstaCal for detection and configuration.

- If you want your application to determine which MCC devices are connected, and configure them entirely at runtime, the first UL function called in your application should be cbIgnoreInstaCal() (or the IgnoreInstaCal() method using UL for .Net). This technique is useful when distributing an application for which the MCC device type is unknown or for which the user may want to frequently change the device being used.
- If you want your application to use MCC devices that were added and configured using InstaCal, do not use the cbIgnoreInstaCal()/IgnoreInstaCal()/ignore_instacal() feature. Applications using the Universal Library will then have access to any devices stored in the cb.cfg file and you can add additional devices using the advanced discovery features. This technique is useful when some of the devices in use are not discoverable devices that must be manually added, such as ISA boards.

#### See Also

- Device Discovery with the UL
- Device Discovery with the UL for .NET
- Device Discovery with Python