#include #include "esp_log.h" #include "driver/i2c.h" #include #include #include #include #include #include #include #include #include "freertos/timers.h" #include "nvs_flash.h" #include #include #include #include "safety.h" #include "metrics.h" #include "outputs.h" #include "inputs.h" #include "control.h" #define I2C_MASTER_SCL 19 #define I2C_MASTER_SDA 18 static const char *TAG = "smart-oil-heater-control-system"; // Function to print the current time void print_current_time() { time_t now; struct tm timeinfo; time(&now); localtime_r(&now, &timeinfo); char strftime_buf[64]; strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); ESP_LOGI(TAG, "Current time: %s", strftime_buf); } // SNTP Callback function void time_sync_notification_cb(struct timeval *tv) { ESP_LOGI(TAG, "SNTP synchronization completed! Unix Time: %lld", tv->tv_sec); ESP_LOGI(TAG, "Time synchronization callback called."); } void app_main(void) { ESP_LOGI(TAG, "starting ..."); // Initialize NVS esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); // TODO: Error handling! // initOutputs(); // initInputs(); // initSafety(); // initControl(); initMetrics(); esp_sntp_setoperatingmode(SNTP_OPMODE_POLL); esp_sntp_setservername(0, "10.1.0.1"); // Set first NTP server local router sntp_set_time_sync_notification_cb(time_sync_notification_cb); // Register the SNTP time sync callback esp_sntp_init(); while (1) { vTaskDelay(pdMS_TO_TICKS(1000)); // Print the current time print_current_time(); ESP_LOGI(TAG, "SNTP Server 0 reachability: %i", esp_sntp_getreachability(0)); } }