uint8_t ao_i2c_mutex[STM_NUM_I2C];
# define I2C_HIGH_SLOW 5000 /* ns, 100kHz clock */
uint8_t ao_i2c_mutex[STM_NUM_I2C];
# define I2C_HIGH_SLOW 5000 /* ns, 100kHz clock */
# define I2C_HIGH_FAST 2000 /* ns, 167kHz clock */
#else
# define I2C_HIGH_FAST 1000 /* ns, 333kHz clock */
# define I2C_HIGH_FAST 2000 /* ns, 167kHz clock */
#else
# define I2C_HIGH_FAST 1000 /* ns, 333kHz clock */
stm_i2c->cr2 = AO_STM_I2C_CR2 | (1 << STM_I2C_CR2_ITEVTEN) | (1 << STM_I2C_CR2_ITERREN);
ao_i2c_ev_isr(index);
while (ao_i2c_state[index] == I2C_IDLE)
if (ao_sleep(&ao_i2c_state[index]))
break;
stm_i2c->cr2 = AO_STM_I2C_CR2 | (1 << STM_I2C_CR2_ITEVTEN) | (1 << STM_I2C_CR2_ITERREN);
ao_i2c_ev_isr(index);
while (ao_i2c_state[index] == I2C_IDLE)
if (ao_sleep(&ao_i2c_state[index]))
break;