diff --git a/d2d_emulator_setup.txt b/d2d_emulator_setup.txt index 57990226af5ba04459cd17e17d69983ed66ab1a6..1ae200913f2cd6dbe58fb145c04d79788d2adfa5 100644 --- a/d2d_emulator_setup.txt +++ b/d2d_emulator_setup.txt @@ -48,8 +48,8 @@ UE1 and UE2: Get and build vencore_app from d2d-l3-stub (branch: l3_stub) -------------------------------- TEST ONE-TO-MANY Run UE1 then UE2, for example: -UE1: sudo ./lte-softmodem-stub -U --emul_iface eth0 -UE2: sudo ./lte-softmodem-stub -U --emul_iface eno1 +UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 +UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 Test with Ping - Sender - UE1: ping -I oip0 224.0.0.1 @@ -63,20 +63,20 @@ Filter the incomming packets according to GroupL2Id: receiver (one-to-many) can For the moment, both sender and receiver use the same set of Ids (hardcoded) UE1 (sender) - - sudo ./lte-softmodem-stub -U --emul_iface eth0 + - sudo ./lte-softmodem-stub -U --emul-iface eth0 - ./vencore_app #send the sourceL2Id, groupL2Id to OAI - ping -I oip0 224.0.0.1 UE2(receiver) - - sudo ./lte-softmodem-stub -U --emul_iface eno1 + - sudo ./lte-softmodem-stub -U --emul-iface eno1 #we can see the incomming packets from OAI log, however, cannot see from Wireshark -> they are discarded at MAC layer - ./vencore_app #we can see the packets appearing in Wireshark -------------------------------------- TEST PC5-S (UE1 -sender, UE2 - receiver) step 1: -- UE1: sudo ./lte-softmodem-stub -U --emul_iface eth0 +- UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 step 2: -- UE2: sudo ./lte-softmodem-stub -U --emul_iface eno1 +- UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 - UE2: ./vencore_app -r #listen to incomming message from PC5-S step 3: - UE1: ./vencore_app -s #send a message via PC5-S (e.g., DirectCommunicationRequest) @@ -85,9 +85,9 @@ step 3: -------------------------------------- TEST PC5-D step 1: -- UE1: sudo ./lte-softmodem-stub -U --emul_iface eth0 +- UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 - UE1: ./vencore_app -d #send a PC5-Discovery-Announcement via PC5D step 2: -- UE2: sudo ./lte-softmodem-stub -U --emul_iface eno1 +- UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 - UE2: ./vencore_app -d #send a PC5-Discovery-Announcement via PC5D diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index 61f5c5ec87f60bde92ee3917ebe230566f6d95e9..a30c660408440fffe09b0f3b92445fc0558d2d88 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -433,7 +433,7 @@ typedef struct { ip_traffic_type_t traffic_type; uint32_t sourceL2Id; uint32_t destinationL2Id; -} __attribute__((__packed__)) pdcp_data_header_t; +} __attribute__((__packed__)) pc5s_header_t; //new PC5S-message typedef struct { @@ -442,7 +442,7 @@ typedef struct { //example of PC5-S messages typedef struct { - pdcp_data_header_t pdcp_data_header; + pc5s_header_t pc5s_header; union { uint8_t status; PC5SignallingMessage pc5_signalling_message; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c index 39639a103a59f7269fc3f7824efae0ee754f84ca..7a2821e887d74e32bb039275badfeebcfc0ea6d1 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c @@ -215,12 +215,12 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const ctxt_pP) #ifdef PDCP_DEBUG sl_pc5s_msg_recv = calloc(1, sizeof(sidelink_pc5s_element)); memcpy((void*)sl_pc5s_msg_recv, (void*)(sdu_p->data+sizeof(pdcp_data_ind_header_t)), sizeof(sidelink_pc5s_element)); - LOG_D(PDCP,"Received PC5S message, header traffic_type: %d)\n", sl_pc5s_msg_recv->pdcp_data_header.traffic_type); - LOG_D(PDCP,"Received PC5S message, header rb_id: %d)\n", sl_pc5s_msg_recv->pdcp_data_header.rb_id); - LOG_D(PDCP,"Received PC5S message, header data_size: %d)\n", sl_pc5s_msg_recv->pdcp_data_header.data_size); - LOG_D(PDCP,"Received PC5S message, header inst: %d)\n", sl_pc5s_msg_recv->pdcp_data_header.inst); - LOG_D(PDCP,"Received PC5-S message, sourceL2Id: 0x%08x\n)\n", sl_pc5s_msg_recv->pdcp_data_header.sourceL2Id); - LOG_D(PDCP,"Received PC5-S message, destinationL1Id: 0x%08x\n)\n", sl_pc5s_msg_recv->pdcp_data_header.destinationL2Id); + LOG_D(PDCP,"Received PC5S message, header traffic_type: %d)\n", sl_pc5s_msg_recv->pc5s_header.traffic_type); + LOG_D(PDCP,"Received PC5S message, header rb_id: %d)\n", sl_pc5s_msg_recv->pc5s_header.rb_id); + LOG_D(PDCP,"Received PC5S message, header data_size: %d)\n", sl_pc5s_msg_recv->pc5s_header.data_size); + LOG_D(PDCP,"Received PC5S message, header inst: %d)\n", sl_pc5s_msg_recv->pc5s_header.inst); + LOG_D(PDCP,"Received PC5-S message, sourceL2Id: 0x%08x\n)\n", sl_pc5s_msg_recv->pc5s_header.sourceL2Id); + LOG_D(PDCP,"Received PC5-S message, destinationL1Id: 0x%08x\n)\n", sl_pc5s_msg_recv->pc5s_header.destinationL2Id); free(sl_pc5s_msg_recv); #endif memset(send_buf, 0, BUFSIZE); @@ -436,7 +436,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) uint32_t sourceL2Id; uint32_t groupL2Id; module_id_t module_id = 0; - pdcp_data_header_t *pdcp_data_header; + pc5s_header_t *pc5s_header; #endif # if defined(PDCP_USE_NETLINK_QUEUES) @@ -581,15 +581,15 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) // exit(EXIT_FAILURE); // } if (bytes_received > 0) { - pdcp_data_header = calloc(1, sizeof(pdcp_data_header_t)); - memcpy((void *)pdcp_data_header, (void *)receive_buf, sizeof(pdcp_data_header_t)); + pc5s_header = calloc(1, sizeof(pc5s_header_t)); + memcpy((void *)pc5s_header, (void *)receive_buf, sizeof(pc5s_header_t)); - if (pdcp_data_header->traffic_type == TRAFFIC_PC5S_SESSION_INIT){ + if (pc5s_header->traffic_type == TRAFFIC_PC5S_SESSION_INIT){ //send reply to ProSe app LOG_D(PDCP,"Received a request to open PDCP socket and establish a new PDCP session ... send response to ProSe App \n"); memset(send_buf, 0, BUFSIZE); sl_pc5s_msg_send = calloc(1, sizeof(sidelink_pc5s_element)); - sl_pc5s_msg_send->pdcp_data_header.traffic_type = TRAFFIC_PC5S_SESSION_INIT; + sl_pc5s_msg_send->pc5s_header.traffic_type = TRAFFIC_PC5S_SESSION_INIT; sl_pc5s_msg_send->pc5sPrimitive.status = 1; memcpy((void *)send_buf, (void *)sl_pc5s_msg_send, sizeof(sidelink_pc5s_element)); @@ -599,56 +599,56 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) LOG_E(PDCP, "ERROR: Failed to send to ProSe App\n"); exit(EXIT_FAILURE); } - } else if (pdcp_data_header->traffic_type == TRAFFIC_PC5S_SIGNALLING) { //if containing PC5-S message -> send to other UE + } else if (pc5s_header->traffic_type == TRAFFIC_PC5S_SIGNALLING) { //if containing PC5-S message -> send to other UE LOG_D(PDCP,"Received PC5-S message ... send to the other UE\n"); #ifdef PDCP_DEBUG - LOG_D(PDCP,"Received PC5-S message, traffic_type: %d)\n", pdcp_data_header->traffic_type); - LOG_D(PDCP,"Received PC5-S message, rbid: %d)\n", pdcp_data_header->rb_id); - LOG_D(PDCP,"Received PC5-S message, data_size: %d)\n", pdcp_data_header->data_size); - LOG_D(PDCP,"Received PC5-S message, inst: %d)\n", pdcp_data_header->inst); - LOG_D(PDCP,"Received PC5-S message,sourceL2Id: 0x%08x\n)\n", pdcp_data_header->sourceL2Id); - LOG_D(PDCP,"Received PC5-S message,destinationL1Id: 0x%08x\n)\n", pdcp_data_header->destinationL2Id); + LOG_D(PDCP,"Received PC5-S message, traffic_type: %d)\n", pc5s_header->traffic_type); + LOG_D(PDCP,"Received PC5-S message, rbid: %d)\n", pc5s_header->rb_id); + LOG_D(PDCP,"Received PC5-S message, data_size: %d)\n", pc5s_header->data_size); + LOG_D(PDCP,"Received PC5-S message, inst: %d)\n", pc5s_header->inst); + LOG_D(PDCP,"Received PC5-S message,sourceL2Id: 0x%08x\n)\n", pc5s_header->sourceL2Id); + LOG_D(PDCP,"Received PC5-S message,destinationL1Id: 0x%08x\n)\n", pc5s_header->destinationL2Id); #endif #ifdef OAI_EMU // overwrite function input parameters, because only one netlink socket for all instances - if (pdcp_data_header->inst < oai_emulation.info.nb_enb_local) { + if (pc5s_header->inst < oai_emulation.info.nb_enb_local) { ctxt.frame = ctxt_cpy.frame; ctxt.enb_flag = ENB_FLAG_YES; - ctxt.module_id = pdcp_data_header.inst + oai_emulation.info.first_enb_local; - ctxt.rnti = oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id ][pdcp_data_header->rb_id / maxDRB + oai_emulation.info.first_ue_local]; - rab_id = pdcp_data_header->rb_id % maxDRB; + ctxt.module_id = pc5s_header.inst + oai_emulation.info.first_enb_local; + ctxt.rnti = oai_emulation.info.eNB_ue_module_id_to_rnti[ctxt.module_id ][pc5s_header->rb_id / maxDRB + oai_emulation.info.first_ue_local]; + rab_id = pc5s_header->rb_id % maxDRB; } else { ctxt.frame = ctxt_cpy.frame; ctxt.enb_flag = ENB_FLAG_NO; - ctxt.module_id = pdcp_data_header->inst - oai_emulation.info.nb_enb_local + oai_emulation.info.first_ue_local; + ctxt.module_id = pc5s_header->inst - oai_emulation.info.nb_enb_local + oai_emulation.info.first_ue_local; ctxt.rnti = pdcp_UE_UE_module_id_to_rnti[ctxt.module_id]; - rab_id = pdcp_data_header->rb_id % maxDRB; + rab_id = pc5s_header->rb_id % maxDRB; } CHECK_CTXT_ARGS(&ctxt); AssertFatal (rab_id < maxDRB, "RB id is too high (%u/%d)!\n", rab_id, maxDRB); - /*LGpdcp_read_header.inst = (pdcp_data_header.inst >= oai_emulation.info.nb_enb_local) ? \ - pdcp_data_header.inst - oai_emulation.info.nb_enb_local+ NB_eNB_INST + oai_emulation.info.first_ue_local : - pdcp_data_header.inst + oai_emulation.info.first_enb_local;*/ + /*LGpdcp_read_header.inst = (pc5s_header.inst >= oai_emulation.info.nb_enb_local) ? \ + pc5s_header.inst - oai_emulation.info.nb_enb_local+ NB_eNB_INST + oai_emulation.info.first_ue_local : + pc5s_header.inst + oai_emulation.info.first_enb_local;*/ #else // OAI_EMU /* TODO: do we have to reset to 0 or not? not for a scenario with 1 UE at least */ - // pdcp_data_header.inst = 0; + // pc5s_header.inst = 0; //#warning "TO DO CORRCT VALUES FOR ue mod id, enb mod id" ctxt.frame = ctxt_cpy.frame; ctxt.enb_flag = ctxt_cpy.enb_flag; - LOG_I(PDCP, "[PDCP] pdcp_data_header->rb_id = %d\n", pdcp_data_header->rb_id); + LOG_I(PDCP, "[PDCP] pc5s_header->rb_id = %d\n", pc5s_header->rb_id); if (ctxt_cpy.enb_flag) { ctxt.module_id = 0; - rab_id = pdcp_data_header->rb_id % maxDRB; + rab_id = pc5s_header->rb_id % maxDRB; ctxt.rnti = pdcp_eNB_UE_instance_to_rnti[pdcp_eNB_UE_instance_to_rnti_index]; } else { ctxt.module_id = 0; - rab_id = pdcp_data_header->rb_id % maxDRB; + rab_id = pc5s_header->rb_id % maxDRB; ctxt.rnti = pdcp_UE_UE_module_id_to_rnti[ctxt.module_id]; } #endif @@ -678,15 +678,15 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) #ifdef PDCP_DEBUG LOG_I(PDCP, "[FRAME %5u][UE][NETLINK][IP->PDCP] INST %d: Received socket with length %d on Rab %d \n", ctxt.frame, - pdcp_data_header->inst, + pc5s_header->inst, bytes_received, - pdcp_data_header->rb_id); + pc5s_header->rb_id); LOG_I(PDCP, "[FRAME %5u][UE][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes --->][PDCP][MOD %u][UE %u][RB %u]\n", ctxt.frame, - pdcp_data_header->inst, - pdcp_data_header->rb_id, - pdcp_data_header->data_size, + pc5s_header->inst, + pc5s_header->rb_id, + pc5s_header->data_size, ctxt.module_id, ctxt.rnti, rab_id); @@ -698,10 +698,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) 0, MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u", MSC_AS_TIME_ARGS(ctxt_pP), - pdcp_data_header.inst, - pdcp_data_header.rb_id, + pc5s_header.inst, + pc5s_header.rb_id, rab_id, - pdcp_data_header.data_size); + pc5s_header.data_size); pdcp_data_req( &ctxt, @@ -709,12 +709,12 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) rab_id, RLC_MUI_UNDEFINED, RLC_SDU_CONFIRM_NO, - pdcp_data_header->data_size, + pc5s_header->data_size, (unsigned char *)receive_buf, PDCP_TRANSMISSION_MODE_DATA #ifdef Rel14 - ,&pdcp_data_header->sourceL2Id - ,&pdcp_data_header->destinationL2Id + ,&pc5s_header->sourceL2Id + ,&pc5s_header->destinationL2Id #endif ); } else { @@ -725,16 +725,16 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) 0, MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u", MSC_AS_TIME_ARGS(ctxt_pP), - pdcp_data_header.inst, - pdcp_data_header.rb_id, + pc5s_header.inst, + pc5s_header.rb_id, rab_id, - pdcp_data_header.data_size); + pc5s_header.data_size); LOG_D(PDCP, "[FRAME %5u][UE][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes ---X][PDCP][MOD %u][UE %u][RB %u] NON INSTANCIATED INSTANCE key 0x%"PRIx64", DROPPED\n", ctxt.frame, - pdcp_data_header->inst, - pdcp_data_header->rb_id, - pdcp_data_header->data_size, + pc5s_header->inst, + pc5s_header->rb_id, + pc5s_header->data_size, ctxt.module_id, ctxt.rnti, rab_id, @@ -744,9 +744,9 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) LOG_D(PDCP, "Forcing send on DEFAULT_RAB_ID\n"); LOG_D(PDCP, "[FRAME %5u][eNB][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes --->][PDCP][MOD %u][UE %u][RB DEFAULT_RAB_ID %u]\n", ctxt.frame, - pdcp_data_header->inst, - pdcp_data_header->rb_id, - pdcp_data_header->data_size, + pc5s_header->inst, + pc5s_header->rb_id, + pc5s_header->data_size, ctxt.module_id, ctxt.rnti, DEFAULT_RAB_ID); @@ -756,10 +756,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) NULL,0, MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u default rab %u size %u", MSC_AS_TIME_ARGS(ctxt_pP), - pdcp_data_header->inst, - pdcp_data_header->rb_id, + pc5s_header->inst, + pc5s_header->rb_id, DEFAULT_RAB_ID, - pdcp_data_header->data_size); + pc5s_header->data_size); pdcp_data_req ( &ctxt, @@ -767,12 +767,12 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) DEFAULT_RAB_ID, RLC_MUI_UNDEFINED, RLC_SDU_CONFIRM_NO, - pdcp_data_header->data_size, + pc5s_header->data_size, (unsigned char *)receive_buf, PDCP_TRANSMISSION_MODE_DATA #ifdef Rel14 - ,&pdcp_data_header->sourceL2Id - ,&pdcp_data_header->destinationL2Id + ,&pc5s_header->sourceL2Id + ,&pc5s_header->destinationL2Id #endif ); } diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h index 42968bfa95e15a0548b9d49f06bcd4ee77eb366d..d597d2275df077bb6d69a46dc5c78b7b4794147b 100644 --- a/openair2/RRC/LITE/defs.h +++ b/openair2/RRC/LITE/defs.h @@ -103,7 +103,6 @@ typedef enum { } Group_Communication_Status_t; struct GroupCommunicationEstablishReq { - uint8_t type; //0 - rx, 1 - tx uint32_t sourceL2Id; uint32_t groupL2Id; uint32_t groupIpAddress; @@ -129,11 +128,12 @@ struct PC5SEstablishReq{ }; struct PC5SEstablishRsp{ - uint32_t sourceL2Id; - uint32_t destinationL2Id; - uint8_t status; + uint32_t slrbid_lcid28; + uint32_t slrbid_lcid29; + uint32_t slrbid_lcid30; }; + //PC5_DISCOVERY MESSAGE typedef struct { unsigned char payload[PC5_DISCOVERY_PAYLOAD_SIZE]; diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index 4db3b2e9de5d6359dc9200111757a920575b568e..9bf11a80f01c13377ea0ca3a82d6882ec5844419 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -5536,7 +5536,6 @@ void *rrc_control_socket_thread_fct(void *arg) #ifdef DEBUG_CTRL_SOCKET LOG_I(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type); - LOG_I(RRC,"[GroupCommunicationEstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.type); LOG_I(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id); LOG_I(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id); LOG_I(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress)); @@ -5567,15 +5566,7 @@ void *rrc_control_socket_thread_fct(void *arg) *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3; UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long)); *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2 -/* - struct RLC_Config *DRB_rlc_config = CALLOC(1,sizeof(struct RLC_Config)); - struct PDCP_Config *DRB_pdcp_config = CALLOC(1,sizeof(struct PDCP_Config)); - struct PDCP_Config__rlc_UM *PDCP_rlc_UM = CALLOC(1,sizeof(struct PDCP_Config__rlc_UM)); - struct LogicalChannelConfig *DRB_lchan_config = CALLOC(1,sizeof(struct LogicalChannelConfig)); - struct LogicalChannelConfig__ul_SpecificParameters - *DRB_ul_SpecificParameters = CALLOC(1, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); - long *logicalchannelgroup_drb = CALLOC(1, sizeof(long)); -*/ + DRB_rlc_config = CALLOC(1,sizeof(struct RLC_Config)); DRB_pdcp_config = CALLOC(1,sizeof(struct PDCP_Config)); PDCP_rlc_UM = CALLOC(1,sizeof(struct PDCP_Config__rlc_UM)); @@ -5696,16 +5687,7 @@ void *rrc_control_socket_thread_fct(void *arg) memset(send_buf, 0, BUFSIZE); sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element)); sl_ctrl_msg_send->type = GROUP_COMMUNICATION_ESTABLISH_RSP; - //in case of TX, assign a new SLRB and prepare for the filter - if (sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.type == 1) { - - sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = SLRB_ID; //slrb_id - //pthread_mutex_lock(&slrb_mutex); - slrb_id = SLRB_ID; - //pthread_mutex_unlock(&slrb_mutex); - } else{ //RX - sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = SL_DEFAULT_RAB_ID; - } + sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = 3; //slrb_id memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element)); free(sl_ctrl_msg_send); @@ -5961,17 +5943,6 @@ void *rrc_control_socket_thread_fct(void *arg) #endif ); } else {//RX -/* rrc_rlc_config_asn1_req(&ctxt, - (SRB_ToAddModList_t*)NULL, - UE->DRB_configList, - (DRB_ToReleaseList_t*)NULL -#ifdef Rel14 - ,(PMCH_InfoList_r9_t *)NULL - , sourceL2Id, 0 -#endif - ); -*/ - //configure MAC with sourceL2Id/groupL2ID rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0 (RadioResourceConfigCommonSIB_t *)NULL, @@ -6013,102 +5984,13 @@ void *rrc_control_socket_thread_fct(void *arg) } - - /* - //store sourceL2Id, destinationL2Id - if (type > 0) { //TX - UE_rrc_inst[module_id].sourceL2Id = sourceL2Id; - UE_rrc_inst[module_id].destinationL2Id = destinationL2Id; - - // configure lower layers PDCP/MAC/PHY - rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0 - (RadioResourceConfigCommonSIB_t *)NULL, - (struct PhysicalConfigDedicated *)NULL, - #if defined(Rel10) || defined(Rel14) - (SCellToAddMod_r10_t *)NULL, - //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10, - #endif - (MeasObjectToAddMod_t **)NULL, - (MAC_MainConfig_t *)NULL, - 0, - (struct LogicalChannelConfig *)NULL, - (MeasGapConfig_t *)NULL, - (TDD_Config_t *)NULL, - (MobilityControlInfo_t *)NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - #if defined(Rel10) || defined(Rel14) - ,0, - (MBSFN_AreaInfoList_r9_t *)NULL, - (PMCH_InfoList_r9_t *)NULL - - #endif - #ifdef CBA - , - 0, - 0 - #endif - #if defined(Rel10) || defined(Rel14) - ,CONFIG_ACTION_ADD, - &sourceL2Id, - &destinationL2Id - #endif - ); - - } else {//RX - UE_rrc_inst[module_id].sourceL2Id = sourceL2Id; - // configure lower layers PDCP/MAC/PHY - rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0 - (RadioResourceConfigCommonSIB_t *)NULL, - (struct PhysicalConfigDedicated *)NULL, - #if defined(Rel10) || defined(Rel14) - (SCellToAddMod_r10_t *)NULL, - //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10, - #endif - (MeasObjectToAddMod_t **)NULL, - (MAC_MainConfig_t *)NULL, - 0, - (struct LogicalChannelConfig *)NULL, - (MeasGapConfig_t *)NULL, - (TDD_Config_t *)NULL, - (MobilityControlInfo_t *)NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - #if defined(Rel10) || defined(Rel14) - ,0, - (MBSFN_AreaInfoList_r9_t *)NULL, - (PMCH_InfoList_r9_t *)NULL - - #endif - #ifdef CBA - , - 0, - 0 - #endif - #if defined(Rel10) || defined(Rel14) - ,CONFIG_ACTION_ADD, - &sourceL2Id, - NULL - #endif - ); - } -*/ - LOG_I(RRC,"Send PC5EstablishRsp to ProSe App\n"); memset(send_buf, 0, BUFSIZE); sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element)); sl_ctrl_msg_send->type = PC5S_ESTABLISH_RSP; - sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.sourceL2Id = sourceL2Id; - sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.destinationL2Id = destinationL2Id; - sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.status = 1; + sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid28 = 10; + sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid29 = 10; + sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid30 = 10; memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element)); prose_addr_len = sizeof(prose_app_addr);