|
25 | 25 | #include <memory> |
26 | 26 | #include <soc/soc.h> |
27 | 27 | #include <soc/efuse_reg.h> |
28 | | - |
29 | | -/* Main header of binary image */ |
30 | | -typedef struct { |
31 | | - uint8_t magic; |
32 | | - uint8_t segment_count; |
33 | | - uint8_t spi_mode; /* flash read mode (esp_image_spi_mode_t as uint8_t) */ |
34 | | - uint8_t spi_speed: 4; /* flash frequency (esp_image_spi_freq_t as uint8_t) */ |
35 | | - uint8_t spi_size: 4; /* flash chip size (esp_image_flash_size_t as uint8_t) */ |
36 | | - uint32_t entry_addr; |
37 | | - uint8_t encrypt_flag; /* encrypt flag */ |
38 | | - uint8_t extra_header[15]; /* ESP32 additional header, unused by second bootloader */ |
39 | | -} esp_image_header_t; |
40 | | - |
41 | | -#define ESP_IMAGE_HEADER_MAGIC 0xE9 |
| 28 | +#include <esp_partition.h> |
| 29 | +#include <esp_ota_ops.h> |
| 30 | +extern "C" { |
| 31 | +#include <esp_image_format.h> |
| 32 | +} |
42 | 33 |
|
43 | 34 | /** |
44 | 35 | * User-defined Literals |
@@ -156,6 +147,31 @@ uint32_t EspClass::getMaxAllocPsram(void) |
156 | 147 | return heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM); |
157 | 148 | } |
158 | 149 |
|
| 150 | +static uint32_t sketchSize(sketchSize_t response) { |
| 151 | + esp_image_metadata_t data; |
| 152 | + const esp_partition_t *running = esp_ota_get_running_partition(); |
| 153 | + if (!running) return 0; |
| 154 | + const esp_partition_pos_t running_pos = { |
| 155 | + .offset = running->address, |
| 156 | + .size = running->size, |
| 157 | + }; |
| 158 | + data.start_addr = running_pos.offset; |
| 159 | + esp_image_load(ESP_IMAGE_VERIFY, &running_pos, &data); |
| 160 | + if (response) { |
| 161 | + return running_pos.size - data.image_len; |
| 162 | + } else { |
| 163 | + return data.image_len; |
| 164 | + } |
| 165 | +} |
| 166 | + |
| 167 | +uint32_t EspClass::getSketchSize () { |
| 168 | + return sketchSize(SKETCH_SIZE_TOTAL); |
| 169 | +} |
| 170 | + |
| 171 | +uint32_t EspClass::getFreeSketchSpace () { |
| 172 | + return sketchSize(SKETCH_SIZE_FREE); |
| 173 | +} |
| 174 | + |
159 | 175 | uint8_t EspClass::getChipRevision(void) |
160 | 176 | { |
161 | 177 | esp_chip_info_t chip_info; |
|
0 commit comments