def _add_switch_coil_mapping(self, switch_num, driver: "OPPSolenoid"):
        """Add mapping between switch and coil."""
        if self.min_version[driver.sol_card.chain_serial] < 0x20000:
            return
        _, _, coil_num = driver.number.split('-')

        # mirror switch matrix columns to handle the fact that OPP matrix is in reverse column order
        if switch_num >= 32:
            switch_num = 8 * (15 - (switch_num // 8)) + switch_num % 8

        msg = bytearray()
        msg.append(driver.sol_card.addr)
        msg.extend(OppRs232Intf.SET_SOL_INP_CMD)
        msg.append(int(switch_num))
        msg.append(int(coil_num))
        msg.extend(OppRs232Intf.calc_crc8_whole_msg(msg))
        msg.extend(OppRs232Intf.EOM_CMD)
        final_cmd = bytes(msg)

        if self.debug:
            self.debug_log("Mapping input %s and coil %s on %s", switch_num, coil_num, driver.sol_card.chain_serial)
        self.send_to_processor(driver.sol_card.chain_serial, final_cmd)