diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c index 7ebcb08f1b6b5543b561102c129f6ade1c6e770f..bf629e55ee1c90bdc2245da443029ff251f81fb2 100644 --- a/openair2/LAYER2/MAC/ue_procedures.c +++ b/openair2/LAYER2/MAC/ue_procedures.c @@ -797,9 +797,11 @@ void ue_send_sl_sdu(module_id_t module_idP, NULL); } else { //SL_DISCOVERY - LOG_I( MAC, "SL DISCOVERY \n"); - //call mac_rrc_data_ind - uint16_t len; + //call mac_rrc_data_ind + uint16_t len = sdu_len; + printf("SL DISCOVERY: "); + for (int i=0;i<len;i++) printf("%x ",((uint8_t*)sdu)[i]); + printf("\n"); mac_rrc_data_ind(module_idP, CC_id, frameP,subframeP, diff --git a/openair2/RRC/LITE/L2_interface.c b/openair2/RRC/LITE/L2_interface.c index 2fbe6bec44aa378a987965157fc9a4667dda519a..9493cbfeaa0b46f36d051248ed0563cdf7f402bd 100644 --- a/openair2/RRC/LITE/L2_interface.c +++ b/openair2/RRC/LITE/L2_interface.c @@ -515,6 +515,7 @@ mac_rrc_data_ind( //TTN (for D2D) if(srb_idP == SL_DISCOVERY) { + LOG_I(RRC,"[UE %d] Received SDU (%d bytes) for SL_DISCOVERY on SRB %d from eNB %d\n",module_idP, sdu_lenP, srb_idP,eNB_indexP); decode_SL_Discovery_Message(&ctxt, eNB_indexP, sduP, sdu_lenP); } diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index 937a10c5a17dda57967e173c1925987996344014..dee7159d9c74d8c6296ac27ebb32ff200b68e5b8 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -5837,7 +5837,9 @@ int decode_SL_Discovery_Message( int prose_addr_len; char send_buf[BUFSIZE]; int n; + struct sidelink_ctrl_element *sl_ctrl_msg_recv = NULL; + LOG_I(RRC,"[decode_SL_Discovery_Message] received %d bytes (sizeof(struct sidelink_ctrl_element) %d)\n",Sdu_len, sizeof(struct sidelink_ctrl_element)); //from the main program, listen for the incoming messages from control socket (ProSe App) prose_addr_len = sizeof(prose_app_addr); @@ -5845,18 +5847,21 @@ int decode_SL_Discovery_Message( memcpy((void*)&UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.Payload[0], (void*)Sdu, Sdu_len); UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.payload_size = Sdu_len; + sl_ctrl_msg_recv = calloc(1, sizeof(struct sidelink_ctrl_element)); + memcpy((void *)sl_ctrl_msg_recv, (void *)Sdu, sizeof(struct sidelink_ctrl_element)); + LOG_I(RRC,"[decode_SL_Discovery_Message] Message type %d\n", sl_ctrl_msg_recv->type); + memset(send_buf, 0, BUFSIZE); //send to ProSeApp memcpy((void *)send_buf, (void*)Sdu, Sdu_len); prose_addr_len = sizeof(prose_app_addr); n = sendto(ctrl_sock_fd, (char *)send_buf, Sdu_len, 0, (struct sockaddr *)&prose_app_addr, prose_addr_len); -// free(sl_ctrl_msg_send); + if (n < 0){ LOG_E(RRC, "ERROR: Failed to send to ProSe App\n"); - exit(EXIT_FAILURE); + //exit(EXIT_FAILURE); } - - + free(sl_ctrl_msg_recv); return(0); } diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index 2cfaac41604e39d6656215593e00667b0ccd7c69..d5a6b0eb65a2da538b6a5d2155f9510bc157f52d 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -805,7 +805,7 @@ void ue_stub_rx_handler(unsigned int num_bytes, char *rx_buffer) { 0, pdu->header.absSF/10, pdu->header.absSF%10, - pdu->payload, + sldch->payload, sldch->payload_length, 0, SL_DISCOVERY_FLAG_YES);