1.1.2.4.3 DRV_I2C_Open Function

C

DRV_HANDLE DRV_I2C_Open
(
    const SYS_MODULE_INDEX drvIndex,
    const DRV_IO_INTENT ioIntent
)

Summary

Opens the specified I2C driver instance and returns a handle to it.

Description

This routine opens the specified I2C driver instance and provides a handle that must be provided to all other client-level operations to identify the caller and the instance of the driver. The ioIntent parameter defines how the client interacts with this driver instance.

Specifying a DRV_IO_INTENT_EXCLUSIVE will cause the driver to provide exclusive access to this client. The driver cannot be opened by any other client.

Precondition

Function DRV_I2C_Initialize must have been called before calling this function.

Parameters

ParamDescription
drvIndexIdentifier for the object instance to be opened
ioIntentZero or more of the values from the enumeration DRV_IO_INTENT "ORed" together to indicate the intended use of the driver. See function description for details.

Returns

If successful, the routine returns a valid open-instance handle (a number identifying both the caller and the module instance).

If an error occurs, the return value is DRV_HANDLE_INVALID. Error can occur

  • if the number of client objects allocated via DRV_I2C_CLIENTS_NUMBER is insufficient.

  • if the client is trying to open the driver but driver has been opened exclusively by another client.

  • if the driver instance being opened is not initialized or is invalid.

  • if the client is trying to open the driver exclusively, but has already been opened in a non exclusive mode by another client.

  • if the driver is not ready to be opened, typically when the initialize routine has not completed execution.

Example

DRV_HANDLE handle;

handle = DRV_I2C_Open(DRV_I2C_INDEX_0, DRV_IO_INTENT_EXCLUSIVE);

if (handle == DRV_HANDLE_INVALID)
{
    // Unable to open the driver
    // May be the driver is not initialized or the initialization
    // is not complete.
}

Remarks

The handle returned is valid until the DRV_I2C_Close routine is called.