unsigned ctl_i2c_lock_bus_ex(CTL_I2C_BUS_t *self, CTL_TIMEOUT_t type, CTL_TIME_t time);
ctl_i2c_lock_bus_ex acquires the bus lock mutex of the I2C bus self using the timeout specified with type and time. If there is no mutex associated with the bus self, ctl_i2c_lock_bus_ex returns immediately indicating success.
ctl_i2c_lock_bus_ex returns a non-zero value if the mutex is acquired within the timeout specification and zero if it is not.
All successful locks of the I2C bus by ctl_i2c_lock_bus_ex must be paired with a call to ctl_i2c_unlock_bus to release the lock.
Because mutexes can be locked multiple times, you can use ctl_i2c_lock_bus_ex to acquire the bus to issue a sequence of I2C transactions to the bus that cannot be interrupted by another task. However, locking the bus this way does not guarantee that other masters, in a multi-master system, are excluded from issuing transactions on the bus.