FSDev_Open()

void  FSDev_Open (CPU_CHAR  *name_dev,
                  void      *p_dev_cfg,
                  FS_ERR    *p_err);

File

Called from

Code enabled by

fs_dev.c

Application

N/A

Open a device.

Arguments

name_dev

Device name. See µC/FS File and Directory Names and Paths for information about device names.

p_dev_cfg

Pointer to device configuration.

p_err

Pointer to variable that will receive the return error code from this function (see Note #1):

FS_ERR_NONE

Device opened successfully.

FS_ERR_DEV_ALREADY_OPEN

Device is already open.

FS_ERR_DEV_INVALID_LOW_FMT

Device needs to be low-level formatted.

FS_ERR_DEV_INVALID_NAME

Specified device name not valid.

FS_ERR_DEV_INVALID_SEC_SIZE

Invalid device sector size.

FS_ERR_DEV_INVALID_SIZE

Invalid device size.

FS_ERR_DEV_INVALID_UNIT_NBR

Specified unit number invalid.

FS_ERR_DEV_IO

Device I/O error.

FS_ERR_DEV_NONE_AVAIL

No devices available.

FS_ERR_DEV_NOT_PRESENT

Device is not present.

FS_ERR_DEV_TIMEOUT

Device timeout error.

FS_ERR_DEV_UNKNOWN

Unknown device error.

FS_ERR_NAME_NULL

Argument name_dev passed a NULL pointer

Returned Value

None.

Notes/Warnings

  1. The return error code from the function SHOULD always be checked by the calling application to determine whether the device was successfully opened. Repeated calls to FSDev_Open() resulting in errors that do not indicate failure to open (such as FS_ERR_DEV_LOW_FMT_INVALID) without matching FSDev_Close() calls may exhaust the supply of device structures.
    1. If FS_ERR_NONE is returned, then the device has been added to the file system and is immediately accessible.
    2. If FS_DEV_INVALID_LOW_FMT is returned, then the device has been added to the file system, but needs to be low-level formatted, though it is present.
    3. If FS_ERR_DEV_NOT_PRESENT, FS_ERR_DEV_IO or FS_ERR_DEV_TIMEOUT is returned, then the device has been added to the file system, though it is probably not present. The device will need to be either closed and re-added, or refreshed.
    4. If any of the follwing is returned:
      • FS_ERR_DEV_INVALID_NAME
      • FS_ERR_DEV_INVALID_SEC_SIZE
      • FS_ERR_DEV_INVALID_SIZE
      • FS_ERR_DEV_INVALID_UNIT_NBR
      • FS_ERR_DEV_NONE_AVAIL

      ...then the device has not been added to the file system.

    5. If FS_ERR_DEV_UNKNOWN is returned, then the device driver is in an indeterminate state. The system MAY need to be restarted and the device driver should be examined for errors. The device has not been added to the file system.