## Environment - Development Kit: none - Core (if using chip or module): ESP-WROOM32 - IDF version 051d8d69 - Development Env: other - Operating System: Windows - Power Supply: USB ## Problem Description [Documentation](https://esp-idf.readthedocs.io/en/latest/api-reference/peripherals/i2c.html) for i2c_master_cmd_begin says: > The I2C APIs are not thread-safe, if you want to use one I2C port in different tasks, you need to take care of the multi-thread issue. But code of **i2c_master_cmd_begin** has this: ``` portBASE_TYPE res = xSemaphoreTake(p_i2c->cmd_mux, ticks_to_wait); ... xSemaphoreGive(p_i2c->cmd_mux); ``` which means that I2C driver protects command flow by mutex and we don't need to do the same on the upper levels. Am I right?