Files
Calendink/Provider/main/api/system/info.cpp
Patedam 2916ad9c99 Squashed commit of the following:
commit e8b53dc953
Author: Patedam <pgillen.pro@gmail.com>
Date:   Tue Mar 3 01:15:17 2026 -0500

    Updated backend to make sure it works properly with frontend. Fixed one frontend issue (free heap was not correctly named)

commit 3428808f83
Author: Patedam <pgillen.pro@gmail.com>
Date:   Tue Mar 3 00:36:01 2026 -0500

    Fixing various build errors. Activated minimal build

commit 59364ac22d
Author: Patedam <pgillen.pro@gmail.com>
Date:   Tue Mar 3 00:03:24 2026 -0500

    Added info and reboot api into the backend. Created the basics for a backend server.

commit 37291557eb
Author: Patedam <pgillen.pro@gmail.com>
Date:   Mon Mar 2 23:05:10 2026 -0500

    feat: Add API endpoints for system reboot and retrieving system information.

commit a010b0c352
Author: Patedam <pgillen.pro@gmail.com>
Date:   Mon Mar 2 22:56:13 2026 -0500

    Added AgentTasks into git ignore we will use it to store current tasks so we can createnew contexts chat when its too big

commit 75bab78137
Author: Patedam <pgillen.pro@gmail.com>
Date:   Mon Mar 2 22:42:29 2026 -0500

    feat: Initialize ESP-IDF project with core build configuration, component dependencies, and web frontend deployment.

commit bba4c63f93
Author: Patedam <pgillen.pro@gmail.com>
Date:   Mon Mar 2 22:21:52 2026 -0500

    docs: Add backend architecture documentation for the ESP32-S3 provider.
2026-03-03 01:17:31 -05:00

67 lines
1.9 KiB
C++

// SDK
#include "cJSON.h"
#include "esp_app_format.h"
#include "esp_chip_info.h"
#include "esp_http_server.h"
#include "esp_ota_ops.h"
#include "esp_system.h"
#include "esp_timer.h"
// Project
#include "appstate.hpp"
#include "types.hpp"
internal esp_err_t api_system_info_handler(httpd_req_t *req) {
httpd_resp_set_type(req, "application/json");
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
cJSON *root = cJSON_CreateObject();
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
const char *model = "ESP32-S3";
if (chip_info.model == CHIP_ESP32) {
model = "ESP32";
} else if (chip_info.model == CHIP_ESP32S2) {
model = "ESP32-S2";
} else if (chip_info.model == CHIP_ESP32S3) {
model = "ESP32-S3";
} else if (chip_info.model == CHIP_ESP32C3) {
model = "ESP32-C3";
}
cJSON_AddStringToObject(root, "chip", model);
uint32_t free_heap = esp_get_free_heap_size();
cJSON_AddNumberToObject(root, "free_heap", free_heap);
uint64_t uptime_sec = esp_timer_get_time() / 1000000;
cJSON_AddNumberToObject(root, "uptime", uptime_sec);
const esp_app_desc_t *app_desc = esp_app_get_description();
cJSON_AddStringToObject(root, "firmware", app_desc->version);
const char *conn_type = "offline";
if (g_Ethernet_Initialized) {
conn_type = "ethernet";
} else if (g_Wifi_Initialized) {
conn_type = "wifi";
}
cJSON_AddStringToObject(root, "connection", conn_type);
const char *sys_info = cJSON_Print(root);
httpd_resp_sendstr(req, sys_info);
free((void *)sys_info);
cJSON_Delete(root);
return ESP_OK;
}
internal const httpd_uri_t api_system_info_uri = {.uri = "/api/system/info",
.method = HTTP_GET,
.handler =
api_system_info_handler,
.user_ctx = NULL};