FF_CreateIOManager()

[Creating a FreeRTOS+FAT Media Driver]

ff_ioman.h
FF_IOManager_t *FF_CreateIOManger( FF_CreationParameters_t *pxParameters, FF_Error_t *pxError );
		

FreeRTOS+FAT media drivers store information that is common to all media types in a structure of type FF_Disk_t. The pxIOManager member of the FF_Disk_t structure references an object called an input/output manager (IO Manager, or simply IOMAN). The IO manager is responsible for, amongst other things, buffering and caching both file and directory information.

FF_CreateIOManager() creates an IO Manager object.

Parameters are passed into FF_CreateIOManager() in an FF_CreationParameters_t structure.

The pvSemaphore member of the FF_CreationParameters_t structure must be created by a call to the xSemaphoreCreateRecursiveMutex() FreeRTOS API function.

typedef struct xFF_CREATION_PARAMETERS { /* If the memory to use as the IO manager's cache is provided by the application writer then pass a pointer to the memory in pucCacheMemory. If the memory to use as the IO manager's cache is to be allocated by the IO manager then pass NULL in pucCacheMemory. */ uint8_t *pucCacheMemory; /* The size of the cache memory. ulMemorySize is specified in bytes and must be a multiple of ulSectorSize. */ uint32_t ulMemorySize; /* Sector size, which is the unit for reading from and writing to the disk. A sector size of 512 bytes is normal. */ BaseType_t ulSectorSize; /* The function used to write a sector to the disk. */ FF_WriteBlock_t fnWriteBlocks; /* The function used to read a sector from the disk. */ FF_ReadBlock_t fnReadBlocks; /* The parameter to pass into the read sector and write sector functions - basically a pointer back to the FF_Disk_t structure that contains the IO manager. */ FF_Disk_t *pxDisk; /* The semaphore used to protect the data structures on the media must be created using the xSemaphoreCreateRecursiveMutex() API function. */ void *pvSemaphore; /* If the media driver is not re-entant then set xBlockDeviceIsReentrant to pdFALSE - in which case the semaphore will also be used to protect access to the media driver's read and write functions. */ BaseType_t xBlockDeviceIsReentrant; } FF_CreationParameters_t; The FF_CreationParameters_t structure

Parameters:

pxParameters   A structure of type FF_CreationParameters_t, which defines the IO manager being created.

pxError   Used to pass out an error code.

Returns:

If the IO manager was created successfully then a pointer to the created IO manager is returned and *pxError is set to FF_ERR_NONE. If the IO manager was not created successfully then NULL is returned and *pxError is set to an error code. FF_GetErrMessage() converts error codes into error descriptions.

Example usage:

The page that documents how to create a FreeRTOS+FAT media driver also demonstrates how to use the FF_CreateIOManger() function.