#include #include "periph_init.h" #include "driver/i2c.h" #include "data_report.h" static const char *TAG = "periph_init"; esp_err_t periph_init() { esp_err_t rv; g_mux_data_report = xSemaphoreCreateMutex(); // XXX move elsewhere assert(g_mux_data_report); ESP_LOGI(TAG, "Init I2C"); // VOC i2c { int i2c_master_port = I2C_NUM_0; i2c_config_t conf = { .mode = I2C_MODE_MASTER, .sda_io_num = CONFIG_PIN_I2C_SDA0, .sda_pullup_en = GPIO_PULLUP_ENABLE, // is this enough? .scl_io_num = CONFIG_PIN_I2C_SCL0, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 100000, }; rv = i2c_param_config(i2c_master_port, &conf); if (rv != ESP_OK) { ESP_LOGE(TAG, "Err in i2c_param_config"); return rv; } rv = i2c_driver_install(i2c_master_port, conf.mode, 0, 0, 0); if (rv != ESP_OK) { ESP_LOGE(TAG, "Err in i2c_driver_install"); return rv; } } // senseair i2c { int i2c_master_port = I2C_NUM_1; i2c_config_t conf2 = { .mode = I2C_MODE_MASTER, .sda_io_num = CONFIG_PIN_I2C_SDA1, .sda_pullup_en = GPIO_PULLUP_ENABLE, // is this enough? .scl_io_num = CONFIG_PIN_I2C_SCL1, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 100000, }; rv = i2c_param_config(i2c_master_port, &conf2); if (rv != ESP_OK) { ESP_LOGE(TAG, "Err in i2c_param_config"); return rv; } rv = i2c_driver_install(i2c_master_port, conf2.mode, 0, 0, 0); if (rv != ESP_OK) { ESP_LOGE(TAG, "Err in i2c_driver_install"); return rv; } } return ESP_OK; }