From fd3f79a8d5ec811df4d33d9e1e5d2338eb2472a0 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 5 Jul 2015 19:56:21 +0200 Subject: [PATCH] Possible fix for #2421 - Code review and tests needed --- radio/src/targets/taranis/i2c_driver.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/taranis/i2c_driver.cpp b/radio/src/targets/taranis/i2c_driver.cpp index 6389fc4a4..400a9a9af 100644 --- a/radio/src/targets/taranis/i2c_driver.cpp +++ b/radio/src/targets/taranis/i2c_driver.cpp @@ -109,8 +109,9 @@ void eepromWriteBlock(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t NumByteToWr { uint8_t offset = WriteAddr % I2C_FLASH_PAGESIZE; uint8_t count = I2C_FLASH_PAGESIZE - offset; - if (NumByteToWrite < I2C_FLASH_PAGESIZE) + if (NumByteToWrite < count) { count = NumByteToWrite; + } while (count > 0) { I2C_EE_PageWrite(pBuffer, WriteAddr, count); I2C_EE_WaitEepromStandbyState(); @@ -118,8 +119,9 @@ void eepromWriteBlock(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t NumByteToWr pBuffer += count; NumByteToWrite -= count; count = I2C_FLASH_PAGESIZE; - if (NumByteToWrite < I2C_FLASH_PAGESIZE) + if (NumByteToWrite < I2C_FLASH_PAGESIZE) { count = NumByteToWrite; + } } }