SkipBlockNandFlash_ReadBlock
Default mainpageat91libmemoriesnandflashSkipBlockNandFlash_ReadBlock
Description Source Call Graph
Start Line: 294
unsigned char SkipBlockNandFlash_ReadBlock(const struct SkipBlockNandFlash *skipBlock, unsigned short block, void *data)
{
    unsigned int numPagesPerBlock, pageSize;
    // Page index
    unsigned short i;
    // Error returned by SkipBlockNandFlash_WritePage
    unsigned char error = 0;
    
    // Retrieve model information
    pageSize = NandFlashModel_GetPageDataSize(MODEL(skipBlock));
    numPagesPerBlock = NandFlashModel_GetBlockSizeInPages(MODEL(skipBlock));

    // Check that the block is not BAD if data is requested
    if (CheckBlock(skipBlock, block) != GOODBLOCK) {

        TRACE_ERROR("SkipBlockNandFlash_ReadBlock: Block is BAD.\n\r");
        return NandCommon_ERROR_BADBLOCK;
    }

    // Read all the pages of the block
    for (i = 0; i < numPagesPerBlock; i++) {
        error = EccNandFlash_ReadPage(ECC(skipBlock), block, i, data, 0);
        if (error) {

            TRACE_ERROR("SkipBlockNandFlash_ReadBlock: Cannot read page %d of block %d.\n\r", i, block);
            return error;
        }
        data = (void *) ((unsigned char *) data + pageSize);
    }
    
    return 0;
}