void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level) { VALIDATE( DioGlobal.InitRun, DIO_WRITECHANNEL_ID, DIO_E_UNINIT ); /** @req SWS_Dio_00074 */ VALIDATE( IS_VALID_CHANNEL(channelId), DIO_WRITECHANNEL_ID, DIO_E_PARAM_INVALID_CHANNEL_ID); Dio_PortLevelType portVal = GPIO_ReadOutputData(GPIO_ports[DIO_GET_PORT_FROM_CHANNEL_ID(channelId)]); Dio_PortLevelType bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId); if(level == STD_HIGH){ portVal |= bit; }else{ portVal &= ~bit; } Dio_WritePort(DIO_GET_PORT_FROM_CHANNEL_ID(channelId), portVal); return; }
void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level) { VALIDATE_CHANNEL(channelId, DIO_WRITECHANNEL_ID); Dio_PortLevelType portVal = Dio_ReadPort(DIO_GET_PORT_FROM_CHANNEL_ID(channelId)); Dio_PortLevelType bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId); if(level == STD_HIGH){ portVal |= bit; } else { portVal &= ~bit; } Dio_WritePort(DIO_GET_PORT_FROM_CHANNEL_ID(channelId), portVal); #if ( DIO_DEV_ERROR_DETECT == STD_ON ) cleanup: #endif return; }
void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr, Dio_PortLevelType level) { VALIDATE( DioGlobal.InitRun, DIO_WRITECHANNELGROUP_ID, DIO_E_UNINIT ); /** @req SWS_Dio_00114 */ VALIDATE( IS_VALID_CHANNELGROUP(channelGroupIdPtr), DIO_WRITECHANNELGROUP_ID, DIO_E_PARAM_INVALID_GROUP_ID ); // Shift up and apply mask so that no unwanted bits are affected level = (level << channelGroupIdPtr->offset) & channelGroupIdPtr->mask; // Read port and clear out masked bits Dio_PortLevelType portVal = GPIO_ReadOutputData(GPIO_ports[channelGroupIdPtr->port]) & (~channelGroupIdPtr->mask); // Or in the upshifted masked level portVal |= level; Dio_WritePort(channelGroupIdPtr->port, portVal); return; }
void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr, Dio_PortLevelType level) { VALIDATE_CHANNELGROUP(channelGroupIdPtr,DIO_WRITECHANNELGROUP_ID); // Shift up and apply mask so that no unwanted bits are affected level = (level << channelGroupIdPtr->offset) & channelGroupIdPtr->mask; // Read port and clear out masked bits Dio_PortLevelType portVal = Dio_ReadPort(channelGroupIdPtr->port) & (~channelGroupIdPtr->mask); // Or in the upshifted masked level portVal |= level; Dio_WritePort(channelGroupIdPtr->port, portVal); #if ( DIO_DEV_ERROR_DETECT == STD_ON ) cleanup: #endif return; }