Commit 6277038d authored by Navid Nikaein's avatar Navid Nikaein

remove the OMG SUMO related files and update te top-level OMG and cmakefiles

parent 4787c975
dev 1 128-ues 207-feature-ued-platform-support 256_QAM_demod 2cw_fairRRscd 340-fix-beamforming-for-multiple-antenna 342-isip-pcie-lib 375-syrtem-sdr-platform 383-ulsch-scheduler-optimization 387-fraunhofer-iis-transmission-mode-4 401-bug-related-to-nr-pucch-format-2-generator 408-reworked 408-ue-main-threads 445-LDPC-implementation-on-GPU 459-pusch-based-ta-updates 464-ru_beamforming_in_gpu 464-ru_beamforming_in_gpu-CPUsubfunction 472-add-pusch-dmrs-modes 481-ldpc-decoder-on-gpu 5g_fapi_scf Fix_SA_SIB1 LTE-sidelink LTE_TRX_on_single_port NCTU_CS_ISIP NCTU_CS_ISIP_CPU NCTU_CS_ISIP_GPU NCTU_OpinConnect_LDPC NR-PHY-MAC-IF-multi-UE NRPRACH_highSpeed_saankhya NRUE_usedlschparallel NR_10MHz NR_CSI_reporting NR_DCI_01 NR_DLUL_PF NR_DLUL_PF_4UL NR_DLUL_PF_rebased NR_DL_MIMO NR_DL_sched_fixes NR_DL_scheduler NR_FAPI_beamindex_SSB_RO NR_FAPI_beamindex_SSB_RO_SEMPROJ NR_FDD_FIX NR_FR2_RA NR_FR2_RRC_SSB NR_FR2_initsync_fixes NR_MAC_CE_GlobalEdge NR_MAC_Multi_Rach_GlobalEdge NR_MAC_Multi_Rach_GlobalEdge-old NR_MAC_SSB NR_MAC_SSB_RO_GlobalEdge NR_MAC_SSB_RO_UE_IDCC NR_MAC_SSB_RO_merge NR_MAC_TCI_UCI_GlobalEdge NR_MCS_BLER NR_NGAP NR_PDCP_noS1 NR_PUCCH_MultiUE NR_RA_cleanup NR_RA_updates NR_RRCConfiguragion_FR2 NR_RRCConfiguration NR_RRCConfiguration_FR2 NR_RRCConfiguration_S1U NR_RRCConfiguration_merge_develop NR_RRCConfiguration_sync_source NR_RRCConfiguration_trx_thread NR_RRC_CP_bugfix NR_RRC_PDCP NR_RRC_PRACH_procedures NR_RRC_PRACH_procedures_todevelop NR_RRC_PUSCH NR_RRC_TA NR_RRC_X2AP_AMBR_Change_Global_edge NR_RRC_X2AP_RemoveHardcodings_GlobalEdge NR_RRC_config_simplified NR_RRC_harq NR_RRC_harq_b NR_RRC_harq_hacks NR_RRC_harq_newdcipdu NR_SA_F1AP_5GRECORDS NR_SA_F1AP_5GRECORDS_lts NR_SA_F1AP_RFSIMULATOR NR_SA_F1AP_RFSIMULATOR2 NR_SA_F1AP_RFSIMULATOR2_SRB NR_SA_F1AP_RFSIMULATOR3 NR_SA_F1AP_RFSIMULATOR3_tmp NR_SA_F1AP_RFSIMULATOR3_wf NR_SA_F1AP_RFSIMULATOR_w5GCN NR_SA_F1AP_dev NR_SA_NGAP_RRC NR_SA_NGAP_RRC_wk42 NR_SA_itti_sim_wk48 NR_SA_itti_sim_wk48_hs NR_SA_itti_sim_wk48_hs1 NR_SA_w5GCN_new_gtpu NR_SCHED NR_SCHED_HARQ NR_SCHED_PDCCH_PUCCH_HARQ NR_SCHED_PDCCH_PUCCH_HARQ_rebased NR_SCHED_fixes NR_SRB_Config NR_TRX_on_single_port NR_TRX_on_single_port2 NR_UE_CONFIG_REQ_FIXES NR_UE_MAC_scheduler NR_UE_RA_fixes NR_UE_SA NR_UE_UL_DCI_improvements NR_UE_dlsch_bugfix NR_UE_enable_parallelization NR_UE_stability_fixes NR_UL_FAPI_programming NR_UL_SCFDMA_100MHz NR_UL_scheduler NR_UL_scheduler_rebased NR_UL_scheduling NR_Wireshark NR_beam_simulation NR_beamforming_test NR_cleanup_PUCCH_resources NR_gNB_SCF_Indication NR_ipaccess_testing NR_mac_uci_functions_rework NR_msg2_phytest NR_multiplexing_HARQ_CSI_PUCCH NR_scheduling_CSIRS NR_scheduling_request NR_scheduling_request2 NR_scheduling_request3 NR_test_S1U_RRC_PRACH_procedures NR_ue_dlsch_dmrs_cdm New-Merge-sidelink-develop OpInConnect_ISIP PBCHNRTCFIX PUSCH_TA_update PerfumeOldTdd RA_CI_test RFquality RRC-measurements-merge2develop Saankhya_NRPRACH_HighSpeed UE_DL_DCI_hotfix UpdateRANRemoteUEReport add-dmrs-test add_iris_hw addoptions_nr_USRPdevice bch-fixes-bitmap benetel_5g_prach_fix benetel_config_file_fix benetel_driver_uldl_pf_merge benetel_driver_update benetel_fixes benetel_phase_rotation benetel_phase_rotation_old block_mmse_receiver_with_whitenning bsr-fix bugfix-find-uci bugfix-free-ra-process bugfix-minor-remove-wrong-log bugfix-nr-bands bugfix-nr-ldpc-post-processing bugfix-nr-ldpc-size-typo bugfix-nr-pdcp-sn-size bugfix-nr-rate-matching-assertion bugfix-nr-t-reordering bugfix-pdcch_order bugfix-x2-SgNBAdditionRequest bugfix_gnb_rt_stats_html bupt-sa-merge cce_indexing_fix cce_indexing_fix2 ci-deploy-asterix ci-deploy-docker-compose ci-new-docker-pipeline ci-rd-july-improvements ci-reduce-nb-vms ci-test ci-ul-iperf-from-trf-container ci-yacine ci_benetel_test ci_phytest ci_quectel_support ci_test_nsa_fix_quectel_nic ci_test_ra_fr2 ci_vm_resource_fix clean-5G-scope-round2 cleanup_softmodem_main constant_power container_fix container_v1.2.2 debug_branch_init_sync detached-w16-test develop develop-CBRA-v3 develop-CCE develop-FeMBMS develop-NR_SA_F1AP_5GRECORDS develop-NR_SA_F1AP_5GRECORDS-hs develop-NR_SA_F1AP_5GRECORDS-v3 develop-SA-CBRA develop-SA-CBRA-CUDU develop-SA-CBRA-Msg5 develop-SA-CBRA-lts develop-SA-CBRA-ulsch-lts develop-SA-RA develop-SnT develop-aarch64build develop-ci develop-ci-fju develop-large-scale-emulations develop-m2ap develop-multi-RRUs develop-nb-iot develop-nb-iot-RRC develop-nb-iot-merge develop-nb-iot-merge-w-conflicts develop-nb-iot-ntust develop-nr develop-nr-adding-2018-09-asn1 develop-nr-fr2 develop-nr-fr2-rework develop-nr_cppcheck develop-oriecpriupdates develop-sib1 develop-sib1-local develop-sib1-lts develop-sib1-update develop-sib1-update-test1 develop-sib1-update-ue develop-sidekiq develop-vco3 develop_ci develop_inria_ci_deployment develop_inria_ci_deployment_gp develop_inria_ci_deployment_gp_b4merge develop_integration_2019_w44 develop_integration_2020_w15 develop_integration_2020_w19 develop_integration_w08 develop_jenkins_replay develop_stable dfts_alternatives disable_CSI_measrep dlsch-all-dlslots dlsch_encode_mthread dlsch_parallel dlsim-autotests docker-improvements-2021-april docker-no-cache-option documentation docupdate_tools dongzhanyi-zte-0001 dongzhanyi-zte-develop dongzhanyi-zte-develop2 dreibh/apt-auth-fix dreibh/device-load-fix dreibh/device-load-fix-develop-branch dreibh/doxygen-fix dual-connectivity dummy edrx enhance-rfsim enhancement-149-iqtxshift episys-merge episys/nsa_baseline episys/nsa_development extend_sharedlibusage extend_sharedlibusage2 fapi_for_dmrs_and_ptrs feat-mac-sock feature-21-TM7 feature-230-tm3_scheduler feature-247-tm89 feature-247-tm89-fixes feature-247-tm89-rebased feature-278-physical-layer-GPU-version feature-309-phy_procedures_eNB_TX_split_to_multi_threading feature-330-turbo_decoder_gpu feature-368-channel-simulator feature-4g-sched feature-68-enb-agent feature-flexran-cm-s1ap feature-nr-4g-nfapi-modifications feature-pdcp-task feature-send-rrc-message-for-wireshark-logging feature-support-clang-format feature/make-s1-mme-port-configurable feature/make-s1-mme-port-configurable-with-astyle-fixes feature_tm3 fembms-enb-ue fft_bench_hotfix finalize-oaicn-integration firas fix-ci-tun fix-clock-source fix-dirty-ue-same-machine fix-itti fix-itti-segv fix-l2-sim fix-limeSDR-compile fix-nr-pdcp-timer fix-nr-rlc-range-nack fix-physim-deploy fix-quectel fix-realtime fix-segfault-flexran-isolated fix-softmodem-restart fix-warnings fix-x2-without-gnb fix_NR_DLUL_PF fix_NR_DLUL_PF_benchmark fix_coreset_dmrs_idx fix_do_ra_data fix_nr_ulsim fix_pdsch_low_prb fix_rb_corruption fix_reestablishment fix_rfsim_mimo fix_rrc_x2_ticking fixes-CE-RLC-PDU-size fixes-mac-sched-nfapi fixes-mac-sched-tun fixes-tun fixgtpu flexran-apps flexran-improvements flexran-repair-mme-mgmt flexran-report-split fr2-hw-test fujitsu_lte_contribution fujitsu_lte_contribution-128 gNB-nrUE-USRP gNB_mwc18_integration generate_push_ptrs git-dashboard gnb-freerun-txru gnb-n300-fixes gnb-only-test gnb-realtime-hotfix gnb-realtime-quickfix gnb-threadpool hack-exit-gnb-when-no-enb-nsa harq-hotfix hotfix-minor-remove-nr-rlc-cppcheck-error hotfix-nr-rlc-tick hotfix-ocp-executable hotfix-ue-musim-compilation hotfix_usrp_lib improve_build_nr_lte_merge improve_nr_modulation improve_ue_stability initial-nfapi-PNF-fixes integ-w13-test-rt-issue integration-develop-nr-2019w45 integration_2020_wk15 integration_2020_wk40 integration_2020_wk41 integration_2020_wk42_2 integration_2020_wk45 integration_2020_wk45_2 integration_2020_wk46 integration_2020_wk46_2 integration_2020_wk47 integration_2020_wk48 integration_2020_wk48_2 integration_2020_wk49 integration_2020_wk50 integration_2020_wk50_1 integration_2020_wk51 integration_2020_wk51_2 integration_2021_wk02 integration_2021_wk02_wMR988 integration_2021_wk04 integration_2021_wk05 integration_2021_wk06 integration_2021_wk06_MR978 integration_2021_wk06_b integration_2021_wk06_c integration_2021_wk08 integration_2021_wk08_2 integration_2021_wk08_MR963 integration_2021_wk09 integration_2021_wk09_b integration_2021_wk10 integration_2021_wk10_b integration_2021_wk11 integration_2021_wk12 integration_2021_wk12_b integration_2021_wk13_a integration_2021_wk13_b integration_2021_wk13_b_fix_tdas integration_2021_wk13_b_fixed integration_2021_wk13_c integration_2021_wk14_a integration_2021_wk15_a integration_2021_wk16 integration_2021_wk17_a integration_2021_wk17_b integration_2021_wk18_a integration_2021_wk18_b integration_2021_wk19 integration_w5GC_CBRA_test inter-RRU inter-RRU-final inter-RRU-nr inter-RRU-oairu inter-rru-UE interoperability-test isip-turbo-decoder-dynamic isip-turbo-decoder-parallel isip_nr issue271_simulator issue392-simplify-s1-nos1step2_01 issue416_nfapicleanup issue_345_l2_fapi_simulator itti-enhancement l2-fixes large_scale_simulations ldpc-dec-layering ldpc-decoder-codegen ldpc-decoder-codegen2 ldpc-decoder-improvements ldpc-offload ldpc_short_codeword_fixes load_gnb lte-m-ue_type lte-ulsch-bugfix lte_uplink_improvement mac-fixes-wk45_2 mac-monitoring main_python master mbms-fix-develop-nr merging-2019-w51-to-develop-nr mex_mmse_receiver migrate-cpp-check-container minor-fix-doc-basic-sim mobipass-hack modify_fairRRscd_parallel mosaic5g-oai-ran mosaic5g-oai-sim msg4_phy_0303_lfq mu_allocate multi-L1 multi-RRUs multiple_ssb_sib1_bugfix nasmesh_kernel_5.8 new-gtpu new_nos1 new_pdcp new_rlc new_rlc_2020 new_rlc_in_mbms nfapi-L2-emulator nfapi-bugfix nfapi_improvement nfapi_nr_arch_mod nfapi_nr_develop nfapi_nr_develop_new ngap-dlul ngap-support ngap-w48-merge2 ngap-wf ngap-wf-1120 ngap-wf-1120-srb ngap-wf-1120-srb-gtp ngap-wf-1120-srb-gtp-hs ngap-wf-1120-srb-gtp-hs1 ngap-wf-1120-srb-gtp-hs2 ngap-wf-1120-srb-gtp-yhz ngap-wf-1203-yunsdr ngap-wf-liuyu ngap_lfq_1120 ngap_merge noCore nr-bsr-fix nr-coreset-bug-fix nr-dl-mimo-2layer nr-dlsch-multi-thread nr-dlsch-thread nr-dmrs-fixes nr-dual-connectivity nr-interdigital-test nr-ip-uplink-noS1 nr-mac-pdu-wireshark nr-mac-remove-ue-list nr-multiple-ssb nr-pdcp nr-pdcp-improvements nr-pdcp-nea2-security nr-pdcp-nia2-integrity nr-pdcp-srb-integrity nr-pdsch-extraction-bugfix nr-physim-update nr-ra-fix nr-rlc-am-bugfix-w44 nr-rlc-bugfix-w44 nr-ssb-measurements nr-stats-print nr-timing-measurement nr-timing-measurement-merge nr-ue-buffer-status nr-ue-slot-based nr-uldci nrPBCHTCFix nrPbchTcFix nrUE nrUE-hs nrUE-upper-layer nr_beamforming nr_bsr nr_ci_dlsim nr_csi_newbranch nr_dci_procedures nr_demo_wsa2019 nr_dl_dmrs_type2 nr_dl_pf nr_dl_pf2 nr_dl_ul_ptrs nr_dlsch_parallel_measurements nr_dlsim_plot nr_fapi_for_push_tmp nr_fdd_if_fix nr_fix_easycppcheck nr_flexible_NRBDL nr_improve_build_procedures nr_increase_tp nr_mib_vsa_test nr_pdcch_testing nr_pdcch_updates nr_pdsch_integration nr_polar_decoder_improvement nr_power_measurement_fixes nr_prach nr_prach_fr2 nr_pucch nr_pucch2 nr_segmentation_fixes nr_sim_fix nr_tdd_configuration nr_ue_msg3 nr_ue_pdcp_fix nr_ue_tti_cleanup nr_ul_pf nr_ul_scfdma nr_vcd nrue-multi-thread nrue_msg2_reception nsa-ue nsa_remove_band_hardcodings oai-sim oai-ubuntu-docker oai-ubuntu-docker-for-lmssdr oai_ue_mwc18_integration oairu oairu-dockerfile-support oc-docker-october-improvements ocp_simulator openxg/develop pdcp-benchmark pdsch-ch-est physim-build-deploy physim-deploy-handle-error-cases polar8 prb_based_dl_channel_estimation preprocessor_refactor-2 ptrs_rrc_config pucch2ab pucchsim-multiue pusch-mthread-scaling-fix pusch-retrans-fix-ue ra-dl-ul rau_rru_reciprocity_measurements recode_itti_from_scratch recursive-cmake reduce_memory_footprint release_v1_2_0_candidate remove-ci-workaround remove_nos1_hack_pdcp remove_x2_gnb_hardcoding repair-TA revert-f5c94279 revert-itti revert_memcpy rh-ci-add-ue-parallelization rh_ci_add_runtime_stats rh_ci_add_uldlharq_stats rh_ci_fix_autoterminate rh_ci_fr1_update rh_ci_gsheet_rt_monitoring rh_ci_nsa2jenkins rh_ci_nsa_test_n310 rh_ci_oc rh_ci_phy_test_improve rh_ci_py rh_ci_ra_fr2 rh_ci_rfsim_ra rh_ci_test_benetel rh_ci_test_nsa rh_ci_test_nsa_wk16 rh_ci_test_nsa_wk17_b rh_ci_test_nsa_wk17b rh_ci_ue_parallel rh_doc_update_3 rh_fr1_newjenkins rh_fr1_update rh_gnb_compile_fix rh_wk50_debug rhel77-build rlc-v2-bugfix-status-reporting rlc-v2-tick rlc_v2_coverity_fixes rohan_ulsim2RxFix rrc-enb-phy-testmode rru-txwrite-modification ru-parallel-beamforming ru_rau_enhancement ru_rau_enhancement-external-timing runel runel-reverse-test s1-subnormal_rewrite s1_subnormal s1_subnormal-robert s1ap-bugfix-rab_setup sa-demo sa-demo-hs sa-merge-rrc-srb sa-msg4 sa-msg4-rrc sa-msg4-rrc-yihz sa-msg4-rrc-yihz-hs sa_rrc_yihz sanitize-address sanitize-v1 sanitize-v1-tmp sarma_pvnp_oai schedule-si-fix signal-delay sim-channels small-bugfixes-w40 small-config-change small_nr_bugfixes smallcleanup softmodem_cleanup split73 t-gnb-tracer tcri test-panos test-x310-perf test_nsa_gtpu_fix test_rt-fix_phy-test testing_2symb_pdcch testing_with_external_txdata thread-pool tm7-iris tools_5Gadapt tp-ota-test trx_thread_param trx_write_thread ue-csi ue-dci-false-detection ue-fixes ue-fixes-ota ue-pdsch-pusch-parallel ue-race-fix ue-updates-runel-test ue_adjust_gain ue_beam_selection ue_dlsch-multi-threading ue_dlsch_decoding_ldpc_offload ue_nfapi_mch ues_test_tmp uhd_priority_set_cleanup ul-freq-iq-samps-to-file ul_dl_dci_same_slot ul_harq ulsch_decode_mthread ulsim_changes update-to-2019-march-june-release usrp_fix_adc_shift_and_pps_sync usrp_gpio_test usrp_stop_cleanly usrp_x400 wf-sa-rrc wireshark-T-hack-ueid wireshark-log-scheduling-requests wk11-with-phytest workaround-rebased workaround-restart-not-working x2-endc-processing x2-ho x2-ka-test x2_neighbor_6cells x2_tdd xiangwab xiangwan xw2 yihongzheng_srb zzs 2021.wk14_a 2021.wk13_d 2021.wk13_c 2021.w18_b 2021.w18_a 2021.w17_b 2021.w16 2021.w15 2021.w14 2021.w13_a 2021.w12 2021.w11 2021.w10 2021.w09 2021.w08 2021.w06 2021.w05 2021.w04 2021.w02 2020.w51_2 2020.w51 2020.w50 2020.w49 2020.w48_2 2020.w48 2020.w47 2020.w46_2 2020.w46 2020.w45_2 2020.w45 2020.w44 2020.w42_2 2020.w42 2020.w41 2020.w39 2020.w38 2020.w37 2020.w36 2020.w34 2020.w33 2020.w31 2020.w30 2020.w29 2020.w28 2020.w26 2020.w25 2020.w24 2020.w23 2020.w22 2020.w19 2020.w17 2020.w16 2020.w15 2020.w11 2020.w09 2020.w06 2020.w05 2020.w04 2020.w03 2019.w51 2019.w44 2019.w41 2019.w36 2019.w30 2019.w28 2019.w27 2019.w25 2019.w23 2019.w21 2019.w17 2019.w15 2019.w13 2019.w11 2019.w10 2019.w09 2019.w08 2019.w07 2019.w06 2019.w04 2019.w03 2018.w51 2018.w48 2018.w47 2018.w46 2018.w44 2018.w41 2018.w40 2018.w39 2018.w36 2018.w33 2018.w31 2018.w29 2018.w25 2018.w19 2018.w15 2018.w12 2018.w11 2018.w10 2018.w09 2018.w08 2018.w07 2018.w06 2018.w05 2018.w04 2018.w03 2018.w02 2017.w48 2017.w46 2017.w43 2017.w42 2017.w34 2017.w30 2017.w25 2017.w24 2017.w22 2017.w20 2017.w19 2017.w15 2017.w14 2017.w13 2017.w12 2017.w11 2017.w10 2017.w09 2017.w08 2017.w07 2017.w06 2017.w05 2017.w04 2017.w03 2017.w02 2017.w01 2016.w50 2016.w49 v1.2.2 v1.2.1 v1.2.0 v1.1.1 v1.1.0 v1.0.3 v1.0.2 v1.0.1 v1.0.0 v1B0.8 v1B0.7 v1B0.6 v1B0.5 v1B0.4 v1B0.3 v1B0.2 v1B0.1 v0.6.1 v0.6.1_tdd v0.6 v0.5.1_tdd v0.5 v0.4 osa-etsi-ws-ue osa-etsi-ws-try2 osa-etsi-ws-try1 osa-etsi-ws-gNB oai_nr_sync nr-ip-over-lte nr-ip-over-lte-v.1.5 nr-ip-over-lte-v.1.4 nr-ip-over-lte-v.1.3 nr-ip-over-lte-v.1.2 nr-ip-over-lte-v.1.1 nr-ip-over-lte-v.1.0 develop-nr-pdcch develop-nr-2020w03 develop-nr-2020w02 develop-nr-2019w51 develop-nr-2019w50 develop-nr-2019w48 develop-nr-2019w47 develop-nr-2019w45 develop-nr-2019w43 develop-nr-2019w42 develop-nr-2019w40 develop-nr-2019w28 develop-nr-2019w23 benetel_phase_rotation benetel_gnb_rel_2.0 benetel_gnb_rel_1.0 benetel_enb_rel_2.0 benetel_enb_rel_1.0
No related merge requests found
...@@ -870,21 +870,16 @@ set(UTIL_SRC ...@@ -870,21 +870,16 @@ set(UTIL_SRC
${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_filename.c ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_filename.c
${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_XML.c ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_XML.c
${OPENAIR2_DIR}/UTIL/OCG/OCG_save_XML.c ${OPENAIR2_DIR}/UTIL/OCG/OCG_save_XML.c
${OPENAIR2_DIR}/UTIL/OMG/client_traci_OMG.c
${OPENAIR2_DIR}/UTIL/OMG/common.c ${OPENAIR2_DIR}/UTIL/OMG/common.c
${OPENAIR2_DIR}/UTIL/OMG/grid.c ${OPENAIR2_DIR}/UTIL/OMG/grid.c
${OPENAIR2_DIR}/UTIL/OMG/id_manager.c
${OPENAIR2_DIR}/UTIL/OMG/job.c ${OPENAIR2_DIR}/UTIL/OMG/job.c
${OPENAIR2_DIR}/UTIL/OMG/mobility_parser.c ${OPENAIR2_DIR}/UTIL/OMG/mobility_parser.c
${OPENAIR2_DIR}/UTIL/OMG/omg.c ${OPENAIR2_DIR}/UTIL/OMG/omg.c
${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c ${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c
${OPENAIR2_DIR}/UTIL/OMG/rwalk.c ${OPENAIR2_DIR}/UTIL/OMG/rwalk.c
${OPENAIR2_DIR}/UTIL/OMG/rwp.c ${OPENAIR2_DIR}/UTIL/OMG/rwp.c
${OPENAIR2_DIR}/UTIL/OMG/sumo.c
${OPENAIR2_DIR}/UTIL/OMG/socket_traci_OMG.c
${OPENAIR2_DIR}/UTIL/OMG/static.c ${OPENAIR2_DIR}/UTIL/OMG/static.c
${OPENAIR2_DIR}/UTIL/OMG/steadystaterwp.c ${OPENAIR2_DIR}/UTIL/OMG/steadystaterwp.c
${OPENAIR2_DIR}/UTIL/OMG/storage_traci_OMG.c
${OPENAIR2_DIR}/UTIL/OMG/trace.c ${OPENAIR2_DIR}/UTIL/OMG/trace.c
${OPENAIR2_DIR}/UTIL/OMG/trace_hashtable.c ${OPENAIR2_DIR}/UTIL/OMG/trace_hashtable.c
${OPENAIR2_DIR}/UTIL/OPT/probe.c ${OPENAIR2_DIR}/UTIL/OPT/probe.c
...@@ -897,6 +892,15 @@ set(UTIL_SRC ...@@ -897,6 +892,15 @@ set(UTIL_SRC
) )
add_library(UTIL ${UTIL_SRC}) add_library(UTIL ${UTIL_SRC})
#set(OMG_SUMO_SRC
# ${OPENAIR2_DIR}/UTIL/OMG/client_traci_OMG.c
# ${OPENAIR2_DIR}/UTIL/OMG/id_manager.c
# ${OPENAIR2_DIR}/UTIL/OMG/sumo.c
# ${OPENAIR2_DIR}/UTIL/OMG/socket_traci_OMG.c
# ${OPENAIR2_DIR}/UTIL/OMG/storage_traci_OMG.c
# )
#add_library(OMG_SUMO ${OMG_SUMO_SRC})
set(SECU_OSA_SRC set(SECU_OSA_SRC
${OPENAIR2_DIR}/UTIL/OSA/osa_key_deriver.c ${OPENAIR2_DIR}/UTIL/OSA/osa_key_deriver.c
${OPENAIR2_DIR}/UTIL/OSA/osa_rijndael.c ${OPENAIR2_DIR}/UTIL/OSA/osa_rijndael.c
...@@ -1752,7 +1756,6 @@ add_executable(oaisim ...@@ -1752,7 +1756,6 @@ add_executable(oaisim
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c ${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR2_DIR}/UTIL/OMG/sumo.c
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${GTPU_need_ITTI} ${GTPU_need_ITTI}
${OPENAIR_TARGETS}/COMMON/create_tasks.c ${OPENAIR_TARGETS}/COMMON/create_tasks.c
......
----------------------------------------------------------------------------------
OpenAir Mobility Generator (OMG) - Mobility provided by the SUMO simulator
----------------------------------------------------------------------------------
Notes:
- The Simulation of Urban Mobility (SUMO) needs to be downloaded, configured and compiled. Please download the sources from this address
http://sumo.sourceforge.net/
or alternatively chechout from the following SUMO svn
svn co https://sumo.svn.sourceforge.net/svnroot/sumo/trunk/sumo sumo
(among the other required packages for SUMO, you also need the following tools for SUMO compilation. Please use the following command to install:
sudo apt-get install build-essential autoconf buildtool)
and follow the installation instructions at http://sumo.sourceforge.net/doc/current/docs/userdoc/Installing.html
- OMG will look for the SUMO and SUMO-GUI exectuable from this SUMO folder.
- SUMO/SCENARIOS is the default folder for SUMO scenarios. Please add all required scenario on that folder.
- OMG will launch SUMO with one single SUMO config file. Please regoup all your SUMO XML files (network, route et others) in one .cfg file. More details on the SUMO website.
- SUMO will be lauched using the following command
sumo -c scen.sumo.cfg -b 0 -e 1000 -v
or, if you want to enable TraCI server (here as example listening on port 8883). Please bear in mind that this launch will be blocking upon a TraCI client
sumo -c scen.sumo.cfg -b 0 -e 1000 -remote-port 8883 -v
or, if you prefer the SUMO GUI and select manually the scenario file on the GUI window
sumo-gui
- Once installation completed, please check that SUMO is working properly by following the STANDALONE scenario
- GUI: lauch: sumo-gui
load: scen.sumo.cfg
- CommandLine: sumo -c scen.sumo.cfg -b 0 -e 1000 -v
----------------------------------------------------------------------------------
The OpenAirInterface Team
openair_tech@eurecom.fr
----------------------------------------------------------------------------------
<configuration>
<input>
<net-file value="traci_ex_Map.net.xml"/>
<route-files value="traci_ex_ROU.rou.xml"/>
<!-- <additional-files value="test.add.xml"/> -->
</input>
</configuration>
Sumo version used 0.12.3:
to start sumo with the existing route and network files below command was used.
sumo -n traci_ex_Map.net.xml -r traci_ex_ROU.rou.xml -b 0 -e 1000 --remote-port 8883 -v
\ No newline at end of file
<configuration>
<input>
<net-file value="traci_ex_Map.net.xml"/>
<route-files value="traci_ex_ROU.rou.xml"/>
<!-- <additional-files value="test.add.xml"/> -->
</input>
<simulation>
<begin>0</begin>
<end>200</end>
</simulation>
<traci_server>
<remote-port>8890</remote-port>
</traci_server>
</configuration>
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
#ifndef TRACICONSTANTS_H
#define TRACICONSTANTS_H
// command: subscribe simulation variable
#define CMD_SUBSCRIBE_SIM_VARIABLE 0xdb
// departed vehicle ids (get: simulation)
#define VAR_DEPARTED_VEHICLES_IDS 0x74
// command: simulation step (new version)
#define CMD_SIMSTEP2 0x02
// command: close sumo
#define CMD_CLOSE 0x7F
// command: get vehicle variable
#define CMD_GET_VEHICLE_VARIABLE 0xa4
// command: Scenario
#define CMD_SCENARIO 0x73
// max count of vehicles
#define DOMVAR_MAXCOUNT 0x0A
// 32 bit integer
#define TYPE_INTEGER 0x09
// speed of a node
#define DOMVAR_SPEED 0x04
// position of a domain object
#define DOMVAR_POSITION 0x02
// position (2D) (get: vehicle, poi, set: poi)
#define VAR_POSITION 0x42
// speed (get: vehicle)
#define VAR_SPEED 0x40
// position of a domain object
#define DOMVAR_POSITION 0x02
// ids of arrived vehicles (get: simulation)
#define VAR_ARRIVED_VEHICLES_IDS 0x7a
// ****************************************
// RESULT TYPES
// ****************************************
// result type: Ok
#define RTYPE_OK 0x00
#endif
\ No newline at end of file
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file client_traci_OMG.h
* \brief The OMG TraCI to send/receive commands from/to SUMO via socket interfaces.
* \author S. Uppoor, J. Harri
* \date 2012
* \version 0.1
* \company INRIA, Eurecom
* \email: sandesh.uppor@inria.fr, haerri@eurecom.fr
* \note
* \warning
*/
#ifndef TRACICLIENT_OMG_H
#define TRACICLIENT_OMG_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "omg.h"
//#include "TraCIConstants.h"
#include "storage_traci_OMG.h"
#include "socket_traci_OMG.h"
#define MAX_ATTEMPTS 5; // number of connection attemps to SUMO
int targetTime;
char *description;
string_list* departed; // string list of all vehicles appearing in SUMO at the current time step
string_list* arrived; // string list of all vehicles leaving SUMO at the current time step
/**
* Global parameters defined in storage_traci_OMG.h
*/
extern storage *head;
extern storage *storageStart;
extern storage *tracker;
extern int descLen;
/**
* \fn handshake(char *,int)
* \brief Talks to SUMO by establishing connection
* \param Accepts host name and port number
*/
int handshake(char *,int);
/**
* \fn extractCommandStatus(storage *, unsigned char , char *)
* \brief Validates the RESPONSE recieved by SUMO
* \param Accepts storage pointer where data is read and stored, command ID for which response is recieved, description
*/
int extractCommandStatus(storage *, unsigned char , char *);
/**
* \fn commandSimulationStep(double)
* \brief Advances the SUMO Simulation
* \param Accepts number of steps or seconds SUMO should Simulate
*/
void commandSimulationStep(double);
/**
* \fn commandClose(void);
* \brief Send termination command to SUMO
*/
void commandClose(void);
/**
* \fn commandGetVehicleVariable(char *vehID, int varID)
* \brief Gets the position position and speed info
* \param Accepts vehicle ID and variable ID, here variable ID is the comaand type
*/
void commandGetVehicleVariable(char *vehID, int varID);
/**
* \fn get_num_sumo_nodes(void)
* \brief Return the total number of nodes to be simulated in SUMO
*/
int commandGetMaxSUMONodesVariable(void);
/**
* \fn init(int max_sim_time)
* \brief Initialize SUMO and set the periodic subscriptions
*/
void init(int max_sim_time);
/**
* \fn void processSubscriptions(String_list departed, String_list arrived)
* \brief process the subscription values sent by SUMO at each SUMO time step
*/
void processSubscriptions(void);
/**
* \fn void GetSpeed(NodePtr node, char * sumo_id);
* \brief ask SUMO to return the speed for the indicated vehicle ID
* \param NodePtr node the pointer to the OAISim node
* \param char *sumo_id the SUMO ID of the target node
*/
void GetSpeed(node_struct* node, char * sumo_id);
/**
* \fn void Position(NodePtr node, char * sumo_id);
* \brief ask SUMO to return the position (X,Y) for the indicated vehicle ID
* \param NodePtr node the pointer to the OAISim node
* \param char *sumo_id the SUMO ID of the target node
*/
void GetPosition(node_struct* node, char * sumo_id);
#endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file id_manager.c
* \brief Main function containing the OMG ID Manager
* \author J. Harri
* \date 2012
* \version 0.1
* \company Eurecom
* \email:
* \note
* \warning
*/
#include "id_manager.h"
#include "assertions.h"
#include <stdio.h>
#include <string.h>
MapPtr create_map(void)
{
MapPtr ptr;
ptr = malloc(sizeof(map_struct));
return ptr;
}
IDManagerPtr create_IDManager(void)
{
IDManagerPtr ptr;
ptr = malloc(sizeof(id_manager_struct));
ptr->map_oai2sumo = NULL;
ptr->map_sumo2oai = NULL;
return ptr;
}
Map_list add_map_entry(MapPtr map, Map_list Map_Vector)
{
Map_list entry = malloc(sizeof(map_list_struct));
entry->map = map;
entry->next = NULL;
if (Map_Vector == NULL) {
//printf("Map-vector is NULL, assigning a new entry\n");
return entry;
} else {
Map_list tmp = Map_Vector;
while (tmp->next != NULL) {
//printf("getting the tail...\n");
tmp = tmp->next;
}
//printf("got it...adding entry...\n");
tmp->next = entry;
return Map_Vector;
}
}
Map_list remove_entry(MapPtr map, Map_list Map_Vector)
{
Map_list entry = malloc(sizeof(map_list_struct));
entry->map = map;
entry->next = NULL;
if (Map_Vector == NULL) {
return entry;
} else {
Map_list tmp = Map_Vector;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = entry;
return Map_Vector;
}
}
char* get_SumoID_by_OAI(int oai_id, IDManagerPtr ID_manager)
{
if(ID_manager->map_oai2sumo == NULL)
return NULL;
else {
return get_sumo_entry(oai_id, ID_manager->map_oai2sumo);
}
}
int get_oaiID_by_SUMO(char *sumo_id, IDManagerPtr ID_manager)
{
if(ID_manager->map_sumo2oai == NULL) {
//printf("ID_Manager: get_oaiID_by_SUMO: uninitialized map\n");
return -1;
}
else {
//printf("ID_Manager: get_oaiID_by_SUMO: OAI_entry is: %d \n", get_oai_entry(sumo_id, ID_manager->map_sumo2oai));
return get_oai_entry(sumo_id, ID_manager->map_sumo2oai);
}
}
void remove_oaiID_by_SUMO(char *sumo_id, IDManagerPtr ID_manager)
{
if(ID_manager->map_sumo2oai == NULL) {
printf("ID_Manager: remove_oaiID_by_SUMO: uninitialized map\n");
return;
} else {
ID_manager->map_sumo2oai = remove_oai_entry(sumo_id, ID_manager->map_sumo2oai);
if(ID_manager->map_oai2sumo !=NULL) {
ID_manager->map_oai2sumo = remove_oai_entry(sumo_id, ID_manager->map_oai2sumo); // need to remove in the other list as well
}
//return ID_manager->map_sumo2oai;
}
}
char* get_sumo_entry(int oai_id, Map_list Map_Vector)
{
Map_list tmp = Map_Vector;
AssertFatal( Map_Vector, "bug here..should not be NULL" );
AssertFatal( Map_Vector->map, "bug here..map should have been initialized" );
if (tmp->map->oai_id == oai_id) {
//printf("got it...at the head and value is %s \n",tmp->map->sumo_id);
return tmp->map->sumo_id;
} else {
//printf("here...\n");
while (tmp->next != NULL) {
tmp = tmp->next;
if (tmp->map->oai_id == oai_id) {
//printf("got it...in main value is %s \n",tmp->map->sumo_id);
return tmp->map->sumo_id;
}
}
}
return NULL;
}
int get_oai_entry(char *sumo_id, Map_list Map_Vector)
{
Map_list tmp = Map_Vector;
if (strcmp(tmp->map->sumo_id, sumo_id) == 0) {
//printf("found it %s \n",tmp->map->sumo_id);
return tmp->map->oai_id;
} else {
while (tmp->next != NULL) {
tmp = tmp->next;
if (strcmp(tmp->map->sumo_id, sumo_id) == 0) {
return tmp->map->oai_id;
}
}
}
return -1;
}
Map_list remove_oai_entry(char *sumo_id, Map_list Map_Vector)
{
Map_list tmp = Map_Vector;
// Map_list entry;
//printf("removing entry %s \n",sumo_id);
if (strcmp(tmp->map->sumo_id, sumo_id) == 0) {
//printf("1: found it %s \n",tmp->map->sumo_id);
// int id = tmp->map->oai_id;
// free(tmp);
if(tmp->next == NULL)
return NULL;
else {
return tmp->next;
}
//if(strcmp(tmp->map->sumo_id, "0") == 0) {
//printf("OAI ID is %d \n",id);
//exit(-1);
//}
//return id;
} else {
//printf("removing entry %s \n",sumo_id);
while (tmp->next != NULL) {
if (strcmp(tmp->next->map->sumo_id, sumo_id) == 0) {
//printf("2: found it %s \n",tmp->next->map->sumo_id);
// int id = tmp->next->map->oai_id;
// entry = tmp->next; // save the entry to remove
tmp->next = tmp->next->next; // jump over the entry to be removed
// free(entry); // freeing the entry
//if(strcmp(tmp->next->map->sumo_id, "0") == 0)
// exit(-1);
//return id;
}
tmp = tmp->next;
}
}
return Map_Vector;
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file id_manager.h
* \brief Prototypes of the OMG ID Manager to handle the mapping between OAI ID and SUMO ID
* \author J. Harri
* \date 2012
* \version 0.1
* \company Eurecom
* \email:
* \note
* \warning
*/
#ifndef __IDMANAGER_H_
#define __IDMANAGER_H_
#include <stdlib.h>
/*!A sructure that represents a mapping (OAI_ID, SUMO_ID), i.e the node ID given by OAI and the node ID given by SUMO */
typedef struct map_struct {
int oai_id; /*!< the oai ID as an integer */
char *sumo_id; /*!< SUMO gives IDs as strings */
} map_struct;
typedef struct map_struct* MapPtr; /*!< The typedef that reflects a #map_struct*/
/*!A sructure that gathers all the existing ID Maping */
struct map_list_struct {
map_struct *map; /*!< Avariable of type #MapPtr. It represents a node */
struct map_list_struct *next; /*!< A pointer to the next element */
} map_list_struct;
typedef struct map_list_struct* Map_list; /*!< The typedef that reflects a #map_list_struct*/
/*!A sructure that includes all characteristics of an ID management Unit */
typedef struct id_manager_struct {
struct map_list_struct *map_oai2sumo; /*!< Avariable of type #MapPtr. It represents the mapping from OAI ID to SUMO ID for one noe */
struct map_list_struct *map_sumo2oai; /*!< Avariable of type #MapPtr. It represents the mapping from SUMO ID to OAI ID for one noe */
} id_manager_struct;
typedef struct id_manager_struct* IDManagerPtr; /*!< The typedef that reflects a #id_manager_struct*/
/**
* \fn MapPtr create_map(void)
* \brief Create and allocate memory for a map object (OAI ID / SUMO ID).
* \return a pointer to the newly created Map
*/
MapPtr create_map(void);
/**
* \fn IDManangerPtr create_IDManager(void)
* \brief Create and allocate memory for a the ID Manager.
* \return a pointer to the ID Manager
*/
IDManagerPtr create_IDManager(void);
/**
* \fn Map_list add_entry(MapPtr map, Map_list Map_Vector)
* \brief Add a mapping entry to the MapList
* \param map the pointer to the map to be added to the Map_list
* \param Map_Vector the reference to the Map_list (pointing to the HEAD if not NULL)
* \retun the pointer to the updated/created map list (pointing to the HEAD)
*/
Map_list add_map_entry(MapPtr map, Map_list Map_Vector);
/**
* \fn char* get_SumoID_by_OAI(int oai_id, IDManagerPtr ID_manager)
* \brief map a SUMO ID from a OAI ID; return NULL if the mapping does not exist
* \param oai_id the OAI ID to be mapped to the SUMO ID
* \param ID_manager the reference to the ID Manager
* \return the SUMO ID in string format
*/
char* get_sumoID_by_OAI(int oai_id, IDManagerPtr ID_manager);
/**
* \fn int get_OaiID_by_SUMO(char* sumo_id, IDManagerPtr ID_manager)
* \brief map a OAI ID from a SUMO ID; return -1 if the mapping does not exist
* \param sumo_id the SUMO ID to be mapped to the OAI ID
* \param ID_manager the reference to the ID Manager
* \return the OAI ID in int format
*/
int get_oaiID_by_SUMO(char* sumo_id, IDManagerPtr ID_manager);
/**
* \fn int remove_OaiID_by_SUMO(char *sumo_id, IDManagerPtr ID_manager);
* \brief remove an OAI-SUMO mapping from a SUMO ID, and return the ID; return -1 if the mapping does not exist
* \param sumo_id the SUMO ID used to remove the mapping
* \param ID_manager the reference to the ID Manager
* \return the updated pointer to the Map_list
*/
void remove_oaiID_by_SUMO(char *sumo_id, IDManagerPtr ID_manager);
/**
* \fn char* get_sumo_entry(int oai_id, Map_list Map_Vector)
* \brief retrieve the SUMO ID from a OAI ID from the OAI_SUMO map; return NULL if not found
* \param oai_id the OAI ID to retrive the corresponding SUMO ID
* \param Map_Vector the reference to the OAI_2_SUMO Map list
* \return the SUMO ID in string format
*/
char* get_sumo_entry(int oai_id, Map_list Map_Vector);
/**
* \fn get_oai_entry(char* sumo_id, Map_list Map_Vector)
* \brief retrieve the OAI ID from a SUMO ID from the SUMO_OAI map; returns -1 if not found
* \param sumo_id the SUMO ID to retrieve the corresponding OAI ID
* \param Map_Vector the reference to the SUMO_2_OAI Map list
* \return the OAI ID in int format
*/
int get_oai_entry(char*, Map_list);
/**
* \fn int remove_oai_entry(char *sumo_id, Map_list Map_Vector);
* \brief remove the SUMO-OAI mapping, from a SUMO ID; returns the found OAI ID; returns -1 if the mapping does not exist.
* \param sumo_id the SUMO ID used to remove the mapping.
* \param Map_Vector the reference to the SUMO_2_OAI Map list
* \return the updated pointer to the Map_list
*/
Map_list remove_oai_entry(char *sumo_id, Map_list Map_Vector);
#endif /* __IDMANAGER_H_ */
...@@ -45,7 +45,9 @@ ...@@ -45,7 +45,9 @@
#include "trace.h" #include "trace.h"
#include "grid.h" #include "grid.h"
#include "steadystaterwp.h" #include "steadystaterwp.h"
#ifdef SUMO_IF
#include "sumo.h" #include "sumo.h"
#endif
#include "../OMV/structures.h" #include "../OMV/structures.h"
//#define STANDALONE //#define STANDALONE
...@@ -109,11 +111,11 @@ init_mobility_generator (omg_global_param omg_param_list[]) ...@@ -109,11 +111,11 @@ init_mobility_generator (omg_global_param omg_param_list[])
case TRACE: case TRACE:
start_trace_generator (omg_param_list[node_t]); start_trace_generator (omg_param_list[node_t]);
break; break;
#ifdef SUMO_IF
case SUMO: case SUMO:
start_sumo_generator (omg_param_list[node_t]); start_sumo_generator (omg_param_list[node_t]);
break; break;
#endif
case STEADY_RWP: case STEADY_RWP:
start_steadystaterwp_generator (omg_param_list[node_t]); start_steadystaterwp_generator (omg_param_list[node_t]);
break; break;
...@@ -152,12 +154,12 @@ stop_mobility_generator (omg_global_param * omg_param_list) ...@@ -152,12 +154,12 @@ stop_mobility_generator (omg_global_param * omg_param_list)
case STEADY_RWP: case STEADY_RWP:
break; break;
#ifdef SUMO_IF
case SUMO: case SUMO:
stop_sumo_generator (); stop_sumo_generator ();
//LOG_D(OMG," --------OMG will interface with SUMO for mobility generation-------- \n"); //LOG_D(OMG," --------OMG will interface with SUMO for mobility generation-------- \n");
break; break;
#endif
default: default:
LOG_N (OMG, "Unsupported generator\n"); LOG_N (OMG, "Unsupported generator\n");
} }
...@@ -198,12 +200,12 @@ update_node_vector (int mobility_type, double cur_time) ...@@ -198,12 +200,12 @@ update_node_vector (int mobility_type, double cur_time)
case TRACE: case TRACE:
update_trace_nodes (cur_time); update_trace_nodes (cur_time);
break; break;
#ifdef SUMO_IF
case SUMO: case SUMO:
// printf("in SUMO case \n"); // printf("in SUMO case \n");
update_sumo_nodes (cur_time); update_sumo_nodes (cur_time);
break; break;
#endif
case STEADY_RWP: case STEADY_RWP:
update_steadystaterwp_nodes (cur_time); update_steadystaterwp_nodes (cur_time);
break; break;
...@@ -248,12 +250,12 @@ get_nodes_positions (int mobility_type, double cur_time) ...@@ -248,12 +250,12 @@ get_nodes_positions (int mobility_type, double cur_time)
case TRACE: case TRACE:
get_trace_positions_updated (cur_time); get_trace_positions_updated (cur_time);
break; break;
#ifdef SUMO_IF
case SUMO: case SUMO:
LOG_I (OMG, "getting positions from SUMO\n"); LOG_I (OMG, "getting positions from SUMO\n");
get_sumo_positions_updated (cur_time); get_sumo_positions_updated (cur_time);
break; break;
#endif
case STEADY_RWP: case STEADY_RWP:
get_steadystaterwp_positions_updated (cur_time); get_steadystaterwp_positions_updated (cur_time);
break; break;
...@@ -371,11 +373,11 @@ set_new_mob_type (int id, int node_t, int mob_t, double cur_time) ...@@ -371,11 +373,11 @@ set_new_mob_type (int id, int node_t, int mob_t, double cur_time)
move_steadystaterwp_node (pair, cur_time); move_steadystaterwp_node (pair, cur_time);
break; break;
#ifdef SUMO_IF
case SUMO: case SUMO:
LOG_E (OMG, "not possible to change mobility type to sumo \n"); LOG_E (OMG, "not possible to change mobility type to sumo \n");
break; break;
#endif
case TRACE: case TRACE:
LOG_E (OMG, "not possible to change mobility type to trace \n"); LOG_E (OMG, "not possible to change mobility type to trace \n");
break; break;
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file socket_traci_OMG.c
* \brief The socket interface of TraCI to connect OAI to SUMO. A 'C' reimplementation of the TraCI version of simITS (F. Hrizi, fatma.hrizi@eurecom.fr)
* \author S. Uppoor
* \date 2012
* \version 0.1
* \company INRIA
* \email: sandesh.uppor@inria.fr
* \note
* \warning
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include "socket_traci_OMG.h"
#include "storage_traci_OMG.h"
int connection_(char *hoststr,int portno)
{
host = gethostbyname(hoststr);
printf("trying to connect to %s at the port %i \n",hoststr, portno);
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
#ifdef STANDALONE
printf(" Socket Error\n");
#else
LOG_D(OMG, " Socket Error\n");
#endif
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(portno);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(server_addr.sin_zero),8);
if (connect(sock, (struct sockaddr *)&server_addr,
sizeof(struct sockaddr)) < 0) {
#ifdef STANDALONE
printf("Connection Failed\n");
#else
LOG_E(OMG, " Connection Error\n");
#endif
return -1;
}
return 1;
}
void sendExact(int cmdLength)
{
msgLength = cmdLength + 4;
writeInt(msgLength);
rearange();
unsigned char *buf = (unsigned char *)malloc(sizeof(unsigned char) * (msgLength));
storage *cur_ptr = storageStart;
size_t i = 0;
size_t numbytes = msgLength;
while (cur_ptr->next != NULL) {
buf[i]= cur_ptr->item;
cur_ptr = cur_ptr->next;
i++;
}
buf[i]= cur_ptr->item;
while (numbytes > 0) {
int n = send(sock, buf, (int)numbytes, 0);//<----- need to check
if (numbytes == n)
break;
if (n<0) {
#ifdef STANDALONE
printf(" ERROR writing to socket\n");
#else
LOG_E(OMG, " ERROR writing to socket\n");
#endif
}
numbytes -= n;
buf +=n;
}
freeStorage(storageStart);
free(buf);
}
storage * receiveExact()
{
unsigned char* bufLength = (unsigned char *)malloc(sizeof(unsigned char) * (4));
int bytesRead = 0;
int readThisTime = 0;
//Get the length of the entire message by reading the 1st field
while (bytesRead<4) {
readThisTime = recv( sock, (char*)(bufLength + bytesRead), 4-bytesRead, 0 );
if( readThisTime <= 0 ) {
#ifdef STANDALONE
printf(" tcpip::Socket::receive() @ recv\n");
#else
LOG_E(OMG, " tcpip::Socket::receive() @ recv\n");
#endif
}
bytesRead += readThisTime;
}
// create storage to access the content
tracker = writePacket(bufLength, 4);
free( bufLength );
bufLength = 0;
// store pointer to free the space later
// storage *freeTracker = tracker;
int s= readInt();
int NN = s - 4;
printf("debug \n");
printf("value of s is %d \n",s);
printf("end debug \n");
//Free space after use
//freeStorage(freeTracker); // JHNOte: will be done by calling reset() in storage_traci_omg
int mySize = 0;
mySize = sizeof(unsigned char) * (NN);
printf("debug \n");
printf("value of mySize is %d \n",mySize);
printf("end debug \n");
// receive actual message content
//unsigned char* buf = (unsigned char *)malloc(sizeof(unsigned char) * (NN));
unsigned char* buf = (unsigned char *)malloc(mySize);
bytesRead = 0;
readThisTime = 0;
while (bytesRead<NN) {
readThisTime = recv( sock, (char*)(buf + bytesRead), NN-bytesRead, 0 );
if( readThisTime <= 0 ) {
#ifdef STANDALONE
printf(" tcpip::Socket::receive() @ recv\n");
#else
LOG_E(OMG, " tcpip::Socket::receive() @ recv\n");
#endif
}
bytesRead += readThisTime;
}
storage* temp = writePacket(buf, NN);
free( buf );
return temp;
}
void close_connection()
{
#ifdef STANDALONE
printf("closing the socket \n");
#else
LOG_E(OMG, "closing the socket \n");
#endif
close(sock);
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file socket_traci_OMG.h
* \brief The socket interface of TraCI to connect OAI to SUMO. A 'C' reimplementation of the TraCI version of simITS (F. Hrizi, fatma.hrizi@eurecom.fr)
* \author S. Uppoor
* \date 2012
* \version 0.1
* \company INRIA
* \email: sandesh.uppor@inria.fr
* \note
* \warning
*/
#ifndef SOCKET_TRACI_OMG_H
#define SOCKET_TRACI_OMG_H
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include "omg.h"
#include "storage_traci_OMG.h"
int sock, portno, msgLength;
struct hostent *host;
struct sockaddr_in server_addr;
/**
* Global parameters defined in storage_traci_OMG.h
*/
extern storage *tracker;
extern storage *head;
extern storage *storageStart;
/**
* \fn connection_(char *,int)
* \brief Talks to SUMO by establishing connection
* \param Accepts host name and port number
*/
int connection_(char *, int);
/**
* \fn sendExact(int);
* \brief Pack the data from storage to buf and write to socket
* \param Accepts command length
*/
void sendExact(int);
/**
* \fn recieveExact(void);
* \brief Pack the data to storage from buf after reading from socket
* Returns storage pointer
*/
storage* receiveExact(void);
/**
* \fn close_connection(void);
* \brief close socket connection
*/
void close_connection(void);
#endif
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file storage_traci_OMG.h
* \brief The data storage object carrying data from/to SUMO. 'C' reimplementation of the TraCI version of simITS (F. Hrizi, fatma.hrizi@eurecom.fr)
* \author S. Uppoor
* \date 2012
* \version 0.1
* \company INRIA
* \email: sandesh.uppor@inria.fr
* \note
* \warning
*/
#ifndef STORAGE_TRACI_OMG_H
#define STORAGE_TRACI_OMG_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#include "omg.h"
// sortation of bytes forwards or backwards?------------------
extern bool bigEndian;
union n {
short s;
char c[sizeof(short)];
} un ;
void check_endianness(void);
//----------------STORAGE------------------------------------
struct Storage {
unsigned char item;
struct Storage *next;
} ;
typedef struct Storage storage;
// pointer which always points to next entry to be read
// updated in readChar function in storage_traci_OMG
storage *tracker;
storage *head;
storage *storageStart;
int descLen;
extern int msgLength;
void reset(void);
int storageLength(storage *);
void rearange(void);
unsigned char readChar(void);
void writeChar(unsigned char);
int readByte(void) ;
void writeByte(int) ;
int readUnsignedByte(void);
void writeUnsignedByte(int);
char * readString(void) ;
void writeString(char *);
string_list* readStringList(string_list*) ;
void writeStringList(string_list*);
int readShort(void) ;
void writeShort(int);
int readInt(void) ;
void writeInt(int);
float readFloat(void) ;
void writeFloat( float );
double readDouble(void) ;
void writeDouble( double );
storage* writePacket(unsigned char*, int);
//void writeStorage(storage & );
void freeStorage(storage *);
#endif
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file sumo.h
* \brief The OMG interface to SUMO (Simulation of Urban Mobility)
* \author S. Uppoor, J. Harri
* \date 2012
* \version 0.1
* \company INRIA, Eurecom
* \email: sandesh.uppor@inria.fr, haerri@eurecom.fr
* \note
* \warning
*/
#ifndef SUMO_H_
#define SUMO_H_
#include "omg.h"
#include "id_manager.h"
#include <stdio.h>
#define MIN_SUMO_STEP 100 // 100ms is the smallest allowed SUMO update step
/*! A global variable used to store the SUMO process ID to later kill it smoothly when OAI askes OMG to stop SUMO*/
pid_t pid;
/*! A sumo global variable representing the OMG-SUMO ID manager. It is created at the start_sumo_generator(void) and keep a mapping between SUMO and OAI IDs. */
IDManagerPtr id_manager;
/*! A Node_list intended to contain the list of OAI 'active' nodes in SUMO. replaces the return of the full Node_Vector when OAI requests the new positions of its nodes. The list is reset at each use, but the pointer to the respective nodes is just set to NULL*/
node_list* active_nodes;
/*! A global variable keeping track of the last update time of SUMO, to be used to get the update interval when update_sumo_nodes(cur_time) is called */
double last_update_time;
/**
* \fn void start_sumo_generator(omg_global_param omg_param_list)
* \brief Start SUMO by setting the initial positions of each node then letting it sleep till it departs to its destination and add this job to the Job_Vector
* \param omg_param_list a structure that contains the main parameters needed to establish the random positions distribution
*/
int start_sumo_generator(omg_global_param omg_param_list) ;
/**
* \fn void update_sumo(double cur_time)
* \brief Update SUMO simulation time by x timesteps. After advancing the SUMO for the next timestep, SUMO will automatically update all nodes positions.
* Note that the SUMO positions are kept by SUMO. One need to specifically query SUMO to get them.
* \param cur_time a variable of type double that represents the current time
*/
void update_sumo_nodes(double cur_time) ;
/**
* \fn void get_sumo_positions(NodePtr node)
* \brief Get the current position and speed of a node from SUMO. Invokes TraCI
* \param node the pointer to a node we want to synch with SUMO.
*/
void update_sumo_positions(node_struct* node);
/**
* \fn Node_list get_sumo_positions_updated(double cur_time);
* \brief Get the current position and speed of a list of nodes. First, OMG retrieves the list of ACTIVE nodes, and second it updates their position from SUMO. Invokes TraCI
* \param cur_time a variable of type double that represents the current time
* \return the list of ACTIVE OAI nodes, which positions have been updated by SUMO
*/
node_list* get_sumo_positions_updated(double cur_time);
/**
* \fn NodePtr get_first_inactive_OAI_node(Node_list list, int node_type)
* \brief Get the first inactive OAI node to map it to a new SUMO node. An inactive OAI node has its mobility flag set to '0'.
* \param node the pointer to the Node_Vector containing all OAI nodes
* \param node_type the type of node we would like to locate (here: SUMO)
* \return the reference to the first inactive OAI node; returns NULL is none could be found (all OAI nodes are currently active)
*/
node_struct* get_first_inactive_OAI_node(node_list* list, int node_type);
/**
* \fn void update_IDs(String_list *departed, String_list *arrived)
* \brief Updates the mapping between SUMO and OAI nodes; Once a node departs in SUMO, it is mapped to a inactive OAI node. If none are found, the SUMO node will not have any mapping. Once a node arrives, the mapping is removed and the OAI node becomes inactive again. When an OAI node is inactive, it mobility parameters are invalid and MUST NOT be used/requested by OAI.
*/
void update_IDs(void);
/**
* \fn bool desactive_and_unmap(char *sumo_id)
* \brief desactivates an OAI node as it is no longer in SUMO; will be recycled by a new SUMO node in the future;
* \param sumo_id the string representing the SUMO ID of the OAI node;
* \return true in case of success; false otherwise;
*/
bool desactivate_and_unmap(char *sumo_id);
/**
* \fn bool activate_and_map(void)
* \brief activated an OAI node as a SUMO node entered in SUMO; Conceptually, this represents adding a communication device (OAI) to a SUMO node;
* It will find the first inactive OAI node, activates it and add the sumo mapping;
* \param sumo_id the string representing the SUMO ID of the OAI node;
* \return true in case of success; false if the maximum of OAI node has been reached
*/
bool activate_and_map(char *sumo_id);
/**
* \fn int stop_sumo_generator(void)
* \brief stops SUMO, stop the socket and kills SUMO process in the child domain.
* \return true in case of success; false otherwise
*/
bool stop_sumo_generator(void);
#endif /* SUMO_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment