1.1.3.4.13 DRV_MEMORY_SyncRead Function

C

bool DRV_MEMORY_SyncRead
(
    const DRV_HANDLE handle,
    void *targetBuffer,
    uint32_t blockStart,
    uint32_t nBlock
);

Summary

Reads data for the specified number of memory blocks in Synchronous mode.

Description

This function schedules a blocking read operation for reading blocks of data from the memory device attached.

Precondition

DRV_MEMORY_Open() must have been called with DRV_IO_INTENT_READ or DRV_IO_INTENT_READWRITE as the ioIntent to obtain a valid opened device handle.

Parameters

ParamDescription
handleA valid open-instance handle, returned from the driver's open function
targetBufferBuffer into which the data read from the media device memory will be placed
blockStartBlock start from where the data should be read.
nBlockTotal number of blocks to be read.

Returns

  • true

    • If the transfer request is successfully completed.

  • false

    • If the source buffer pointer is NULL

    • If the client opened the driver for write only

    • If the number of blocks to be read is either zero or more than the number of blocks actually available

    • If the driver handle is invalid

Example

#define BUFFER_SIZE 4096
uint8_t readBuffer[BUFFER_SIZE];

// Use DRV_MEMORY_GeometryGet () to find the read region geometry.
uint32_t blockStart = 0x0;
uint32_t nBlock = BUFFER_SIZE / block_size; // block_size for read geometry

// memoryHandle is the handle returned by the DRV_MEMORY_Open function.

if(DRV_MEMORY_SyncRead(memoryHandle, &readBuffer, blockStart, nBlock) == false)
{
    // Error handling here
}

Remarks

This API is supported only in RTOS environment.