gorec2005
Member
Привет!
использую platformio,
обнаружил проблему с обновлением через httpupdate - после некоторого дебага
обнаружил, что в передаваемых header's странные(очень большие) значения SketchSize и FreeSketchSize
- не могу понять, зачем в начале метода есть
" if (result)
return result;"
- после того как убрал эту конструкцию - числа стали адекватными....
это глюк? или я что-то делаю неверно?
использую platformio,
обнаружил проблему с обновлением через httpupdate - после некоторого дебага
обнаружил, что в передаваемых header's странные(очень большие) значения SketchSize и FreeSketchSize
- не могу понять, зачем в начале метода есть
" if (result)
return result;"
- после того как убрал эту конструкцию - числа стали адекватными....
это глюк? или я что-то делаю неверно?
Код:
uint32_t EspClass::getSketchSize() {
static uint32_t result = 0;
if (result)
return result;
image_header_t image_header;
uint32_t pos = APP_START_OFFSET;
if (spi_flash_read(pos, (uint32_t*) &image_header, sizeof(image_header))) {
return 0;
}
pos += sizeof(image_header);
#ifdef DEBUG_SERIAL
DEBUG_SERIAL.printf("num_segments=%u\r\n", image_header.num_segments);
#endif
for (uint32_t section_index = 0;
section_index < image_header.num_segments;
++section_index)
{
section_header_t section_header = {0};
if (spi_flash_read(pos, (uint32_t*) §ion_header, sizeof(section_header))) {
return 0;
}
pos += sizeof(section_header);
pos += section_header.size;
#ifdef DEBUG_SERIAL
DEBUG_SERIAL.printf("section=%u size=%u pos=%u\r\n", section_index, section_header.size, pos);
#endif
}
result = (pos + 16) & ~15;
return result;
}