handle position from RRC
This commit is contained in:
committed by
Roberto Rosca
parent
be618b069e
commit
2989bb592b
@@ -2219,7 +2219,6 @@ target_link_libraries(nr_pucchsim PRIVATE
|
|||||||
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||||
|
|
||||||
add_executable(nr_dlsim
|
add_executable(nr_dlsim
|
||||||
${OPENAIR_DIR}/executables/position_interface.c
|
|
||||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
|
||||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||||
@@ -2255,7 +2254,6 @@ target_link_libraries(nr_ulschsim PRIVATE
|
|||||||
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||||
|
|
||||||
add_executable(nr_ulsim
|
add_executable(nr_ulsim
|
||||||
${OPENAIR_DIR}/executables/position_interface.c
|
|
||||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
|
||||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
}
|
}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
typedef struct {
|
typedef struct position {
|
||||||
double positionX;
|
double positionX;
|
||||||
double positionY;
|
double positionY;
|
||||||
double positionZ;
|
double positionZ;
|
||||||
|
|||||||
@@ -1749,7 +1749,7 @@ void nr_rrc_mac_config_req_sib1(module_id_t module_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// computes delay between ue and sat based on SIB19 ephemeris data
|
// computes delay between ue and sat based on SIB19 ephemeris data
|
||||||
static double calculate_ue_sat_ta(position_t *position_params, struct NR_PositionVelocity_r17 *sat_pos)
|
static double calculate_ue_sat_ta(const position_t *position_params, struct NR_PositionVelocity_r17 *sat_pos)
|
||||||
{
|
{
|
||||||
// get UE position coordinates
|
// get UE position coordinates
|
||||||
double posx = position_params->positionX;
|
double posx = position_params->positionX;
|
||||||
@@ -1768,7 +1768,7 @@ static double calculate_ue_sat_ta(position_t *position_params, struct NR_Positio
|
|||||||
return ta_ms;
|
return ta_ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id, NR_SIB19_r17_t *sib19_r17)
|
void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id, const position_t *pos, NR_SIB19_r17_t *sib19_r17)
|
||||||
{
|
{
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||||
int ret = pthread_mutex_lock(&mac->if_mutex);
|
int ret = pthread_mutex_lock(&mac->if_mutex);
|
||||||
@@ -1786,7 +1786,7 @@ void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id, NR_SIB19_r17_t *sib1
|
|||||||
if (position_velocity
|
if (position_velocity
|
||||||
&& (position_velocity->positionX_r17 != 0 || position_velocity->positionY_r17 != 0
|
&& (position_velocity->positionX_r17 != 0 || position_velocity->positionY_r17 != 0
|
||||||
|| position_velocity->positionZ_r17 != 0)) {
|
|| position_velocity->positionZ_r17 != 0)) {
|
||||||
mac->ntn_ta.N_UE_TA_adj = calculate_ue_sat_ta(get_position_coordinates(module_id), position_velocity);
|
mac->ntn_ta.N_UE_TA_adj = calculate_ue_sat_ta(pos, position_velocity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if cellSpecificKoffset_r17 is present
|
// if cellSpecificKoffset_r17 is present
|
||||||
|
|||||||
@@ -91,8 +91,8 @@ void nr_rrc_mac_config_req_sib1(module_id_t module_id,
|
|||||||
NR_SI_SchedulingInfo_v1700_t *si_SchedulingInfo_v1700,
|
NR_SI_SchedulingInfo_v1700_t *si_SchedulingInfo_v1700,
|
||||||
NR_ServingCellConfigCommonSIB_t *scc);
|
NR_ServingCellConfigCommonSIB_t *scc);
|
||||||
|
|
||||||
void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id,
|
struct position; /* forward declaration */
|
||||||
NR_SIB19_r17_t *sib19_r17);
|
void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id, const struct position *pos, NR_SIB19_r17_t *sib19_r17);
|
||||||
|
|
||||||
void nr_rrc_mac_config_req_reset(module_id_t module_id, NR_UE_MAC_reset_cause_t cause);
|
void nr_rrc_mac_config_req_reset(module_id_t module_id, NR_UE_MAC_reset_cause_t cause);
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,7 @@
|
|||||||
|
|
||||||
#include "common/utils/LOG/log.h"
|
#include "common/utils/LOG/log.h"
|
||||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||||
|
#include "executables/position_interface.h"
|
||||||
|
|
||||||
#ifndef CELLULAR
|
#ifndef CELLULAR
|
||||||
#include "RRC/NR/MESSAGES/asn1_msg.h"
|
#include "RRC/NR/MESSAGES/asn1_msg.h"
|
||||||
@@ -241,7 +242,8 @@ static void nr_decode_SI(NR_UE_RRC_SI_INFO *SI_info, NR_SystemInformation_t *si,
|
|||||||
SI_info->SInfo_r17.sib19_validity = true;
|
SI_info->SInfo_r17.sib19_validity = true;
|
||||||
if (g_log->log_component[NR_RRC].level >= OAILOG_DEBUG)
|
if (g_log->log_component[NR_RRC].level >= OAILOG_DEBUG)
|
||||||
xer_fprint(stdout, &asn_DEF_NR_SIB19_r17, (const void *)typeandinfo->choice.sib19_v1700);
|
xer_fprint(stdout, &asn_DEF_NR_SIB19_r17, (const void *)typeandinfo->choice.sib19_v1700);
|
||||||
nr_rrc_mac_config_req_sib19_r17(ue_id, typeandinfo->choice.sib19_v1700);
|
position_t *p = get_position_coordinates(0);
|
||||||
|
nr_rrc_mac_config_req_sib19_r17(ue_id, p, typeandinfo->choice.sib19_v1700);
|
||||||
nr_timer_start(&SI_info->SInfo_r17.sib19_timer);
|
nr_timer_start(&SI_info->SInfo_r17.sib19_timer);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user