The PCMCIA standards do not stop with mechanical and electrical compatibility; software is required to implement a plug-and-play system. Socket Services is the device-driver software layer. It presents a hardware-independent interface to the next-higher layer of software, Card Services, which thus remains independent of the details of the actual socket controller used in the host adapter. In practice, socket controllers are relatively simple and the register set of the original Intel 82365 has become something of a de facto standard. While not eliminating the need for Socket Services, the use of a such a register-compatible socket controller can save Socket Services development costs.
Card Services provides generic PC Card functionality such as detecting (and signaling) card insertion, determination of voltages and compatibility, and querying of the Card Information Structure (CIS). These generic functions are provided to developers who write Card Applications to handle particular PC Cards. In a plug-and-play system, the socket controller first detects the insertion of a card and signals the host with an interrupt. Socket Services fields the interrupt and signals Card Services. Card Services then queries the CIS to determine what kind of card has been inserted and invokes the appropriate Card Application as a task. Through the Application, the PC Card and associated software become an integral, possibly transient, part of the system.
Although the use of PC Cards does not necessitate implementing the standard software layers, their use in custom systems should not be dismissed. Shielding hardware from software with device drivers isn't necessary either, but established software engineering practice suggests that such functional partitioning is a good idea, even in a custom system. While individual projects could benefit from PC Card technology, widespread use of the software layers would encourage reuse from system to system, even for spacecraft.
redd frank