void Persistent::pageCopy(uint8_t* dst, uint8_t* src) { uint8_t* tagAddress; pageInit(dst, _sequence + 1); for (uint8_t tag = 0; tag < 10; tag++) { if (pageFindTag(src, tag, &tagAddress)) pagePutTag(dst, tag, tagAddress + 4, ((Header*)tagAddress)->used); } }
// general purpose return code, true by default, false in case of some failure bool UI::drawPage(uint16_t id) { m_page = id; m_butCount = 0; switch (id) { case PAGE_INIT: return pageInit(); case PAGE_MAIN: pageMain(); break; case PAGE_MEASURE: pageMeasure(); break; case PAGE_MONITOR: pageMonitor(); break; case PAGE_SETTINGS: pageSettings(); break; case PAGE_CALIBRATE: pageCalibrate(); break; case PAGE_WLAN: pageWLAN(); break; } return true; }
void Persistent::pageFindActive() { uint8_t* page; uint32_t* activePage = 0; uint32_t sequence=0; for (page = _flashStart; page < _flashEnd; page += 0x400) { if (pageIsUsed(page)) if (*(uint32_t*) page != 0xFFFFFFFF && *(uint32_t*) (page + 4) == 0xFFFFFFFF) if (*page >= sequence) { activePage = (uint32_t*)page; sequence = *page; } } if (activePage) { _pageActive = (uint8_t*)activePage; _sequence = sequence; } else { _pageActive = _flashStart; _sequence = 0; pageInit(_pageActive, _sequence); } }