# HG changeset patch # User Michiel Broek # Date 1574541794 -3600 # Node ID 358bbd5b608e7d5d0e5ec3a0c2501ead222efef4 # Parent e2a43e7c4035a14b25360f3f08c4884adea99909 menuconfig settings now work for I2C display setup. Lot's of code cleanup. diff -r e2a43e7c4035 -r 358bbd5b608e main/Kconfig.projbuild --- a/main/Kconfig.projbuild Sat Nov 23 19:10:05 2019 +0100 +++ b/main/Kconfig.projbuild Sat Nov 23 21:43:14 2019 +0100 @@ -33,11 +33,12 @@ help Port number for I2C Master device. - config I2C_MASTER_FREQUENCY - int "Master Frequency" - default 100000 - help - I2C Speed of Master device. + config I2C_MASTER_FREQUENCY + int "Master Frequency" + range 100000 400000 + default 100000 + help + I2C Speed of Master device in Hz. endmenu diff -r e2a43e7c4035 -r 358bbd5b608e main/co2meter.c --- a/main/co2meter.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/co2meter.c Sat Nov 23 21:43:14 2019 +0100 @@ -162,14 +162,12 @@ */ while (1) { - ESP_LOGI(TAG, "Entered app loop"); + ESP_LOGI(TAG, "Entered Main loop"); /* Measure process */ while (1) { switch (Main_Loop1) { case ML1_INIT: - ESP_LOGI(TAG, "Loop timer: Init"); - // If configured do ML1_CONNECT Main_Loop1 = ML1_CONNECT; requestWiFi_system(true); request_ds18b20(); @@ -187,7 +185,6 @@ if (ready_ds18b20() && ready_adc()) { connect_mqtt(true); Main_Loop1 = ML1_WAITCON; - ESP_LOGI(TAG, "Loop timer: Wait MQTT"); uint32_t temp[DS18B20_MAX]; int state[DS18B20_MAX], i; @@ -238,9 +235,9 @@ if (P < 0) P = 0; units[i].pressure = P; - ESP_LOGI(TAG, "%d vb:%.3f vp:%.3f zero:%d scale:%3d mbar:%4d t:%6.3f %s", + ESP_LOGI(TAG, "%d vb:%.3f vp:%.3f zero:%d scale:%3d mbar:%4d alm: %d t:%6.3f %s", i, adc_state->Batt_voltage / 1000.0, units[i].pressure_voltage / 1000.0, units[i].pressure_zero, - units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P, + units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P, units[i].alarm, units[i].temperature / 1000.0, units[i].temperature_rom_code); xSemaphoreGive(xSemaphoreADC); } else { @@ -267,7 +264,6 @@ break; case ML1_SEND: - ESP_LOGI(TAG, "Loop timer: Send MQTT"); publishNode(); publishUnits(); publishLogs(); @@ -280,14 +276,12 @@ break; case ML1_MQTT_DISCONNECT: - ESP_LOGI(TAG, "Loop timer: Disconnect MQTT"); connect_mqtt(false); // Doesn't really disconnect. Main_Loop1 = ML1_DISCONNECT; break; case ML1_DISCONNECT: if (! ready_mqtt()) { - ESP_LOGI(TAG, "Loop timer: WiFi off"); requestWiFi_system(false); Main_Loop1 = ML1_WIFI_OFF; } @@ -295,7 +289,7 @@ case ML1_WIFI_OFF: if (! ready_WiFi()) { - ESP_LOGI(TAG, "Loop timer: Done %s", user_busy() ? "true":"false"); + ESP_LOGI(TAG, "Main loop: Done, user busy: %s", user_busy() ? "true":"false"); Main_Loop1 = ML1_DONE; user_refresh(); } diff -r e2a43e7c4035 -r 358bbd5b608e main/config.h --- a/main/config.h Sat Nov 23 19:10:05 2019 +0100 +++ b/main/config.h Sat Nov 23 21:43:14 2019 +0100 @@ -36,7 +36,6 @@ #include "esp_vfs.h" #include "esp_system.h" #include "esp_wifi.h" -//#include "esp_wifi_types.h" #include "esp_wpa2.h" #include "esp_event.h" #include "esp_spi_flash.h" diff -r e2a43e7c4035 -r 358bbd5b608e main/task_adc.c --- a/main/task_adc.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/task_adc.c Sat Nov 23 21:43:14 2019 +0100 @@ -16,7 +16,6 @@ #define PRESSURE_2 (CONFIG_PRESSURE_2) #define PRESSURE_3 (CONFIG_PRESSURE_3) #define BATT_CHANNEL (CONFIG_BATT_CHANNEL) -#define BATT_ACTOR (CONFIG_BATT_ACTOR) static const char *TAG = "task_adc"; @@ -85,7 +84,7 @@ if (uxBits & TASK_ADC_REQUEST_PRESSURE) { - ESP_LOGI(TAG, "Requested ADC readings"); + ESP_LOGD(TAG, "Requested ADC readings"); adc1_config_width(ADC_WIDTH_BIT_12); for (i = 0; i < 3; i++) { diff -r e2a43e7c4035 -r 358bbd5b608e main/task_mqtt.c --- a/main/task_mqtt.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/task_mqtt.c Sat Nov 23 21:43:14 2019 +0100 @@ -273,17 +273,17 @@ switch (event->event_id) { case MQTT_EVENT_CONNECTED: - ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); + ESP_LOGD(TAG, "MQTT_EVENT_CONNECTED"); xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECTED); break; case MQTT_EVENT_DISCONNECTED: - ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); + ESP_LOGD(TAG, "MQTT_EVENT_DISCONNECTED"); xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECTED); break; case MQTT_EVENT_SUBSCRIBED: - ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); + ESP_LOGD(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); break; case MQTT_EVENT_UNSUBSCRIBED: @@ -291,7 +291,7 @@ break; case MQTT_EVENT_PUBLISHED: - ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); + ESP_LOGD(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); if (xSemaphoreTake(xSemaphorePcounter, 10) == pdTRUE) { if (count_pub) { count_pub--; @@ -348,7 +348,7 @@ */ err = nvs_open("storage", NVS_READWRITE, &seq_handle); if (err != ESP_OK) { - ESP_LOGI(TAG, "Error (%s) opening NVS handle", esp_err_to_name(err)); + ESP_LOGE(TAG, "Error (%s) opening NVS handle", esp_err_to_name(err)); } else { err = nvs_get_u64(seq_handle, "Sequence_cnt", &Sequence); switch (err) { @@ -361,7 +361,7 @@ break; default: - ESP_LOGI(TAG, "Error (%s) init Sequence", esp_err_to_name(err)); + ESP_LOGE(TAG, "Error (%s) init Sequence", esp_err_to_name(err)); break; } } diff -r e2a43e7c4035 -r 358bbd5b608e main/task_mqtt.h --- a/main/task_mqtt.h Sat Nov 23 19:10:05 2019 +0100 +++ b/main/task_mqtt.h Sat Nov 23 21:43:14 2019 +0100 @@ -22,8 +22,21 @@ bool ready_mqtt(void); +/** + * @brief Publish node birth + */ void publishNode(void); + + +/** + * @brief Publish units results + */ void publishUnits(void); + + +/** + * @brief Publish measurement logs + */ void publishLogs(void); diff -r e2a43e7c4035 -r 358bbd5b608e main/task_user.c --- a/main/task_user.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/task_user.c Sat Nov 23 21:43:14 2019 +0100 @@ -1149,8 +1149,6 @@ void task_user(void *pvParameter) { - esp_err_t ret; - ESP_LOGI(TAG, "Starting User task"); Main_Loop2 = -1; @@ -1187,22 +1185,22 @@ gpio_isr_handler_add(ROT_ENC_SW_GPIO, gpio_isr_handler, (void*) ROT_ENC_SW_GPIO); - // Create a queue for events from the rotary encoder driver. - // Tasks can read from this queue to receive up to date position information. + /* + * Create a queue for events from the rotary encoder driver. + * Tasks can read from this queue to receive up to date position information. + */ event_queue = rotary_encoder_create_queue(); ESP_ERROR_CHECK(rotary_encoder_set_queue(&rinfo, event_queue)); + /* + * Create a one second periodic timer. + */ esp_timer_create_args_t timerSecond = { .callback = &TimerCallback, .name = "SecondsTimer" }; - - /* - * Create a one second periodic timer. - */ ESP_ERROR_CHECK(esp_timer_create(&timerSecond, &timerHandle)); - ret = esp_timer_start_periodic(timerHandle, 1000000); - assert(ret == ESP_OK); + ESP_ERROR_CHECK(esp_timer_start_periodic(timerHandle, 1000000)); EventBits_t uxBits; @@ -1258,20 +1256,5 @@ xEventGroupClearBits(xEventGroupUser, TASK_USER_WAKEUP); } } - -// If not configured, start configure -// If configured select first unit -// Handle screen (first is show measured values) -// Display per unit. Temp + Pressure + state. Press is setup this sensor. -// Setup menu: Sensors -// WiFi -// MQTT -// System (timers etc) -// Update OTA -// Return - -// Sensors menu: Assignments, turn to choose one. -// Sensors setup menu: DS18B20 addr Press is assign -// DS18B20 addr } diff -r e2a43e7c4035 -r 358bbd5b608e main/task_wifi.c --- a/main/task_wifi.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/task_wifi.c Sat Nov 23 21:43:14 2019 +0100 @@ -54,7 +54,7 @@ * from a timeserver. Sets the global boolean System_TimeOk value. * @param tv is the received time. Not used. */ -void time_sync_notification_cb(struct timeval *tv); +//void time_sync_notification_cb(struct timeval *tv); /** * @brief Array with AP security names @@ -163,7 +163,7 @@ } default: - ESP_LOGI(TAG, "Unknown WiFi event %d", event_id); + ESP_LOGW(TAG, "Unknown WiFi event %d", event_id); break; } } @@ -203,7 +203,7 @@ break; default: - ESP_LOGI(TAG, "Unknown IP event %d", event_id); + ESP_LOGW(TAG, "Unknown IP event %d", event_id); break; } } @@ -230,9 +230,6 @@ xSemaphoreWiFi = xSemaphoreCreateMutex(); wifi_state = malloc(sizeof(WIFI_State)); memset(wifi_state, 0x00, sizeof(WIFI_State)); -// wifi_state->STA_connected = false; -// wifi_state->STA_online = false; -// wifi_state->STA_rssi = 0; /* stop dhcp server and start dhcp client */ ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP)); @@ -265,16 +262,16 @@ /* * user requested a disconnect, this will in effect disconnect the wifi */ - ESP_LOGI(TAG, "Request STA disconnect"); + ESP_LOGD(TAG, "Request STA disconnect"); ESP_ERROR_CHECK(esp_wifi_disconnect()); xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED, pdFALSE, pdTRUE, portMAX_DELAY ); - + /* finally: release the scan request bit */ xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT); } else if (uxBits & TASK_WIFI_REQUEST_STA_CONNECT) { - ESP_LOGI(TAG, "Request STA connect"); + ESP_LOGD(TAG, "Request STA connect"); xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_FAILED); _wifi_ScanAPs = true; _wifi_ScanDone = false; @@ -290,7 +287,7 @@ for (int i = 0; i < _wifi_Scanned; i++) { wifi_ap_record_t ap = accessp_records[i]; // Check if we know this AP in the database. -// ESP_LOGI(TAG, "%d %-20s ch: %2d rssi: %d %s", i, ap.ssid, ap.primary, ap.rssi, apsec[ap.authmode]); + ESP_LOGD(TAG, "%d %-20s ch: %2d rssi: %d %s", i, ap.ssid, ap.primary, ap.rssi, apsec[ap.authmode]); if ((read_station(ap.ssid) >= 0)) { /* ssid */ size_t sz = sizeof(task_wifi_ConfigSTA->sta.ssid); @@ -306,7 +303,7 @@ /* * Now connect to the known SSID */ - // ESP_LOGI(TAG, "Connecting to `%s'", task_wifi_ConfigSTA->sta.ssid); + ESP_LOGD(TAG, "Connecting to `%s'", task_wifi_ConfigSTA->sta.ssid); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, task_wifi_ConfigSTA)); esp_err_t wifierror = esp_wifi_connect(); if (wifierror != ESP_OK) { diff -r e2a43e7c4035 -r 358bbd5b608e main/u8g2_esp32_hal.c --- a/main/u8g2_esp32_hal.c Sat Nov 23 19:10:05 2019 +0100 +++ b/main/u8g2_esp32_hal.c Sat Nov 23 21:43:14 2019 +0100 @@ -117,17 +117,14 @@ i2c_config_t conf; conf.mode = I2C_MODE_MASTER; - ESP_LOGI(TAG, "sda_io_num %d", u8g2_esp32_hal.sda); conf.sda_io_num = u8g2_esp32_hal.sda; conf.sda_pullup_en = GPIO_PULLUP_ENABLE; - ESP_LOGI(TAG, "scl_io_num %d", u8g2_esp32_hal.scl); conf.scl_io_num = u8g2_esp32_hal.scl; conf.scl_pullup_en = GPIO_PULLUP_ENABLE; - ESP_LOGI(TAG, "clk_speed %d", I2C_MASTER_FREQ_HZ); conf.master.clk_speed = I2C_MASTER_FREQ_HZ; - ESP_LOGI(TAG, "i2c_param_config %d", conf.mode); ESP_ERROR_CHECK(i2c_param_config(I2C_MASTER_NUM, &conf)); - ESP_LOGI(TAG, "i2c_driver_install %d", I2C_MASTER_NUM); + ESP_LOGI(TAG, "I2C gpio_sda: %d gpio_scl: %d clk_speed: %d master_num: %d", + u8g2_esp32_hal.sda, u8g2_esp32_hal.scl, I2C_MASTER_FREQ_HZ, I2C_MASTER_NUM); ESP_ERROR_CHECK(i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0)); break; } diff -r e2a43e7c4035 -r 358bbd5b608e main/u8g2_esp32_hal.h --- a/main/u8g2_esp32_hal.h Sat Nov 23 19:10:05 2019 +0100 +++ b/main/u8g2_esp32_hal.h Sat Nov 23 21:43:14 2019 +0100 @@ -14,10 +14,10 @@ #define U8G2_ESP32_HAL_UNDEFINED (-1) -#define I2C_MASTER_NUM I2C_NUM_1 ///< I2C port number for master dev +#define I2C_MASTER_NUM (CONFIG_I2C_MASTER_PORT_NUM) ///< I2C port number for master dev (original 1) #define I2C_MASTER_TX_BUF_DISABLE 0 ///< I2C master do not need buffer #define I2C_MASTER_RX_BUF_DISABLE 0 ///< I2C master do not need buffer -#define I2C_MASTER_FREQ_HZ 400000 ///< I2C master clock frequency (original 50000) +#define I2C_MASTER_FREQ_HZ (CONFIG_I2C_MASTER_FREQUENCY) ///< I2C master clock frequency (original 50000) #define ACK_CHECK_EN 0x1 ///< I2C master will check ack from slave #define ACK_CHECK_DIS 0x0 ///< I2C master will not check ack from slave diff -r e2a43e7c4035 -r 358bbd5b608e sdkconfig --- a/sdkconfig Sat Nov 23 19:10:05 2019 +0100 +++ b/sdkconfig Sat Nov 23 21:43:14 2019 +0100 @@ -83,7 +83,7 @@ CONFIG_I2C_MASTER_SCL=22 CONFIG_I2C_MASTER_SDA=21 CONFIG_I2C_MASTER_PORT_NUM=0 -CONFIG_I2C_MASTER_FREQUENCY=100000 +CONFIG_I2C_MASTER_FREQUENCY=400000 CONFIG_ROT_ENC_A_GPIO=26 CONFIG_ROT_ENC_B_GPIO=27 CONFIG_ROT_ENC_SW_GPIO=14