GPIO 框架扩展 (GpioClx) 提供了一个灵活的设备驱动程序接口 (DDI)。 此 DDI 使开发人员能够在备选回调接口中进行选择。 驱动程序开发人员应实现最适合目标 GPIO 控制器设备硬件体系结构的事件回调函数集。
例如,如果 GPIO 控制器驱动程序支持从 GPIO I/O 引脚读取和写入,开发人员可以选择实现以下回调函数对之一:
CLIENT_ReadGpioPins和CLIENT_WriteGpioPins、CLIENT_ReadGpioPinsUsingMask和CLIENT_WriteGpioPinsUsingMask函数接收一个银行编号、一个GPIO引脚编号数组,以及一个用于读取或写入这些引脚的位值的数据缓冲区。 如果在读取或写入过程中通常只访问少量 GPIO 引脚,这一对回调可能会实现最佳效果。 此实现通常用于硬件寄存器未进行内存映射的 GPIO 控制器。 但是,如果在读取或写入作期间可能会访问多个 GPIO 引脚,或者 GPIO 控制器硬件可以有效地并行访问多个 GPIO 引脚,则另一对回调函数可能会产生更好的实现。
CLIENT_ReadGpioPinsUsingMask和CLIENT_WriteGpioPinsUsingMask回调函数可以在一次调用中读取或写入最多 64 个引脚的库。 CLIENT_ReadGpioPinsUsingMask函数将 GPIO 引脚值读入 64 位掩码。 CLIENT_WriteGpioPinsUsingMask函数使用两个 64 位掩码。 一个掩码指示要设置的 GPIO 引脚,另一个掩码指示要清除的 GPIO 引脚。 此实现通常用于内存映射 GPIO 控制器。