void ComM_BusSM_ModeIndication( NetworkHandleType Channel, ComM_ModeType *Mode ){ COMM_VALIDATE_INIT_NORV(COMM_SERVICEID_BUSSM_MODEINDICATION); /** @req COMM816 */ COMM_VALIDATE_CHANNEL_NORV(Channel, COMM_SERVICEID_BUSSM_MODEINDICATION); ComM_ModeType ComMode; ComMode = *Mode; ComM_Internal_ChannelType* ChannelInternal = &ComM_Internal.Channels[Channel]; const ComM_ChannelType* ChannelConf = &ComM_Config->Channels[Channel]; #if defined(USE_BSWM) || defined(USE_DCM) if( ChannelInternal->Mode != ComMode) { #if defined(USE_BSWM) BswM_ComM_CurrentMode(Channel, ComMode); /* @req COMM976 */ #endif #if defined(USE_DCM) /* @req COMM266 */ /* !req COMM693 */ switch(ComMode) { case COMM_NO_COMMUNICATION: Dcm_ComM_NoComModeEntered(Channel); break; case COMM_SILENT_COMMUNICATION: Dcm_ComM_SilentComModeEntered(Channel); break; case COMM_FULL_COMMUNICATION: Dcm_ComM_FullComModeEntered(Channel); break; default: break; } #endif } #endif ChannelInternal->Mode = ComMode; ChannelInternal->SubMode = ChannelInternal->RequestedSubMode; /** @req COMM898 */ /** @req COMM899 */ /** @req COMM883 */ switch(ComMode) { case COMM_NO_COMMUNICATION: break; case COMM_SILENT_COMMUNICATION: break; case COMM_FULL_COMMUNICATION: /* IMPROVMENT: What to do if return error */ (void)ComM_Internal_NotifyNm(ChannelConf); break; } }
static inline Std_ReturnType ComM_Internal_Enter_ReadySleep(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) { Std_ReturnType status = E_OK; if (ChannelInternal->Mode != COMM_FULL_COMMUNICATION) { ChannelInternal->RequestedSubMode = COMM_FULL_COM_READY_SLEEP; status = ComM_Internal_PropagateComMode(ChannelConf, COMM_FULL_COMMUNICATION); } else { ChannelInternal->SubMode = COMM_FULL_COM_READY_SLEEP; status = ComM_Internal_NotifyNm(ChannelConf); } return status; }
static inline Std_ReturnType ComM_Internal_Enter_ReadySleep(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) { boolean propagateToBusSM = (ChannelInternal->Mode != COMM_FULL_COMMUNICATION); ChannelInternal->LightTimeoutTimeLeft = ChannelConf->LightTimeout; ChannelInternal->Mode = COMM_FULL_COMMUNICATION; ChannelInternal->SubMode = COMM_SUBMODE_READY_SLEEP; Std_ReturnType status, globalStatus = E_OK; status = ComM_Internal_NotifyNm(ChannelConf); /**< @req COMM133.1 */ if (status > globalStatus){ globalStatus = status; } if (propagateToBusSM) { status = ComM_Internal_PropagateComMode(ChannelConf); if (status > globalStatus){ globalStatus = status; } } return globalStatus; }
static inline Std_ReturnType ComM_Internal_Enter_NetworkRequested(const ComM_ChannelType* ChannelConf, ComM_Internal_ChannelType* ChannelInternal) { boolean propagateToBusSM = (ChannelInternal->Mode != COMM_FULL_COMMUNICATION); ChannelInternal->FullComMinDurationTimeLeft = COMM_T_MIN_FULL_COM_MODE_DURATION; ChannelInternal->Mode = COMM_FULL_COMMUNICATION; ChannelInternal->SubMode = COMM_SUBMODE_NETWORK_REQUESTED; Std_ReturnType status, globalStatus = E_OK; status = ComM_Internal_NotifyNm(ChannelConf); /**< @req COMM129.2 */ if (status > globalStatus){ globalStatus = status; } if (propagateToBusSM) { status = ComM_Internal_PropagateComMode(ChannelConf); if (status > globalStatus){ globalStatus = status; } } return globalStatus; }