Added search functionality using binary search

This commit is contained in:
dario
2024-05-07 20:12:17 +02:00
parent ad76f8e12f
commit d88de338e9
2 changed files with 40 additions and 2 deletions

View File

@@ -44,6 +44,31 @@ namespace sta
return 1;
}
uint32_t W25Qxx::findLastPage(std::function<bool(uint8_t*)> criterion)
{
uint32_t left = 0;
uint32_t right = 0xFFFFFFFF & (addrMode_ == AddressMode::_32BIT ? 0xFFFFFFFF : 0x00FFFFFF);
uint32_t middle;
uint8_t * page = new uint8_t[256];
while (left < right)
{
middle = (left + right) / 2 + 1;
readData(middle, page, 256);
if (criterion(page))
{
left = middle;
}
else
{
right = middle-1;
}
}
return middle;
}
uint8_t W25Qxx::setAddressMode(AddressMode addrMode)
{
busWrite(W25QXX_4_BYTE_ADDR_ENABLE);