Jump to main content

##

# 1.1.3.4.9 DRV_MEMORY_SyncEraseWrite Function

## C

    bool DRV_MEMORY_SyncEraseWrite
    (
        const DRV_HANDLE handle,
        void *sourceBuffer,
        uint32_t blockStart,
        uint32_t nBlock
    );

## Summary

Erase and Write data for the specified number of memory blocks in Synchronous mode.

## Description

This function combines the step of erasing a sector and then writing the page. The application can use this function if it wants to avoid having to explicitly delete a sector in order to update the pages contained in the sector.

This function schedules a blocking operation to erase and write blocks of data into attached device memory.

## Precondition

The DRV_MEMORY_Open() must have been called with DRV_IO_INTENT_WRITE or DRV_IO_INTENT_READWRITE as a parameter to obtain a valid opened device handle.

## Parameters

Param | Description
--- | ---
handle | A valid open-instance handle, returned from the driver's open function
sourceBuffer | The source buffer containing data to be programmed into media device memory
blockStart | block start where the write should begin.
nBlock | Total number of blocks to be written.

## Returns

- true
  - If the transfer request is successfully completed.
- false
  - If the sourceBuffer pointer is NULL
  - If the client opened the driver for read only
  - If the number of blocks to be written 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 buffer[BUFFER_SIZE];

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

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

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

## Remarks

This API is supported only in RTOS environment.