예제 #1
0
// I2C state handler
static void i2c_state_handling(I2C_ID_T id)
{
	if (Chip_I2C_IsMasterActive(id))
		Chip_I2C_MasterStateHandler(id);
	else
		Chip_I2C_SlaveStateHandler(id);
}
/**
 * @brief	I2C Interrupt Handler
 * @return	None
 */
void I2C_IRQHandler(void) {
    if (Chip_I2C_IsMasterActive(I2C0)) {
        Chip_I2C_MasterStateHandler(I2C0);
    }
    else {
        Chip_I2C_SlaveStateHandler(I2C0);
    }
}
예제 #3
0
void I2C0_IRQHandler(void)
{
	if (Chip_I2C_IsMasterActive(ONBOARD_I2C)) {
		Chip_I2C_MasterStateHandler(ONBOARD_I2C);
	}
	else {
		Chip_I2C_SlaveStateHandler(ONBOARD_I2C);
	}
}
예제 #4
0
/* Chip polling event handler */
void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event)
{
	struct i2c_interface *iic = &i2c[id];
	volatile I2C_STATUS_T *stat;

	/* Only WAIT event needs to be handled */
	if (event != I2C_EVENT_WAIT) {
		return;
	}

	stat = &iic->mXfer->status;
	/* Call the state change handler till xfer is done */
	while (*stat == I2C_STATUS_BUSY) {
		if (IP_I2C_IsStateChanged(iic->ip)) {
			Chip_I2C_MasterStateHandler(id);
		}
	}
}