Example Scribd Hussie
Example Scribd Hussie
h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "cJSON.h"
#include "driver/gpio.h"
#include "esp_system.h"
#include "esp_log.h"
#include "esp_http_client.h"
#include "esp_https_ota.h"
#include <Wifi.h>
#include <WiFiClient.h>
#include <Update.h>
// server certificates
extern const char server_cert_pem_start[] asm("_binary_certs_pem_start");
extern const char server_cert_pem_end[] asm("_binary_certs_pem_end");
// receive buffer
char rcv_buffer[200];
switch(evt->event_id) {
case HTTP_EVENT_ERROR:
break;
case HTTP_EVENT_ON_CONNECTED:
break;
case HTTP_EVENT_HEADER_SENT:
break;
case HTTP_EVENT_ON_HEADER:
break;
case HTTP_EVENT_ON_DATA:
if (!esp_http_client_is_chunked_response(evt->client)) {
strncpy(rcv_buffer, (char*)evt->data, evt->data_len);
}
break;
case HTTP_EVENT_ON_FINISH:
break;
case HTTP_EVENT_DISCONNECTED:
break;
}
return ESP_OK;
}
// Blink task
void blink_task(void *pvParameter) {
gpio_pad_select_gpio(BLINK_GPIO);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
while(1) {
gpio_set_level(BLINK_GPIO, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(BLINK_GPIO, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
while(1) {
esp_http_client_config_t
ota_client_config = {
.url = file->valuestring,
.cert_pem = server_cert_pem_start,
};
esp_err_t ret =
esp_https_ota(&ota_client_config);
if (ret == ESP_OK) {
printf("OTA OK, restarting...\n");
esp_restart();
} else {
printf("OTA failed...\n");
}
}
else printf("unable to read the new file name,
aborting...\n");
}
else printf("current firmware version (%.1f) is
greater or equal to the available one (%.1f), nothing to do...\n",
FIRMWARE_VERSION, new_version);
}
}
}
else printf("unable to download the json file, aborting...\n");
// cleanup
esp_http_client_cleanup(client);
printf("\n");
vTaskDelay(30000 / portTICK_PERIOD_MS);
}
}
void app_main() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());