From ccdc09c82415391c2096bb34cc79e30f457346a6 Mon Sep 17 00:00:00 2001 From: Rohit Gupta <rohit.gupta@eurecom.fr> Date: Thu, 18 Jan 2018 14:08:19 +0100 Subject: [PATCH] final pieces for SLDCH emulation --- openair1/PHY/LTE_TRANSPORT/defs.h | 5 ++++- openair1/PHY/LTE_TRANSPORT/sldch.c | 25 ++++++++++++++++++++++++- openair2/RRC/LITE/proto.h | 2 +- targets/RT/USER/lte-ue.c | 23 +++++++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/defs.h b/openair1/PHY/LTE_TRANSPORT/defs.h index f3db52b18e..a13ccb20e6 100644 --- a/openair1/PHY/LTE_TRANSPORT/defs.h +++ b/openair1/PHY/LTE_TRANSPORT/defs.h @@ -937,7 +937,10 @@ typedef struct { } SLSCH_t; typedef struct { - + /// payload length + int payload_length; + /// pointer to payload + uint8_t *payload; } SLDCH_t; #define TTI_SYNC 0 diff --git a/openair1/PHY/LTE_TRANSPORT/sldch.c b/openair1/PHY/LTE_TRANSPORT/sldch.c index a06fed05de..c14a1b87a9 100644 --- a/openair1/PHY/LTE_TRANSPORT/sldch.c +++ b/openair1/PHY/LTE_TRANSPORT/sldch.c @@ -36,8 +36,31 @@ void generate_sldch(PHY_VARS_UE *ue,SLDCH_t *sldch,int frame_tx,int subframe_tx) { - AssertFatal(1==0,"Should get here yet for UE %d\n",ue->Mod_id); + UE_tport_t pdu; + size_t sldch_header_len = sizeof(UE_tport_header_t); + + pdu.header.packet_type = SLDCH; + pdu.header.absSF = (frame_tx*10)+subframe_tx; + + memcpy((void*)&pdu.sldch,(void*)sldch,sizeof(SLDCH_t)-sizeof(uint8_t*)); + + AssertFatal(sldch->payload_length <=1500-sldch_header_len - sizeof(SLDCH_t) + sizeof(uint8_t*), + "SLDCH payload length > %d\n", + 1500-sldch_header_len - sizeof(SLDCH_t) + sizeof(uint8_t*)); + memcpy((void*)&pdu.payload[0], + (void*)sldch->payload, + sldch->payload_length); + + LOG_I(PHY,"SLDCH configuration %d bytes, TBS payload %d bytes => %d bytes\n", + sizeof(SLDCH_t)-sizeof(uint8_t*), + sldch->payload_length, + sldch_header_len+sizeof(SLDCH_t)-sizeof(uint8_t*)+sldch->payload_length); + + multicast_link_write_sock(0, + &pdu, + sldch_header_len+sizeof(SLDCH_t)-sizeof(uint8_t*)+sldch->payload_length); } + #endif diff --git a/openair2/RRC/LITE/proto.h b/openair2/RRC/LITE/proto.h index 684ecc5d28..98acfa7fbd 100644 --- a/openair2/RRC/LITE/proto.h +++ b/openair2/RRC/LITE/proto.h @@ -363,7 +363,7 @@ SL_DiscConfig_r12_t rrc_eNB_get_sidelink_discTXPool( /** \brief Process request from control socket * \param arg */ -static void *rrc_control_socket_thread_fct(void *arg); +void *rrc_control_socket_thread_fct(void *arg); //L2_interface.c int8_t diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index ec7a5f2461..af39b5bdb6 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -762,6 +762,7 @@ void ue_stub_rx_handler(unsigned int num_bytes, char *rx_buffer) { UE_tport_t *pdu = (UE_tport_t*)rx_buffer; SLSCH_t *slsch = (SLSCH_t*)&pdu->slsch; + SLDCH_t *sldch = (SLDCH_t*)&pdu->sldch; switch (((UE_tport_header_t*)rx_buffer)->packet_type) { case TTI_SYNC: @@ -788,6 +789,28 @@ void ue_stub_rx_handler(unsigned int num_bytes, char *rx_buffer) { 0, SL_DISCOVERY_FLAG_NO); break; + + case SLDCH: + + + LOG_I(PHY,"Emulator SFN.SF %d.%d, Got SLDCH packet\n",emulator_absSF/10,emulator_absSF%10); + LOG_I(PHY,"Received %d bytes on UE-UE link for SFN.SF %d.%d, sending SLDCH payload (%d bytes) to MAC\n",num_bytes, + pdu->header.absSF/10,pdu->header.absSF%10, + sldch->payload_length); + printf("SLDCH:"); + for (int i=0;i<sizeof(SLDCH_t);i++) printf("%x ",((uint8_t*)sldch)[i]); + printf("\n"); + + ue_send_sl_sdu(0, + 0, + pdu->header.absSF/10, + pdu->header.absSF%10, + pdu->payload, + sldch->payload_length, + 0, + SL_DISCOVERY_FLAG_YES); + break; + } } -- 2.26.2