USBDM_ErrorCode programBlock(FlashImagePtr flashImage, uint32_t size, uint32_t startBlock, ProgressDialoguePtr callBack) { LOGGING; uint8_t buffer[256]; memset(buffer, 0xFF, sizeof(buffer)); USBDM_ErrorCode rc = BDM_RC_OK; while(size>0) { uint32_t blockSize = size; if (blockSize > sizeof(buffer)) { blockSize = sizeof(buffer); } log.print("Programming block [0x%04X...0x%04X]\n", startBlock, startBlock+blockSize-1); // Copy data to buffer for (uint32_t index=0; index<blockSize; index++) { buffer[index] = flashImage->getValue(startBlock+index); } // Program buffer rc = ICP_Program(startBlock, blockSize, buffer, callBack); if (rc != BDM_RC_OK) { return rc; } startBlock += blockSize; size -= blockSize; } return rc; }
ICP_ErrorType programBlock(FlashImage *flashImageDescription, uint32_t size, uint32_t startBlock) { LOGGING; uint8_t buffer[256]; memset(buffer, 0xFF, sizeof(buffer)); ICP_ErrorType rc = ICP_RC_OK; while(size>0) { uint32_t blockSize = size; if (blockSize > sizeof(buffer)) { blockSize = sizeof(buffer); } log.print("Programming block [0x%04X...0x%04X]\n", startBlock, startBlock+blockSize-1); // Copy data to buffer for (uint32_t index=0; index<blockSize; index++) { buffer[index] = flashImageDescription->getValue(startBlock+index); } // Program buffer rc = ICP_Program(startBlock, blockSize, buffer); if (rc != ICP_RC_OK) { return rc; } startBlock += blockSize; size -= blockSize; } return rc; }