Hi Simon,
Without going into the specifics of your application...
Device type mapping:
No need for the calc - the mbbi can do the mapping itself. Use the "Raw Soft Channel" device support (in Base) to have the mbbi do RVAL-to-index mapping.
Disabling:
There are several ways, of course ... I would indeed use disabling.
Add one "Disable<type>" bo record to each per-device-type database, with a default setting of 1=disabled. Point all hardware-connected records of that device type to this Disable<type> using SDIS="Disable<type> CA". (CA option to avoid pulling all records into the same lock set.)
The missing link:
Connecting its SELL to your mapping mbbi, use e.g. a dfanout record with SELM=specified to write a 0 (=enabled) to the Disabled<type> record of the recognized card type. (Don't forget the PP flag to process the Disabled<type>.)
The whole thing is a template per slot that you instantiate for each slot that is used. (Or the max number of slots if you don't care about unconnected records.)
Cheers,
~Ralph
ps. Database links work only locally, Channel Access links work locally and remotely.
CP on input links means "set up a monitor and process me when the value changes" - which is perfectly legal in any case.