|
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