Adicionar primeiro

This commit is contained in:
2025-06-06 21:17:25 +01:00
parent c188084ba4
commit 282e7f517b
841 changed files with 199592 additions and 1 deletions

66
components/api/src/ota.c Executable file
View File

@@ -0,0 +1,66 @@
#include <string.h>
#include "esp_log.h"
#include "esp_err.h"
#include "esp_http_client.h"
#include "cJSON.h"
#include "ota.h"
static const char* TAG = "ota";
extern const char server_cert_pem_start[] asm("_binary_ca_cert_pem_start");
extern const char server_cert_pem_end[] asm("_binary_ca_cert_pem_end");
static void http_client_cleanup(esp_http_client_handle_t client)
{
esp_http_client_close(client);
esp_http_client_cleanup(client);
}
esp_err_t ota_get_available_version(char* version)
{
esp_http_client_config_t config = {
.url = OTA_VERSION_URL,
.cert_pem = server_cert_pem_start
};
esp_http_client_handle_t client = esp_http_client_init(&config);
esp_err_t err = esp_http_client_open(client, 0);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err));
esp_http_client_cleanup(client);
return err;
}
int content_length = esp_http_client_fetch_headers(client);
if (content_length > 0) {
esp_http_client_read(client, version, content_length);
version[content_length] = '\0';
http_client_cleanup(client);
return ESP_OK;
} else {
http_client_cleanup(client);
ESP_LOGI(TAG, "No firmware available");
return ESP_ERR_NOT_FOUND;
}
}
bool ota_is_newer_version(const char* actual, const char* available)
{
// available version has no suffix eg: vX.X.X-beta
char actual_trimed[32];
strcpy(actual_trimed, actual);
char* saveptr;
strtok_r(actual_trimed, "-", &saveptr);
bool actual_has_suffix = strtok_r(NULL, "-", &saveptr);
int diff = strcmp(available, actual_trimed);
if (diff == 0) {
return actual_has_suffix;
} else {
return diff > 0;
}
}