예제 #1
0
/** @req COMM429 */
void ComM_MainFunction(NetworkHandleType Channel) {
	const ComM_ChannelType* ChannelConf = &ComM_Config->Channels[Channel];
	ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];

	if ((ChannelConf->NmVariant == COMM_NM_VARIANT_NONE) ||
		(ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT)) {
		Std_ReturnType status = ComM_Internal_TickFullComMinTime(ChannelConf, ChannelInternal);
		if (status != E_OK) {
			// IMPROVEMENT: Report DET error?
		}
	}
	if (ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT) {
		Std_ReturnType status = ComM_Internal_TickLightTime(ChannelConf, ChannelInternal);
		if (status != E_OK) {
		    // IMPROVEMENT: Report DET error?
		}
	}

	if (ChannelInternal->Mode == COMM_NO_COMMUNICATION &&
		ChannelInternal->SubMode == COMM_NO_COM_REQUEST_PENDING )
	{
		Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, FALSE);
		if (status != E_OK) {
		    // IMPROVEMENT: Report DET error?
		}
	}
}
예제 #2
0
파일: ComM.c 프로젝트: uincore/OpenSAR
/** @req COMM429 */
void ComM_MainFunction(NetworkHandleType Channel) {
	const ComM_ChannelType* ChannelConf = &ComM_Config->Channels[Channel];
	ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel];

	Std_ReturnType status = ComM_Internal_UpdateChannelState(ChannelConf, TRUE);

	if ((ChannelConf->NmVariant == COMM_NM_VARIANT_NONE) ||
		(ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT)) {
		status = ComM_Internal_TickFullComMinTime(ChannelConf, ChannelInternal);
	}
	if (ChannelConf->NmVariant == COMM_NM_VARIANT_LIGHT) {
		status = ComM_Internal_TickLightTime(ChannelConf, ChannelInternal);
	}

	if (status != E_OK) {
		// Report error?
	}
}