/*test case:test the reaction of the system called with an activation of a task*/ static void test_t1_instance2(void) { ApplicationType result_app_1; StatusType result_inst_1, result_inst_2, result_inst_3, result_inst_4; ScheduleTableStatusType ScheduleTableStatusType_inst_1; TickType TickType_inst_1; SCHEDULING_CHECK_INIT(10); result_app_1 = GetApplicationID(); SCHEDULING_CHECK_AND_EQUAL_INT(10, app1, result_app_1); SCHEDULING_CHECK_INIT(11); result_inst_1 = GetAlarm(Alarm1, &TickType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(11, E_OS_NOFUNC, result_inst_1); SCHEDULING_CHECK_INIT(12); result_inst_2 = GetScheduleTableStatus(sched1, &ScheduleTableStatusType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT_FIRST(12 , SCHEDULETABLE_STOPPED , ScheduleTableStatusType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(12, E_OK, result_inst_2); SCHEDULING_CHECK_INIT(13); result_inst_3 = ReleaseResource(Resource1); SCHEDULING_CHECK_AND_EQUAL_INT(13, E_OS_NOFUNC, result_inst_3); SCHEDULING_CHECK_INIT(14); result_inst_4 = TerminateApplication(app1, NO_RESTART); SCHEDULING_CHECK_AND_EQUAL_INT(140, E_OK, result_inst_4); }
/*test case:test the reaction of the system called with an activation of a task*/ static void test_t1_instance(void) { ApplicationType result_app_1; StatusType result_inst_1; SCHEDULING_CHECK_INIT(1); result_app_1 = GetApplicationID(); SCHEDULING_CHECK_AND_EQUAL_INT(1, INVALID_OSAPPLICATION, result_app_1); SCHEDULING_CHECK_INIT(2); result_inst_1 = TerminateApplication(NO_RESTART); SCHEDULING_CHECK_AND_EQUAL_INT(2, E_OS_CALLEVEL, result_inst_1); }
/*test case:test the reaction of the system called with an activation of a task*/ static void test_t1_instance1(void) { ApplicationType result_app_1; StatusType result_inst_1, result_inst_2, result_inst_3, result_inst_4, result_inst_5, result_inst_6, result_inst_7; ScheduleTableStatusType ScheduleTableStatusType_inst_1; TickType TickType_inst_1; SCHEDULING_CHECK_INIT(1); result_app_1 = GetApplicationID(); SCHEDULING_CHECK_AND_EQUAL_INT(1, app1, result_app_1); SCHEDULING_CHECK_INIT(2); result_inst_1 = SetRelAlarm(Alarm1, 1, 0); SCHEDULING_CHECK_AND_EQUAL_INT(2, E_OK, result_inst_1); SCHEDULING_CHECK_INIT(3); result_inst_2 = GetAlarm(Alarm1, &TickType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(3, E_OK, result_inst_2); SCHEDULING_CHECK_INIT(4); result_inst_3 = StartScheduleTableAbs(sched1, 0); SCHEDULING_CHECK_AND_EQUAL_INT(4, E_OK, result_inst_3); SCHEDULING_CHECK_INIT(5); result_inst_4 = GetScheduleTableStatus(sched1, &ScheduleTableStatusType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT_FIRST(5 , SCHEDULETABLE_RUNNING , ScheduleTableStatusType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(5, E_OK, result_inst_4); SCHEDULING_CHECK_INIT(6); result_inst_5 = GetResource(Resource1); SCHEDULING_CHECK_AND_EQUAL_INT(6, E_OK, result_inst_5); SCHEDULING_CHECK_INIT(7); result_inst_6 = TerminateApplication(INVALID_RESTART); SCHEDULING_CHECK_AND_EQUAL_INT(8, E_OS_VALUE, result_inst_6); SCHEDULING_CHECK_INIT(9); result_inst_7 = TerminateApplication(RESTART); SCHEDULING_CHECK_AND_EQUAL_INT(90, E_OK, result_inst_7); }
/*test case:test the reaction of the system called with an activation of a task*/ static void test_t1_instance(void) { ApplicationType ApplicationType_inst_1, ApplicationType_inst_2; ISRType ISRType_inst_1; ObjectAccessType ObjectAccessType_inst_1; ScheduleTableStatusType ScheduleTableStatusType_inst_1; StatusType result_inst_1, result_inst_2, result_inst_3, result_inst_4, result_inst_5, result_inst_6, result_inst_7, result_inst_8, result_inst_9, result_inst_10, result_inst_11, result_inst_12; TickType TickType_inst_1, TickType_inst_2; SCHEDULING_CHECK_STEP(1); DisableAllInterrupts(); SCHEDULING_CHECK_INIT(2); ApplicationType_inst_1 = GetApplicationID(); SCHEDULING_CHECK_AND_EQUAL_INT(3, app1, ApplicationType_inst_1); SCHEDULING_CHECK_INIT(4); ISRType_inst_1 = GetISRID(); SCHEDULING_CHECK_AND_EQUAL_INT(5, INVALID_ISR, ISRType_inst_1); SCHEDULING_CHECK_INIT(6); ObjectAccessType_inst_1 = CheckObjectAccess(app1, OBJECT_TASK, t1); SCHEDULING_CHECK_AND_EQUAL_INT(7, ACCESS, ObjectAccessType_inst_1); SCHEDULING_CHECK_INIT(8); ApplicationType_inst_2 = CheckObjectOwnership(OBJECT_TASK, t1); SCHEDULING_CHECK_AND_EQUAL_INT(9, app1, ApplicationType_inst_2); SCHEDULING_CHECK_INIT(10); result_inst_1 = StartScheduleTableRel(sched1, 1); SCHEDULING_CHECK_AND_EQUAL_INT(11, E_OS_DISABLEDINT, result_inst_1); SCHEDULING_CHECK_INIT(12); result_inst_2 = StartScheduleTableAbs(sched1, 0); SCHEDULING_CHECK_AND_EQUAL_INT(13, E_OS_DISABLEDINT, result_inst_2); SCHEDULING_CHECK_INIT(14); result_inst_3 = StopScheduleTable(sched1); SCHEDULING_CHECK_AND_EQUAL_INT(15, E_OS_DISABLEDINT, result_inst_3); SCHEDULING_CHECK_INIT(16); result_inst_4 = NextScheduleTable(sched1, sched2); SCHEDULING_CHECK_AND_EQUAL_INT(17, E_OS_DISABLEDINT, result_inst_4); SCHEDULING_CHECK_INIT(18); result_inst_5 = StartScheduleTableSynchron(sched1); SCHEDULING_CHECK_AND_EQUAL_INT(19, E_OS_DISABLEDINT, result_inst_5); SCHEDULING_CHECK_INIT(20); result_inst_6 = SyncScheduleTable(sched1, 0); SCHEDULING_CHECK_AND_EQUAL_INT(21, E_OS_DISABLEDINT, result_inst_6); SCHEDULING_CHECK_INIT(22); result_inst_7 = GetScheduleTableStatus(sched1, &ScheduleTableStatusType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(23, E_OS_DISABLEDINT, result_inst_7); SCHEDULING_CHECK_INIT(24); result_inst_8 = SetScheduleTableAsync(sched1); SCHEDULING_CHECK_AND_EQUAL_INT(25, E_OS_DISABLEDINT, result_inst_8); SCHEDULING_CHECK_INIT(26); result_inst_9 = IncrementCounter(Software_Counter1); SCHEDULING_CHECK_AND_EQUAL_INT(27, E_OS_DISABLEDINT, result_inst_9); SCHEDULING_CHECK_INIT(28); result_inst_10 = GetCounterValue(Software_Counter1, &TickType_inst_1); SCHEDULING_CHECK_AND_EQUAL_INT(29, E_OS_DISABLEDINT, result_inst_10); SCHEDULING_CHECK_INIT(30); result_inst_11 = GetElapsedCounterValue(Software_Counter1, &TickType_inst_1, &TickType_inst_2); SCHEDULING_CHECK_AND_EQUAL_INT(31, E_OS_DISABLEDINT, result_inst_11); SCHEDULING_CHECK_INIT(32); result_inst_12 = TerminateApplication(app1, NO_RESTART); SCHEDULING_CHECK_AND_EQUAL_INT(33, E_OS_DISABLEDINT, result_inst_12); SCHEDULING_CHECK_STEP(34); EnableAllInterrupts(); /* Missing : - CallTrustedFunction - CheckISRMemoryAccess - CheckTaskMemoryAccess - GetActiveApplicationMode (OS tests) Ok but not tested : - StartOS (OS tests) - ShutdownOS (OS tests) */ }
void Application::Start () { #ifdef TEST_START_APPLICATION std::cout << "Start Application: src: " << GetSource ()->GetIDNetworkNode () << " dst: " << GetDestination ()->GetIDNetworkNode () << std::endl; #endif // 1 - create radio bearer m_radioBearer = new RadioBearer (); //std::cout<<"RB"<<std::endl;//memorytest m_radioBearer->GetRlcEntity ()->SetRlcEntityIndex (GetApplicationID ()); if (GetSource ()->GetNodeType() == NetworkNode::TYPE_UE) { //create an UL radio bearer between UE and targetENB UserEquipment* ue = (UserEquipment*) GetSource (); ue->SetNodeState (NetworkNode::STATE_ACTIVE); #ifdef TEST_START_APPLICATION std::cout << "Create UL radio bearer bewtween: " << GetSource ()->GetIDNetworkNode () << " and " << ue->GetTargetNode ()->GetIDNetworkNode () << std::endl; #endif m_radioBearer->SetSource (ue); m_radioBearer->SetDestination (ue->GetTargetNode ()); m_radioBearer->SetClassifierParameters (GetClassifierParameters ()); m_radioBearer->SetApplication (this); m_radioBearer->SetQoSParameters (GetQoSParameters ()); } else if (GetSource ()->GetNodeType() == NetworkNode::TYPE_GW || GetSource ()->GetNodeType() == NetworkNode::TYPE_ENODEB || GetSource ()->GetNodeType() == NetworkNode::TYPE_HOME_BASE_STATION) { //create an DL radio bearer between targetENB and UE UserEquipment* ue = (UserEquipment*) GetDestination (); ue->SetNodeState (NetworkNode::STATE_ACTIVE); #ifdef TEST_START_APPLICATION std::cout << "Create DL radio bearer bewtween: " << ue->GetTargetNode ()->GetIDNetworkNode () << " and " << ue->GetIDNetworkNode () << std::endl; #endif m_radioBearer->SetSource (ue->GetTargetNode ()); m_radioBearer->SetDestination (ue); m_radioBearer->SetClassifierParameters (GetClassifierParameters ()); m_radioBearer->SetApplication (this); m_radioBearer->SetQoSParameters (GetQoSParameters ()); } m_radioBearer->GetSource ()->GetProtocolStack ()->GetRrcEntity ()->AddRadioBearer (m_radioBearer); // 2 - create application sink m_applicationSink = new ApplicationSink (); //std::cout<<"AS"<<std::endl;//memorytest m_applicationSink->SetClassifierParameters (GetClassifierParameters ()); m_applicationSink->SetSourceApplication (this); // 3 - create radio bearer sink m_bearerSink = new RadioBearerSink (); //std::cout<<"RBS"<<std::endl;//memorytest m_bearerSink->GetRlcEntity ()->SetRlcEntityIndex (GetApplicationID ()); m_bearerSink->SetApplication (m_applicationSink); m_bearerSink->SetClassifierParameters (GetClassifierParameters ()); m_bearerSink->SetQoSParameters (GetQoSParameters ()); if (GetSource ()->GetNodeType() == NetworkNode::TYPE_UE) { UserEquipment* ue = (UserEquipment*) GetSource (); ue->SetNodeState (NetworkNode::STATE_ACTIVE); m_bearerSink->SetSource (ue); m_bearerSink->SetDestination (ue->GetTargetNode ()); } else if (GetSource ()->GetNodeType() == NetworkNode::TYPE_GW || GetSource ()->GetNodeType() == NetworkNode::TYPE_ENODEB || GetSource ()->GetNodeType() == NetworkNode::TYPE_HOME_BASE_STATION) { UserEquipment* ue = (UserEquipment*) GetDestination (); ue->SetNodeState (NetworkNode::STATE_ACTIVE); m_bearerSink->SetSource (ue->GetTargetNode ()); m_bearerSink->SetDestination (ue); } // 4 - add in radio bearer a pointer to the radio bearer sink m_radioBearer->GetDestination() ->GetProtocolStack ()->GetRrcEntity ()->AddRadioBearerSink(m_bearerSink); m_applicationSink->SetRadioBearerSink (m_bearerSink); // 4 attach UE on the UL or DL channel if (GetSource ()->GetNodeType() == NetworkNode::TYPE_UE) { UserEquipment* ue = (UserEquipment*) GetSource (); /*mouan LteChannel *ch = ue->GetTargetNode ()->GetPhy ()->GetUlChannel (); if (!ch->IsAttached (ue)) { ch->AddDevice (ue); } mouan end*/ ue->MakeActive (); } else if (GetSource ()->GetNodeType() == NetworkNode::TYPE_GW || GetSource ()->GetNodeType() == NetworkNode::TYPE_ENODEB || GetSource ()->GetNodeType() == NetworkNode::TYPE_HOME_BASE_STATION) { UserEquipment* ue = (UserEquipment*) GetDestination (); LteChannel *ch = ue->GetTargetNode ()->GetPhy ()->GetDlChannel (); if (!ch->IsAttached (ue)) { ch->AddDevice (ue); } ue->MakeActive (); } #ifdef TEST_START_APPLICATION std::cout << "CREATED RADIO BEARER " << m_radioBearer->GetApplication ()->GetApplicationID () << " BETWEEN " << m_radioBearer->GetSource ()->GetIDNetworkNode () << " and " << m_radioBearer->GetDestination () ->GetIDNetworkNode ()<< std::endl; #endif DoStart (); }