/* registeringToTheRadioNetwork */ void MoRC_registeringToTheRadioNetwork( /* registeringToTheRadioNetwork::atPowerUp */kcg_bool atPowerUp, /* registeringToTheRadioNetwork::afterDriverEntryOfANewRadioNetworkID */kcg_bool afterDriverEntryOfANewRadioNetworkID, /* registeringToTheRadioNetwork::etcs_level */MoRC_M_LEVEL_Type etcs_level, /* registeringToTheRadioNetwork::registrationOrderedFromTrackside */kcg_bool registrationOrderedFromTrackside, /* registeringToTheRadioNetwork::registrationOrderFromTracksideCancelled */kcg_bool registrationOrderFromTracksideCancelled, /* registeringToTheRadioNetwork::atPowerOff */kcg_bool atPowerOff, /* registeringToTheRadioNetwork::RadioNetworkID_memorized */MoRC_validRadioNetworkID_Type *RadioNetworkID_memorized, /* registeringToTheRadioNetwork::RadioNetworkID_fromDriver */MoRC_validRadioNetworkID_Type *RadioNetworkID_fromDriver, /* registeringToTheRadioNetwork::RadioNetworkID_fromTrackside */MoRC_validRadioNetworkID_Type *RadioNetworkID_fromTrackside, /* registeringToTheRadioNetwork::triggerDecisionThatNoRadioNetworkIDAvailable */kcg_bool triggerDecisionThatNoRadioNetworkIDAvailable, /* registeringToTheRadioNetwork::mobileHWStatus */MoRC_mobileHWStatus_Type *mobileHWStatus, /* registeringToTheRadioNetwork::mobileSWCmd */MoRC_mobileSWCmd_Type *mobileSWCmd, /* registeringToTheRadioNetwork::RadioNetworkID_Default */MoRC_validRadioNetworkID_Type *RadioNetworkID_Default, MoRC_outC_registeringToTheRadioNetwork *outC) { MoRC_struct__10898 tmp; /* registeringToTheRadioNetwork::_L32 */ kcg_bool _L32; /* registeringToTheRadioNetwork::_L44 */ kcg_bool _L44; /* registeringToTheRadioNetwork::_L76 */ MoRC_mobileSWStatus_Type _L76; /* registeringToTheRadioNetwork::_L89 */ kcg_bool _L89; /* registeringToTheRadioNetwork::_L95 */ kcg_bool _L95; /* registeringToTheRadioNetwork::_L99 */ kcg_bool _L99; /* registeringToTheRadioNetwork::_L103 */ kcg_bool _L103; /* registeringToTheRadioNetwork::_L120 */ kcg_bool _L120; /* 3 */ MoRC_RisingEdge_digital(atPowerUp, &outC->Context_3); _L32 = (*RadioNetworkID_fromDriver).valid && afterDriverEntryOfANewRadioNetworkID; _L44 = (*RadioNetworkID_fromTrackside).valid && registrationOrderedFromTrackside; if (outC->init) { outC->_L108 = kcg_false; _L89 = kcg_true; } else { outC->_L108 = !registrationOrderFromTracksideCancelled && (registrationOrderedFromTrackside || outC->_L108); _L89 = outC->noValidActualRadioNetworkID_available; } _L95 = (*RadioNetworkID_Default).valid && triggerDecisionThatNoRadioNetworkIDAvailable && _L89; if (((*RadioNetworkID_memorized).valid && outC->Context_3.RE_Output) || _L32 || _L44 || _L95) { if (_L95) { MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, RadioNetworkID_Default); } else if (_L44) { MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, RadioNetworkID_fromTrackside); } else if (_L32) { MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, RadioNetworkID_fromDriver); } else { MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, RadioNetworkID_memorized); } } else if (outC->init) { MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, (MoRC_validRadioNetworkID_Type *) &MoRC_cInvalidRadioNetworkID); } outC->noValidActualRadioNetworkID_available = !outC->actualRadioNetworkID.valid; outC->orderTheRegistrationOfItsConnectedMobiles = outC->Context_3.RE_Output || (afterDriverEntryOfANewRadioNetworkID && (MoRC_ETCS_Level_2 == etcs_level || etcs_level == MoRC_ETCS_Level_3)) || (triggerDecisionThatNoRadioNetworkIDAvailable && outC->noValidActualRadioNetworkID_available); /* 2 */ MoRC_RisingEdge_digital(atPowerOff, &outC->Context_2); outC->memorizeTheLastRadioNetworkID = outC->Context_2.RE_Output && outC->actualRadioNetworkID.valid; if (outC->init) { outC->init = kcg_false; MoRC_kcg_copy_mobileSWStatus_Type( &_L76, (MoRC_mobileSWStatus_Type *) &MoRC_cInvalidMobileSWStatus); } else { MoRC_kcg_copy_mobileSWStatus_Type(&_L76, &outC->mobileSWStatus); } _L89 = _L76.connectionStatus == MoRC_mswc_unregistered; _L95 = _L89 || (MoRC_mswc_unregistered != _L76.connectionStatus && _L76.registeredRadioNetworkID != outC->actualRadioNetworkID.radioNetworkID); _L99 = !(_L76.connectionStatus == MoRC_mswc_establishingSession || _L76.connectionStatus == MoRC_mswc_sessionEstablished); _L103 = !(_L76.connectionStatus == MoRC_mswc_connecting || _L76.connectionStatus == MoRC_mswc_connected); /* 4 */ MoRC_RisingEdge_digital( (kcg_bool) (outC->_L108 && _L95 && _L99 && _L103), &outC->Context_4); _L120 = (_L76.valid && _L76.mobileHW_available && ((registrationOrderedFromTrackside && _L95 && _L99 && _L103) || outC->Context_4.RE_Output)) || outC->orderTheRegistrationOfItsConnectedMobiles || (_L32 || _L44); if (_L120) { tmp.valid = _L120; tmp.action = MoRC_mswa_register; tmp.radioNetworkID = outC->actualRadioNetworkID.radioNetworkID; } else { MoRC_kcg_copy_mobileSWCmd_Type(&tmp, mobileSWCmd); } /* 1 */ MoRC_radioNetworkMobile(mobileHWStatus, &tmp, &outC->Context_1); MoRC_kcg_copy_mobileHWCmd_Type( &outC->mobileHWCmd, &outC->Context_1.mobileHWCmd); MoRC_kcg_copy_mobileSWStatus_Type( &outC->mobileSWStatus, &outC->Context_1.mobileSWStatus); outC->rejectOrderToContactRBC_or_RIU = _L89 || _L76.connectionStatus == MoRC_mswc_registering; }
/* managementOfRadioCommunication */ void MoRC_managementOfRadioCommunication( /* managementOfRadioCommunication::actualTime */MoRC_time_Type actualTime, /* managementOfRadioCommunication::acknowledgementOfTerminationOfCommunicationSessionReceived */kcg_bool acknowledgementOfTerminationOfCommunicationSessionReceived, /* managementOfRadioCommunication::orderReceivedFromTrackside */MoRC_orderToContactAnRBC_Type *orderReceivedFromTrackside, /* managementOfRadioCommunication::orderReceivedFromRBC */MoRC_orderToContactAnRBC_Type *orderReceivedFromRBC, /* managementOfRadioCommunication::orderReceivedFromRadio_InfillUnit */MoRC_orderToContactAnRBC_Type *orderReceivedFromRadio_InfillUnit, /* managementOfRadioCommunication::errorConditionRequiringTerminationDetected */kcg_bool errorConditionRequiringTerminationDetected, /* managementOfRadioCommunication::trainIsRejectedByRBC_duringStartOfMission */kcg_bool trainIsRejectedByRBC_duringStartOfMission, /* managementOfRadioCommunication::driverClosesTheDeskduringStartOfMission */kcg_bool driverClosesTheDeskduringStartOfMission, /* managementOfRadioCommunication::trainExitedFromAnRBCArea */kcg_bool trainExitedFromAnRBCArea, /* managementOfRadioCommunication::endOfMissionIsExecuted */kcg_bool endOfMissionIsExecuted, /* managementOfRadioCommunication::isInCommunicationSessionWithAnRIU */kcg_bool isInCommunicationSessionWithAnRIU, /* managementOfRadioCommunication::atPowerUp */kcg_bool atPowerUp, /* managementOfRadioCommunication::atPowerOff */kcg_bool atPowerOff, /* managementOfRadioCommunication::M_LEVEL */MoRC_M_LEVEL_Type M_LEVEL, /* managementOfRadioCommunication::RadioNetworkID_memorized */MoRC_validRadioNetworkID_Type *RadioNetworkID_memorized, /* managementOfRadioCommunication::RadioNetworkID_fromDriver */MoRC_validRadioNetworkID_Type *RadioNetworkID_fromDriver, /* managementOfRadioCommunication::RadioNetworkID_fromTrackside */MoRC_validRadioNetworkID_Type *RadioNetworkID_fromTrackside, /* managementOfRadioCommunication::afterDriverEntryOfANewRadioNetworkID */kcg_bool afterDriverEntryOfANewRadioNetworkID, /* managementOfRadioCommunication::triggerDecisionThatNoRadioNetworkIDAvailable */kcg_bool triggerDecisionThatNoRadioNetworkIDAvailable, /* managementOfRadioCommunication::mobileHWStatus */MoRC_mobileHWStatus_Type *mobileHWStatus, /* managementOfRadioCommunication::isPartOfAnOngoingStartOfMissionProcedure */kcg_bool isPartOfAnOngoingStartOfMissionProcedure, /* managementOfRadioCommunication::trainPassesALevelTransitionBorder */kcg_bool trainPassesALevelTransitionBorder, /* managementOfRadioCommunication::orderToEstablishACommunicationSession_fromOBU */MoRC_orderToContactAnRBC_Type *orderToEstablishACommunicationSession_fromOBU, /* managementOfRadioCommunication::orderDoesNotRequestToContactAnAcceptingRBC */kcg_bool orderDoesNotRequestToContactAnAcceptingRBC, /* managementOfRadioCommunication::trainPassesA_RBC_RBC_border_WithItsFrontEnd */kcg_bool trainPassesA_RBC_RBC_border_WithItsFrontEnd, /* managementOfRadioCommunication::systemVersionFromTracksideSupported */kcg_bool systemVersionFromTracksideSupported, /* managementOfRadioCommunication::systemVersionReceived */kcg_bool systemVersionReceived, /* managementOfRadioCommunication::M_MODE */MoRC_M_MODE_Type M_MODE, /* managementOfRadioCommunication::atStartOfMission */kcg_bool atStartOfMission, /* managementOfRadioCommunication::modeChangeHasToBeReportedToRBC */kcg_bool modeChangeHasToBeReportedToRBC, /* managementOfRadioCommunication::driverHasManuallyChangedLevel */kcg_bool driverHasManuallyChangedLevel, /* managementOfRadioCommunication::trainFrontReachesEndOfAnnouncedRadioHole */kcg_bool trainFrontReachesEndOfAnnouncedRadioHole, /* managementOfRadioCommunication::startOfMissionProcedureCompleted */kcg_bool startOfMissionProcedureCompleted, /* managementOfRadioCommunication::trainFrontInsideInAnAnnouncedRadioHole */kcg_bool trainFrontInsideInAnAnnouncedRadioHole, /* managementOfRadioCommunication::OBU_hasToEstablishANewSession */kcg_bool OBU_hasToEstablishANewSession, /* managementOfRadioCommunication::startOfMissionProcedureIsGoingOn */kcg_bool startOfMissionProcedureIsGoingOn, /* managementOfRadioCommunication::RadioNetworkID_Default */MoRC_validRadioNetworkID_Type *RadioNetworkID_Default, /* managementOfRadioCommunication::connectionStatusTimerInterval */MoRC_time_Type connectionStatusTimerInterval, MoRC_outC_managementOfRadioCommunication *outC) { MoRC_mobileSWCmd_Type tmp; /* managementOfRadioCommunication::CommunicationSession_SM::NoSession::_L38 */ kcg_bool _L38_CommunicationSession_SM_NoSession; /* managementOfRadioCommunication::CommunicationSession_SM::NoSession::_L37 */ kcg_bool _L37_CommunicationSession_SM_NoSession; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing */ kcg_bool br_1_guard_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L35 */ kcg_bool _L35_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L31 */ kcg_bool _L31_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L19 */ kcg_bool _L19_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L21 */ kcg_bool _L21_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L23 */ kcg_bool _L23_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L24 */ kcg_bool _L24_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Establishing::_L25 */ kcg_bool _L25_CommunicationSession_SM_Establishing; /* managementOfRadioCommunication::CommunicationSession_SM::Maintaining */ kcg_bool br_1_guard_CommunicationSession_SM_Maintaining; /* managementOfRadioCommunication::CommunicationSession_SM::Maintaining::_L2 */ kcg_bool _L2_CommunicationSession_SM_Maintaining; /* managementOfRadioCommunication::CommunicationSession_SM::Terminating::_L12 */ kcg_bool _L12_CommunicationSession_SM_Terminating; /* managementOfRadioCommunication::CommunicationSession_SM::Terminating::_L1 */ kcg_bool _L1_CommunicationSession_SM_Terminating; /* managementOfRadioCommunication::CommunicationSession_SM::Terminating::_L3 */ kcg_bool _L3_CommunicationSession_SM_Terminating; /* managementOfRadioCommunication::mobileSWStatus_loc */ MoRC_mobileSWStatus_Type last_mobileSWStatus_loc; /* managementOfRadioCommunication::establishingACommunicationSessionAborted */ kcg_bool last_establishingACommunicationSessionAborted; /* managementOfRadioCommunication::sessionStatus */ MoRC_sessionStatus_Type last_sessionStatus; /* managementOfRadioCommunication::communicationSessionInitiatedFromTrackside */ kcg_bool last_communicationSessionInitiatedFromTrackside; /* managementOfRadioCommunication::communicationSessionInitiatedByOBU */ kcg_bool last_communicationSessionInitiatedByOBU; /* managementOfRadioCommunication::sessionEstablished */ kcg_bool last_sessionEstablished; /* managementOfRadioCommunication::sessionSuccessfullyEstablished */ kcg_bool last_sessionSuccessfullyEstablished; /* managementOfRadioCommunication::CommunicationSession_SM */ MoRC_SSM_ST_CommunicationSession_SM CommunicationSession_SM_state_act; /* managementOfRadioCommunication::CommunicationSession_SM */ kcg_bool CommunicationSession_SM_reset_sel; /* managementOfRadioCommunication::initiateTermination */ kcg_bool initiateTermination; if (outC->init) { last_sessionSuccessfullyEstablished = kcg_false; last_sessionEstablished = kcg_false; last_communicationSessionInitiatedByOBU = kcg_false; last_communicationSessionInitiatedFromTrackside = kcg_false; last_establishingACommunicationSessionAborted = kcg_false; initiateTermination = kcg_false; MoRC_kcg_copy_mobileSWStatus_Type( &last_mobileSWStatus_loc, (MoRC_mobileSWStatus_Type *) &MoRC_cInvalidMobileSWStatus); last_sessionStatus = MoRC_morc_st_inactive; CommunicationSession_SM_state_act = MoRC_SSM_st_NoSession_CommunicationSession_SM; outC->init = kcg_false; CommunicationSession_SM_reset_sel = kcg_false; } else { initiateTermination = outC->prevSessionTerminatedDueToLossOfSafeRadioConnection; MoRC_kcg_copy_mobileSWStatus_Type( &last_mobileSWStatus_loc, &outC->mobileSWStatus); last_establishingACommunicationSessionAborted = outC->establishingACommunicationSessionAborted; last_sessionStatus = outC->sessionStatus; last_communicationSessionInitiatedFromTrackside = outC->communicationSessionInitiatedFromTrackside; last_communicationSessionInitiatedByOBU = outC->communicationSessionInitiatedByOBU; last_sessionEstablished = outC->sessionEstablished; last_sessionSuccessfullyEstablished = outC->sessionSuccessfullyEstablished; CommunicationSession_SM_state_act = outC->CommunicationSession_SM_state_nxt; CommunicationSession_SM_reset_sel = outC->CommunicationSession_SM_reset_nxt; } switch (CommunicationSession_SM_state_act) { case MoRC_SSM_st_NoSession_CommunicationSession_SM : outC->sessionStatus = MoRC_morc_st_inactive; break; case MoRC_SSM_st_Establishing_CommunicationSession_SM : outC->sessionStatus = MoRC_morc_st_establishing; break; case MoRC_SSM_st_Maintaining_CommunicationSession_SM : outC->sessionStatus = MoRC_morc_st_maintaining; break; case MoRC_SSM_st_Terminating_CommunicationSession_SM : outC->sessionStatus = MoRC_morc_st_terminating; break; } /* 1 */ MoRC_terminateAndEstablishSession( orderReceivedFromTrackside, outC->sessionStatus, OBU_hasToEstablishANewSession, &outC->_9_Context_1); switch (CommunicationSession_SM_state_act) { case MoRC_SSM_st_Terminating_CommunicationSession_SM : br_1_guard_CommunicationSession_SM_Maintaining = kcg_false; _L38_CommunicationSession_SM_NoSession = kcg_false; if (CommunicationSession_SM_reset_sel) { /* 1 */ MoRC_terminating_a_CommunicationSession_reset(&outC->_7_Context_1); } /* 1 */ MoRC_terminating_a_CommunicationSession( kcg_true, (kcg_bool) (MoRC_morc_st_maintaining == last_sessionStatus), acknowledgementOfTerminationOfCommunicationSessionReceived, (kcg_bool) (last_sessionStatus == MoRC_morc_st_establishing), actualTime, last_establishingACommunicationSessionAborted, &outC->_7_Context_1); _L1_CommunicationSession_SM_Terminating = outC->_7_Context_1.sendATerminationOfCommunicationMessage; _L3_CommunicationSession_SM_Terminating = outC->_7_Context_1.ignoreMessagesFromRBC_exceptAckOfTerminationOfCommunicationSession; _L12_CommunicationSession_SM_Terminating = outC->_7_Context_1.communicationSessionTerminated; if (outC->_7_Context_1.requestReleaseOfSafeRadioConnectionWithTrackside) { MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cTerminateSafeRadioConnectionCmd); } else { MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cInvalidMobileSWCmd); } br_1_guard_CommunicationSession_SM_Establishing = kcg_false; outC->prevSessionTerminatedDueToLossOfSafeRadioConnection = initiateTermination; break; case MoRC_SSM_st_Maintaining_CommunicationSession_SM : br_1_guard_CommunicationSession_SM_Maintaining = kcg_false; _L38_CommunicationSession_SM_NoSession = kcg_false; if (CommunicationSession_SM_reset_sel) { /* 1 */ MoRC_maintaining_a_CommunicationSession_reset(&outC->_6_Context_1); } /* 1 */ MoRC_maintaining_a_CommunicationSession( last_sessionEstablished, (kcg_bool) (last_mobileSWStatus_loc.valid && MoRC_mswc_registered == last_mobileSWStatus_loc.connectionStatus), (kcg_bool) (last_mobileSWStatus_loc.valid && last_mobileSWStatus_loc.connectionStatus == MoRC_mswc_unregistered), kcg_true, trainFrontInsideInAnAnnouncedRadioHole, actualTime, &outC->_6_Context_1); _L2_CommunicationSession_SM_Maintaining = outC->_6_Context_1.informTheDriverThatNoConnectionWasSetup; if (outC->_6_Context_1.requestsToSetupTheSafeRadioConnectionStopped) { MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cTerminateSafeRadioConnectionCmd); } else if (outC->_6_Context_1.tryToSetupANewSafeRadioConnection) { MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cRegisterSafeRadioConnectionCmd); } else { MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cInvalidMobileSWCmd); } outC->prevSessionTerminatedDueToLossOfSafeRadioConnection = outC->_6_Context_1.finalAttemptToSetupTheSafeRadioConnectionFailed; br_1_guard_CommunicationSession_SM_Establishing = outC->_6_Context_1.firstRequestToSetupASafeRadioConnection; break; case MoRC_SSM_st_Establishing_CommunicationSession_SM : if (CommunicationSession_SM_reset_sel) { /* 2 */ MoRC_establish_a_CommunicationSession_reset(&outC->_8_Context_2); } /* 2 */ MoRC_establish_a_CommunicationSession( isPartOfAnOngoingStartOfMissionProcedure, (kcg_bool) (last_mobileSWStatus_loc.valid && last_mobileSWStatus_loc.connectionStatus == MoRC_mswc_registered), last_mobileSWStatus_loc.settingUpConnectionHasFailed, endOfMissionIsExecuted, trainPassesALevelTransitionBorder, &outC->_9_Context_1.newOrderToEstablishASession_out, orderToEstablishACommunicationSession_fromOBU, orderDoesNotRequestToContactAnAcceptingRBC, trainPassesA_RBC_RBC_border_WithItsFrontEnd, systemVersionFromTracksideSupported, systemVersionReceived, last_communicationSessionInitiatedFromTrackside, last_communicationSessionInitiatedByOBU, last_communicationSessionInitiatedFromTrackside, &outC->_8_Context_2); _L19_CommunicationSession_SM_Establishing = outC->_8_Context_2.InformTheDriverThatNoConnectionWasSetup; _L21_CommunicationSession_SM_Establishing = outC->_8_Context_2.sendTheMessageInitiationOfCommunicationSessionToTrackside; _L23_CommunicationSession_SM_Establishing = outC->_8_Context_2.sendMessage_NoCompatibleVersionSupported; _L24_CommunicationSession_SM_Establishing = outC->_8_Context_2.terminateTheCommunicationSession; _L25_CommunicationSession_SM_Establishing = outC->_8_Context_2.sendASessionEstablishedReportToTrackside; _L31_CommunicationSession_SM_Establishing = outC->_8_Context_2.sessionSuccessfullyEstablished; _L35_CommunicationSession_SM_Establishing = outC->_8_Context_2.establishingACommunicationSessionAborted; _L38_CommunicationSession_SM_NoSession = outC->_8_Context_2.requestsToSetupTheSafeRadioConnectionStopped; br_1_guard_CommunicationSession_SM_Maintaining = outC->_8_Context_2.requestTheSetupOfASafeRadioConnection; MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cInvalidMobileSWCmd); outC->prevSessionTerminatedDueToLossOfSafeRadioConnection = outC->_8_Context_2.finalAttemptToSetupTheSafeRadioConnectionFailed; br_1_guard_CommunicationSession_SM_Establishing = outC->_8_Context_2.firstRequestToSetupASafeRadioConnection; break; case MoRC_SSM_st_NoSession_CommunicationSession_SM : br_1_guard_CommunicationSession_SM_Maintaining = kcg_false; _L38_CommunicationSession_SM_NoSession = kcg_false; MoRC_kcg_copy_mobileSWCmd_Type( &tmp, (MoRC_mobileSWCmd_Type *) &MoRC_cInvalidMobileSWCmd); br_1_guard_CommunicationSession_SM_Establishing = kcg_false; outC->prevSessionTerminatedDueToLossOfSafeRadioConnection = initiateTermination; break; } /* 1 */ MoRC_registeringToTheRadioNetwork( atPowerUp, afterDriverEntryOfANewRadioNetworkID, M_LEVEL, br_1_guard_CommunicationSession_SM_Maintaining, _L38_CommunicationSession_SM_NoSession, atPowerOff, RadioNetworkID_memorized, RadioNetworkID_fromDriver, RadioNetworkID_fromTrackside, triggerDecisionThatNoRadioNetworkIDAvailable, mobileHWStatus, &tmp, RadioNetworkID_Default, &outC->_5_Context_1); outC->orderTheRegistrationOfItsConnectedMobiles = outC->_5_Context_1.orderTheRegistrationOfItsConnectedMobiles; outC->memorizeTheLastRadioNetworkID = outC->_5_Context_1.memorizeTheLastRadioNetworkID; MoRC_kcg_copy_validRadioNetworkID_Type( &outC->actualRadioNetworkID, &outC->_5_Context_1.actualRadioNetworkID); outC->rejectOrderToContactRBC_or_RIU = outC->_5_Context_1.rejectOrderToContactRBC_or_RIU; MoRC_kcg_copy_mobileHWCmd_Type( &outC->mobileHWCmd, &outC->_5_Context_1.mobileHWCmd); MoRC_kcg_copy_mobileSWStatus_Type( &outC->mobileSWStatus, &outC->_5_Context_1.mobileSWStatus); br_1_guard_CommunicationSession_SM_Maintaining = outC->mobileSWStatus.connectionStatus == MoRC_mswc_registered; /* 1 */ MoRC_FallingEdge_digital( (kcg_bool) (M_LEVEL == MoRC_ETCS_Level_1), &outC->_4_Context_1); /* 2 */ MoRC_initiateTerminatingASession( orderReceivedFromTrackside, errorConditionRequiringTerminationDetected, trainIsRejectedByRBC_duringStartOfMission, driverClosesTheDeskduringStartOfMission, trainExitedFromAnRBCArea, orderReceivedFromTrackside, actualTime, isInCommunicationSessionWithAnRIU, outC->_4_Context_1.FE_Output, endOfMissionIsExecuted, &outC->_3_Context_2); outC->sendAPositionReport = outC->_3_Context_2.sendAPositionReport; initiateTermination = outC->_3_Context_2.initiateTermination || outC->_9_Context_1.initiateTermination; /* 2 */ MoRC_RisingEdge_digital( br_1_guard_CommunicationSession_SM_Maintaining, &outC->_2_Context_2); /* 2 */ MoRC_FallingEdge_digital( br_1_guard_CommunicationSession_SM_Maintaining, &outC->Context_2); /* 3 */ MoRC_RisingEdge_digital( (kcg_bool) (outC->mobileSWStatus.connectionStatus == MoRC_mswc_unregistered), &outC->Context_3); /* 1 */ MoRC_safeRadioConnectionIndication( startOfMissionProcedureIsGoingOn, outC->prevSessionTerminatedDueToLossOfSafeRadioConnection, outC->prevSessionTerminatedDueToLossOfSafeRadioConnection, _L38_CommunicationSession_SM_NoSession, (kcg_bool) (outC->mobileSWStatus.valid && outC->_2_Context_2.RE_Output), (kcg_bool) (outC->mobileSWStatus.valid && outC->Context_2.FE_Output), (kcg_bool) (outC->mobileSWStatus.valid && outC->Context_3.RE_Output), trainFrontInsideInAnAnnouncedRadioHole, actualTime, br_1_guard_CommunicationSession_SM_Establishing, br_1_guard_CommunicationSession_SM_Establishing, connectionStatusTimerInterval, &outC->_1_Context_1); MoRC_kcg_copy_safeRadioConnectionStatusValid_Type( &outC->safeRadioConnectionStatus_toDriver, &outC->_1_Context_1.connectionStatus); switch (CommunicationSession_SM_state_act) { case MoRC_SSM_st_NoSession_CommunicationSession_SM : outC->InformTheDriverThatNoConnectionWasSetup = kcg_false; outC->sendTheMessageInitiationOfCommunicationSessionToTrackside = kcg_false; outC->sendMessage_NoCompatibleVersionSupported = kcg_false; outC->sendASessionEstablishedReportToTrackside = kcg_false; outC->sendATerminationOfCommunicationMessage = kcg_false; outC->ignoreMessagesFromRBC_exceptAckOfTerminationOfCommunicationSession = kcg_false; outC->sessionSuccessfullyEstablished = kcg_false; outC->sessionEstablished = kcg_false; _L38_CommunicationSession_SM_NoSession = /* 2 */ MoRC_isOrderToEstablishConnection(orderReceivedFromRadio_InfillUnit); _L37_CommunicationSession_SM_NoSession = /* 1 */ MoRC_isOrderToEstablishConnection(orderReceivedFromRBC); if (CommunicationSession_SM_reset_sel) { /* 1 */ MoRC_Initiate_a_Session_reset(&outC->Context_1); } /* 1 */ MoRC_Initiate_a_Session( /* isOrderToEstablishConnection */ MoRC_isOrderToEstablishConnection( orderToEstablishACommunicationSession_fromOBU), _L37_CommunicationSession_SM_NoSession, _L38_CommunicationSession_SM_NoSession, M_LEVEL, atStartOfMission, (kcg_bool) (_L37_CommunicationSession_SM_NoSession || _L38_CommunicationSession_SM_NoSession), M_MODE, modeChangeHasToBeReportedToRBC, driverHasManuallyChangedLevel, trainFrontReachesEndOfAnnouncedRadioHole, outC->prevSessionTerminatedDueToLossOfSafeRadioConnection, startOfMissionProcedureCompleted, kcg_true, outC->_9_Context_1.initiateEstablishingNewSession, &outC->Context_1); outC->CommunicationSession_SM_reset_nxt = outC->Context_1.initiate_a_communicationSession_Request; if (outC->Context_1.initiate_a_communicationSession_Request) { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Establishing_CommunicationSession_SM; } else { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_NoSession_CommunicationSession_SM; } outC->establishingACommunicationSessionAborted = last_establishingACommunicationSessionAborted; outC->communicationSessionInitiatedFromTrackside = outC->Context_1.communicationSessionInitiatedFromTrackside_; outC->communicationSessionInitiatedByOBU = outC->Context_1.communicationSessionInitiatedByOBU_; break; case MoRC_SSM_st_Establishing_CommunicationSession_SM : outC->sendATerminationOfCommunicationMessage = kcg_false; outC->ignoreMessagesFromRBC_exceptAckOfTerminationOfCommunicationSession = kcg_false; br_1_guard_CommunicationSession_SM_Establishing = _L24_CommunicationSession_SM_Establishing || initiateTermination; if (br_1_guard_CommunicationSession_SM_Establishing) { outC->CommunicationSession_SM_reset_nxt = kcg_true; outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Terminating_CommunicationSession_SM; } else { outC->CommunicationSession_SM_reset_nxt = _L31_CommunicationSession_SM_Establishing; if (_L31_CommunicationSession_SM_Establishing) { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Maintaining_CommunicationSession_SM; } else { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Establishing_CommunicationSession_SM; } } outC->establishingACommunicationSessionAborted = _L35_CommunicationSession_SM_Establishing; outC->communicationSessionInitiatedFromTrackside = last_communicationSessionInitiatedFromTrackside; outC->communicationSessionInitiatedByOBU = last_communicationSessionInitiatedByOBU; outC->sessionEstablished = _L31_CommunicationSession_SM_Establishing; outC->sessionSuccessfullyEstablished = _L31_CommunicationSession_SM_Establishing; outC->sendASessionEstablishedReportToTrackside = _L25_CommunicationSession_SM_Establishing; outC->sendMessage_NoCompatibleVersionSupported = _L23_CommunicationSession_SM_Establishing; outC->sendTheMessageInitiationOfCommunicationSessionToTrackside = _L21_CommunicationSession_SM_Establishing; outC->InformTheDriverThatNoConnectionWasSetup = _L19_CommunicationSession_SM_Establishing; break; case MoRC_SSM_st_Maintaining_CommunicationSession_SM : outC->sendTheMessageInitiationOfCommunicationSessionToTrackside = kcg_false; outC->sendMessage_NoCompatibleVersionSupported = kcg_false; outC->sendASessionEstablishedReportToTrackside = kcg_false; outC->sendATerminationOfCommunicationMessage = kcg_false; outC->ignoreMessagesFromRBC_exceptAckOfTerminationOfCommunicationSession = kcg_false; br_1_guard_CommunicationSession_SM_Maintaining = kcg_false || initiateTermination; outC->CommunicationSession_SM_reset_nxt = br_1_guard_CommunicationSession_SM_Maintaining; if (br_1_guard_CommunicationSession_SM_Maintaining) { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Terminating_CommunicationSession_SM; } else { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Maintaining_CommunicationSession_SM; } outC->establishingACommunicationSessionAborted = last_establishingACommunicationSessionAborted; outC->communicationSessionInitiatedFromTrackside = last_communicationSessionInitiatedFromTrackside; outC->communicationSessionInitiatedByOBU = last_communicationSessionInitiatedByOBU; outC->sessionEstablished = last_sessionEstablished; outC->sessionSuccessfullyEstablished = last_sessionSuccessfullyEstablished; outC->InformTheDriverThatNoConnectionWasSetup = _L2_CommunicationSession_SM_Maintaining; break; case MoRC_SSM_st_Terminating_CommunicationSession_SM : outC->InformTheDriverThatNoConnectionWasSetup = kcg_false; outC->sendTheMessageInitiationOfCommunicationSessionToTrackside = kcg_false; outC->sendMessage_NoCompatibleVersionSupported = kcg_false; outC->sendASessionEstablishedReportToTrackside = kcg_false; outC->CommunicationSession_SM_reset_nxt = _L12_CommunicationSession_SM_Terminating; if (_L12_CommunicationSession_SM_Terminating) { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_NoSession_CommunicationSession_SM; } else { outC->CommunicationSession_SM_state_nxt = MoRC_SSM_st_Terminating_CommunicationSession_SM; } outC->establishingACommunicationSessionAborted = last_establishingACommunicationSessionAborted; outC->communicationSessionInitiatedFromTrackside = last_communicationSessionInitiatedFromTrackside; outC->communicationSessionInitiatedByOBU = last_communicationSessionInitiatedByOBU; outC->sessionEstablished = last_sessionEstablished; outC->sessionSuccessfullyEstablished = last_sessionSuccessfullyEstablished; outC->ignoreMessagesFromRBC_exceptAckOfTerminationOfCommunicationSession = _L3_CommunicationSession_SM_Terminating; outC->sendATerminationOfCommunicationMessage = _L1_CommunicationSession_SM_Terminating; break; } }