Skip to content
Snippets Groups Projects
Commit ccdc09c8 authored by Rohit Gupta's avatar Rohit Gupta
Browse files

final pieces for SLDCH emulation

parent a7f21281
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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
......@@ -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
......
......@@ -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;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment