MCUSW
DIO Driver API

Introduction

The DIO Driver provides services for reading and writing to/from

This specification is applicable to drivers only for on chip DIO pins and ports
This module works on pins and ports which are configured by the PORT driver for this purpose.
For this reason, there is no configuration and initialization of this port structure in the DIO Driver

See also
DIO Configuration

Sub Modules

 DIO Configuration
 

Functions

Dio_LevelType Dio_ReadChannel (Dio_ChannelType ChannelId)
 Returns the value of the specified DIO channel. More...
 
void Dio_WriteChannel (Dio_ChannelType ChannelId, Dio_LevelType Level)
 Service to set a level of a channel. More...
 
Dio_PortLevelType Dio_ReadPort (Dio_PortType PortId)
 Returns the level of all channels of that port. More...
 
void Dio_WritePort (Dio_PortType PortId, Dio_PortLevelType Level)
 Service to set a value of the port. More...
 
Dio_PortLevelType Dio_ReadChannelGroup (const Dio_ChannelGroupType *ChannelGroupIdPtr)
 This Service reads a subset of the adjoining bits of a port. More...
 
void Dio_WriteChannelGroup (const Dio_ChannelGroupType *ChannelGroupIdPtr, Dio_PortLevelType Level)
 Service to set a subset of the adjoining bits of a port to a specified level. More...
 
void Dio_GetVersionInfo (Std_VersionInfoType *versioninfo)
 Service to get the version information of this module. More...
 
Dio_LevelType Dio_FlipChannel (Dio_ChannelType ChannelId)
 Service to flip (change from 1 to 0 or from 0 to 1) the level of a channel and return the level of the channel. More...
 
uint32 Dio_RegisterReadback (Dio_ChannelType ChannelId)
 This function reads the important registers of the hardware unit and returns the value in the structure. More...
 

Macros

#define DIO_HW_UNIT_CNT   (10U)
 Total HW units or Instances. More...
 
#define DIO_PORT_WIDTH   (32U)
 Width of GPIO register in this platform not to be modified. More...
 
#define DIO_MCAL_2139_FIXED   (0U)
 Read back issue in Maxwell is resolved or not. More...
 

DIO Driver Module SW Version Info

Defines for DIO Driver version used for compatibility checks

#define DIO_SW_MAJOR_VERSION   (1U)
 Driver Implementation Major Version. More...
 
#define DIO_SW_MINOR_VERSION   (3U)
 Driver Implementation Minor Version. More...
 
#define DIO_SW_PATCH_VERSION   (4U)
 Driver Implementation Patch Version. More...
 

DIO Driver Module AUTOSAR Version Info

Defines for DIO Driver AUTOSAR version used for compatibility checks

#define DIO_AR_RELEASE_MAJOR_VERSION   (4U)
 AUTOSAR Major version specification implemented by DIO Driver. More...
 
#define DIO_AR_RELEASE_MINOR_VERSION   (3U)
 AUTOSAR Minor version specification implemented by DIO Driver. More...
 
#define DIO_AR_RELEASE_REVISION_VERSION   (1U)
 AUTOSAR Patch version specification implemented by DIO Driver. More...
 

DIO Driver ID Info

#define DIO_VENDOR_ID   ((uint16) 44U)
 Texas Instruments Vendor ID. More...
 
#define DIO_MODULE_ID   ((uint16) 120U)
 DIO Driver Module ID. More...
 

Dio Error Codes

Error codes returned by Driver functions

#define DIO_E_PARAM_INVALID_CHANNEL_ID   (0x0AU)
 ERROR:API service called with invalid channel ID. More...
 
#define DIO_E_PARAM_INVALID_PORT_ID   (0x14U)
 ERROR:API service called with invalid port ID. More...
 
#define DIO_E_PARAM_INVALID_GROUP   (0x1FU)
 ERROR:API service called with invalid channel group ID. More...
 
#define DIO_E_PARAM_POINTER   (0x20U)
 ERROR:Dio_GetVersionInfo() called with NULL_PTR as parameter. More...
 

Dio Service Ids

The Service Id is one of the argument to Det_ReportError function and is used to identify the source of the error

#define DIO_SID_READ_CHANNEL   (0U)
 Dio_ReadChannel() More...
 
#define DIO_SID_WRITE_CHANNEL   (1U)
 Dio_WriteChannel() More...
 
#define DIO_SID_READ_PORT   (2U)
 Dio_ReadPort() More...
 
#define DIO_SID_WRITE_PORT   (3U)
 Dio_WritePort() More...
 
#define DIO_SID_READ_CHL_GROUP   (4U)
 Dio_ReadChannelGroup() More...
 
#define DIO_SID_WRITE_CHL_GROUP   (5U)
 Dio_WriteChannelGroup() More...
 
#define DIO_SID_FLIP_CHANNEL   (7U)
 Dio_FlipChannel() More...
 
#define DIO_SID_GET_VERSION_INFO   (18U)
 Dio_GetVersionInfo() More...
 

Macro Definition Documentation

◆ DIO_SW_MAJOR_VERSION

#define DIO_SW_MAJOR_VERSION   (1U)

Driver Implementation Major Version.

◆ DIO_SW_MINOR_VERSION

#define DIO_SW_MINOR_VERSION   (3U)

Driver Implementation Minor Version.

◆ DIO_SW_PATCH_VERSION

#define DIO_SW_PATCH_VERSION   (4U)

Driver Implementation Patch Version.

◆ DIO_AR_RELEASE_MAJOR_VERSION

#define DIO_AR_RELEASE_MAJOR_VERSION   (4U)

AUTOSAR Major version specification implemented by DIO Driver.

◆ DIO_AR_RELEASE_MINOR_VERSION

#define DIO_AR_RELEASE_MINOR_VERSION   (3U)

AUTOSAR Minor version specification implemented by DIO Driver.

◆ DIO_AR_RELEASE_REVISION_VERSION

#define DIO_AR_RELEASE_REVISION_VERSION   (1U)

AUTOSAR Patch version specification implemented by DIO Driver.

◆ DIO_VENDOR_ID

#define DIO_VENDOR_ID   ((uint16) 44U)

Texas Instruments Vendor ID.

◆ DIO_MODULE_ID

#define DIO_MODULE_ID   ((uint16) 120U)

DIO Driver Module ID.

◆ DIO_HW_UNIT_CNT

#define DIO_HW_UNIT_CNT   (10U)

Total HW units or Instances.

  • used for array allocation. This should be +1 of the max unit number This is dependent on the SoC and not recommended to be modified

◆ DIO_E_PARAM_INVALID_CHANNEL_ID

#define DIO_E_PARAM_INVALID_CHANNEL_ID   (0x0AU)

ERROR:API service called with invalid channel ID.

◆ DIO_E_PARAM_INVALID_PORT_ID

#define DIO_E_PARAM_INVALID_PORT_ID   (0x14U)

ERROR:API service called with invalid port ID.

◆ DIO_E_PARAM_INVALID_GROUP

#define DIO_E_PARAM_INVALID_GROUP   (0x1FU)

ERROR:API service called with invalid channel group ID.

◆ DIO_E_PARAM_POINTER

#define DIO_E_PARAM_POINTER   (0x20U)

ERROR:Dio_GetVersionInfo() called with NULL_PTR as parameter.

◆ DIO_SID_READ_CHANNEL

#define DIO_SID_READ_CHANNEL   (0U)

◆ DIO_SID_WRITE_CHANNEL

#define DIO_SID_WRITE_CHANNEL   (1U)

◆ DIO_SID_READ_PORT

#define DIO_SID_READ_PORT   (2U)

◆ DIO_SID_WRITE_PORT

#define DIO_SID_WRITE_PORT   (3U)

◆ DIO_SID_READ_CHL_GROUP

#define DIO_SID_READ_CHL_GROUP   (4U)

◆ DIO_SID_WRITE_CHL_GROUP

#define DIO_SID_WRITE_CHL_GROUP   (5U)

◆ DIO_SID_FLIP_CHANNEL

#define DIO_SID_FLIP_CHANNEL   (7U)

◆ DIO_SID_GET_VERSION_INFO

#define DIO_SID_GET_VERSION_INFO   (18U)

◆ DIO_PORT_WIDTH

#define DIO_PORT_WIDTH   (32U)

Width of GPIO register in this platform not to be modified.

◆ DIO_MCAL_2139_FIXED

#define DIO_MCAL_2139_FIXED   (0U)

Read back issue in Maxwell is resolved or not.

Function Documentation

◆ Dio_ReadChannel()

Dio_LevelType Dio_ReadChannel ( Dio_ChannelType  ChannelId)

Returns the value of the specified DIO channel.

*  Service name      : Dio_ReadChannel
*  Syntax            : Dio_LevelType Dio_ReadChannel(
*                          Dio_ChannelType ChannelId )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x00
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : ChannelId
*                      ID of DIO channel
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : Dio_LevelType - STD_HIGH The physical level of the
*                      corresponding Pin is STD_HIGH
*                      - STD_LOW The physical level of the corresponding Pin
*                      is STD_LOW
*  Description       : Returns the value of the specified DIO channel.
*  

◆ Dio_WriteChannel()

void Dio_WriteChannel ( Dio_ChannelType  ChannelId,
Dio_LevelType  Level 
)

Service to set a level of a channel.

*  Service name      : Dio_WriteChannel
*  Syntax            : void Dio_WriteChannel( Dio_ChannelType ChannelId,
*                                             Dio_LevelType Level )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x01
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : ChannelId - ID of DIO channel
*                      Level - Value to be written
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : None
*  Description       : Service to set a level of a channel.
*  

◆ Dio_ReadPort()

Dio_PortLevelType Dio_ReadPort ( Dio_PortType  PortId)

Returns the level of all channels of that port.

*  Service name      : Dio_ReadPort
*  Syntax            : Dio_PortLevelType Dio_ReadPort( Dio_PortType PortId )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x02
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : PortId - ID of DIO Port
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : Dio_PortLevelType - Level of all channels of that port
*  Description       : Returns the level of all channels of that port.
*  

◆ Dio_WritePort()

void Dio_WritePort ( Dio_PortType  PortId,
Dio_PortLevelType  Level 
)

Service to set a value of the port.

*  Service name      : Dio_WritePort
*  Syntax            : void Dio_WritePort( Dio_PortType PortId,
*                                          Dio_PortLevelType Level )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x03
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : PortId - ID of DIO Port
*                      Level - Value to be written
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : None
*  Description       : Service to set a value of the port.
*  

◆ Dio_ReadChannelGroup()

Dio_PortLevelType Dio_ReadChannelGroup ( const Dio_ChannelGroupType ChannelGroupIdPtr)

This Service reads a subset of the adjoining bits of a port.

*  Service name      : Dio_ReadChannelGroup
*  Syntax            : Dio_PortLevelType Dio_ReadChannelGroup(
*                              const Dio_ChannelGroupType* ChannelGroupIdPtr )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x04
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : ChannelGroupIdPtr - Pointer to ChannelGroup
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : Dio_PortLevelType - Level of a subset of the adjoining
*                      bits of a port
*  Description       : This Service read a subset of the adjoining bits of a
*                      port.
*  

◆ Dio_WriteChannelGroup()

void Dio_WriteChannelGroup ( const Dio_ChannelGroupType ChannelGroupIdPtr,
Dio_PortLevelType  Level 
)

Service to set a subset of the adjoining bits of a port to a specified level.

*  Service name      : Dio_WriteChannelGroup
*  Syntax            : void Dio_WriteChannelGroup( const Dio_ChannelGroupType*
*                              ChannelGroupIdPtr, Dio_PortLevelType Level )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x05
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : ChannelGroupIdPtr - Pointer to ChannelGroup
*                      Level - Value to be written
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : None
*  Description       : Service to set a subset of the adjoining bits of a port
*                      to a specified level
*  

◆ Dio_GetVersionInfo()

void Dio_GetVersionInfo ( Std_VersionInfoType *  versioninfo)

Service to get the version information of this module.

*  Service name      : Dio_GetVersionInfo
*  Syntax            : void Dio_GetVersionInfo(
*                          Std_VersionInfoType* versioninfo )
*  Mode              : User Mode (Non-Privileged Mode)
*  Service ID[hex]   : 0x12
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : None
*  Parameters (inout): None
*  Parameters (out)  : versioninfo - Pointer to where to store the version
*                      information of this module.
*  Return value      : None
*  Description       : Service to get the version information of this module
*  

◆ Dio_FlipChannel()

Dio_LevelType Dio_FlipChannel ( Dio_ChannelType  ChannelId)

Service to flip (change from 1 to 0 or from 0 to 1) the level of a channel and return the level of the channel.

*  Service name      : Dio_FlipChannel
*  Syntax            : Dio_LevelType Dio_FlipChannel(
*                              Dio_ChannelType ChannelId )
*  Mode              : Supervisor Mode (Privileged Mode)
*  Service ID[hex]   : 0x11
*  Sync/Async        : Synchronous
*  Reentrancy        : Reentrant
*  Parameters (in)   : ChannelId
*                      - ID of DIO channel
*  Parameters (inout): None
*  Parameters (out)  : None
*  Return value      : Dio_LevelType
*  Return value      : Dio_LevelType - STD_HIGH The physical level of the
*                      corresponding Pin is STD_HIGH
*                      - STD_LOW The physical level of the corresponding Pin is
*                      STD_LOW
*  Description       : Service to flip (change from 1 to 0 or from 0 to 1) the
*                      level of a channel and return the level of the channel
*                      after flip
*  

◆ Dio_RegisterReadback()

uint32 Dio_RegisterReadback ( Dio_ChannelType  ChannelId)

This function reads the important registers of the hardware unit and returns the value in the structure.

*  This API should be called after DIO initialization in the app.
*
*  This API could be used to readback the register contents
*  and then the readback value could be compared during DIO execution to
*  check the correctness of the HW unit. Since this API is used for this
*  purpose, the register returned are the ones which doesn't
*  change during execution.
*
*  \verbatim
*  Service name        : Dio_RegisterReadback
*  Syntax              : uint32 Dio_RegisterReadback(
*                              Dio_ChannelType ChannelId )
*  Mode                : Supervisor Mode (Privileged Mode)
*  Sync/Async          : Synchronous
*  Reentrancy          : Reentrant
*  Parameters (in)     : ChannelId
*                       - ID of DIO channel
*  Parameters (inout)  : None
*  Parameters (out)    : Value of the PID register
*  Return value        : uint32
*