SWC中的显式读写(DataReceiveByValue/DataSendPoint)
在AUTOSAR中,显式读写所用的Data Access Point和接口形式如下表所示
Data Access Point | 接口形式 |
---|---|
DataReceiveByArgument | Rte_Read_xxx |
DataSendPoint | Rte_Write_xxx |
显式读写的特点是通过调用Rte的接口立即进行写入或者读取
显示写的时候会直接在Runnable中调用Rte_Write
进行写操作
Std_ReturnType retWrite11;
uint8 write11;
FUNC (void, OUTP_SWC_CODE) RE_OUTP_SWC(void)
{
retWrite11 = Rte_Write_PP_ETAS04_Sig21_ETAS04_Sig21(write11);
}
#define Rte_Write_PP_ETAS04_Sig21_ETAS04_Sig21( data ) (Rte_Write_OUTP_SWC_PP_ETAS04_Sig21_ETAS04_Sig21(data))
FUNC(Std_ReturnType, RTE_CODE)Rte_Write_OUTP_SWC_PP_ETAS04_Sig21_ETAS04_Sig21(VAR(uint8, AUTOMATIC) data) /* 2 */
{
VAR(Std_ReturnType, AUTOMATIC) rtn = RTE_E_OK;
uint8 converted_S_ETAS04_Sig21_Can_Network_Channel_CAN_Tx;
/* Incoming type is in the range 0...255, requiring uint8. */
/* intermediate value of addition is in the range 0...295, requiring uint16. */
/* The signal is ETAS04_Sig21 */
converted_S_ETAS04_Sig21_Can_Network_Channel_CAN_Tx = ( ((VAR(uint16, AUTOMATIC))40) + ((VAR(uint16, AUTOMATIC))data) );
if ( ((VAR(StatusType, AUTOMATIC))E_OK) != Com_SendSignal(((VAR(Com_SignalIdType, AUTOMATIC))ComConf_ComSignal_S_ETAS04_Sig21_Can_Network_Channel_CAN_Tx), &converted_S_ETAS04_Sig21_Can_Network_Channel_CAN_Tx) )
{
rtn = ((VAR(Std_ReturnType, AUTOMATIC))RTE_E_COM_STOPPED);
}
/* Send complete */
return rtn;
}
显示读的时候会直接在Runnable中调用Rte_Read
进行读取操作
FUNC (void, EthUT_CODE) RE_EthUT_func(void)
{
// ETAS_IDT_RDT_1 read2;
Std_ReturnType retRead2;
retRead2 = Rte_Read_RPort_Test_Struct_Rx_DataElements_SerialisedAppRecord_Tx(&read2);
}
#define Rte_Read_RPort_Test_Struct_Rx_DataElements_SerialisedAppRecord_Tx( data ) (Rte_Read_EthUT_RPort_Test_Struct_Rx_DataElements_SerialisedAppRecord_Tx(data))
FUNC(Std_ReturnType, RTE_CODE)
Rte_Read_EthUT_RPort_Test_Struct_Rx_DataElements_SerialisedAppRecord_Tx(P2VAR(ETAS_IDT_RDT_1, AUTOMATIC, RTE_APPL_DATA) data) /* 2 */
{
VAR(Std_ReturnType, AUTOMATIC) rtn;
rtn = IocRead_Rte_Rx_002356_0(data);
return rtn;
}