h6. [[Hardware Abstraction Layer]] h6(. [[HAL entry points from RISC OS]] h6((. » HAL_IICTransfer h2. HAL_IICTransfer h5. (HAL entry #36) <pre> int HAL_IICTransfer(int bus, unsigned int n, iic_transfer transfer[static n]) </pre> |_<. Entry | | |bus |Bus number to operate on | |n |Number of [[iic_transfer]]s | |transfer[] |[[iic_transfer]] list | |_<. Exit | | |- |[[HAL IIC return codes|Return code]] | h4. Use This is an internal call for OS use only and should not be used by user software. User software that wishes to perform IIC transfers should use the [[OS_IICOp]] SWI. Initiates an IIC transfer. The transfer shall progress in the background if bit 4 of [[HAL_IICType]] is set, in which case the normal return should be IICSTATUS_INPROGRESS. The OS will call [[HAL_IICMonitorTransfer]] each time an interrupt occurs - this will allow the HAL to progress through the transfer if it's not totally automatic. If the transfer happens in the foreground, return values are as for [[HAL_IICMonitorTransfer]]. If an IIC transfer is currently in progress, the call may return BUSY and the caller should retry later - although if background transfers are supported it may queue the transfer and return INPROGRESS. If another master is driving the bus, it should silently wait until the bus is free (in the background or foreground as appropriate). If we lose arbitration, the transfer should be retried when the bus becomes free. _transfer[]_ is an array of _n_ transfer descriptors. Each descriptor describes part of the transfer. See the [[iic_transfer]] documentation for more details. If background transfers are in use, the _transfer[]_ array and the data blocks must remain available in unpaged memory for the duration of the transfer. [[HAL_IICTransfer]] is re-entrant, but may return IICSTATUS_BUSY if re-entered. h4. See also * [[HAL IIC API]] * [[OS_IICOp]] h6. Information source: Kernel.Docs.HAL.MoreEnts in CVS