UE: Add DL_CONFIG_REQ for PDCCH(DCI) and DLSCH config
clean code
This commit is contained in:
@@ -68,6 +68,7 @@ typedef int32_t sdu_size_t;
|
||||
typedef uint32_t frame_t;
|
||||
typedef int32_t sframe_t;
|
||||
typedef uint32_t sub_frame_t;
|
||||
typedef uint32_t slot_t;
|
||||
typedef uint8_t module_id_t;
|
||||
typedef uint8_t slice_id_t;
|
||||
typedef uint8_t eNB_index_t;
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include "defs.h"
|
||||
#include "proto.h"
|
||||
//#include "mac_defs.h"
|
||||
#include "mac_proto.h"
|
||||
|
||||
#include "NR_MAC-CellGroupConfig.h"
|
||||
|
||||
int nr_rrc_mac_config_req_ue(
|
||||
module_id_t module_id,
|
||||
int CC_idP,
|
||||
int cc_idP,
|
||||
uint8_t gNB_index,
|
||||
NR_MIB_t *mibP,
|
||||
NR_MAC_CellGroupConfig_t *mac_cell_group_configP,
|
||||
|
||||
@@ -47,7 +47,7 @@ typedef enum {
|
||||
CONNECTION_LOST,
|
||||
PHY_RESYNCH,
|
||||
PHY_HO_PRACH
|
||||
} UE_L2_STATE_t;
|
||||
} NR_UE_L2_STATE_t;
|
||||
|
||||
|
||||
#endif /*__LAYER2_MAC_DEFS_H__ */
|
||||
|
||||
@@ -34,31 +34,68 @@
|
||||
#define __LAYER2_MAC_PROTO_H__
|
||||
|
||||
#include "mac_defs.h"
|
||||
#include "mac.h"
|
||||
|
||||
/**\brief decode mib pdu in NR_UE, from if_module ul_ind with P7 tx_ind message
|
||||
\param module_id module id
|
||||
\param CC_id component carrier id
|
||||
\param cc_id component carrier id
|
||||
\param gNB_index gNB index
|
||||
\param extra_bits extra bits for frame calculation
|
||||
\param l_ssb_equal_64 check if ssb number of candicate is equal 64, 1=equal; 0=non equal. Reference 38.212 7.1.1
|
||||
\param pduP pointer to pdu
|
||||
\param pdu_length length of pdu*/
|
||||
int8_t nr_ue_decode_mib(module_id_t module_id, int CC_id, uint8_t gNB_index, uint8_t extra_bits, uint32_t l_ssb_equal_64, void *pduP, uint16_t pdu_len);
|
||||
int8_t nr_ue_decode_mib(
|
||||
module_id_t module_id,
|
||||
int cc_id,
|
||||
uint8_t gNB_index,
|
||||
uint8_t extra_bits,
|
||||
uint32_t l_ssb_equal_64,
|
||||
void *pduP,
|
||||
uint16_t pdu_len);
|
||||
|
||||
|
||||
/**\brief primitive from RRC layer to MAC layer for configuration L1/L2, now supported 4 rrc messages: MIB, cell_group_config for MAC/PHY, spcell_config(serving cell config)
|
||||
\param module_id module id
|
||||
\param CC_id component carrier id
|
||||
\param cc_id component carrier id
|
||||
\param gNB_index gNB index
|
||||
\param mibP pointer to RRC message MIB
|
||||
\param mac_cell_group_configP pointer to RRC message MAC-related in cell group config
|
||||
\param phy_cell_group_configP pointer to RRC message PHY-related in cell group config
|
||||
\param spcell_configP pointer to RRC message serving cell config*/
|
||||
int nr_rrc_mac_config_req_ue( module_id_t module_id, int CC_id, uint8_t gNB_index, NR_MIB_t *mibP, NR_MAC_CellGroupConfig_t *mac_cell_group_configP, NR_PhysicalCellGroupConfig_t *phy_cell_group_configP, NR_SpCellConfig_t *spcell_configP );
|
||||
|
||||
int nr_rrc_mac_config_req_ue(
|
||||
module_id_t module_id,
|
||||
int cc_id,
|
||||
uint8_t gNB_index,
|
||||
NR_MIB_t *mibP,
|
||||
NR_MAC_CellGroupConfig_t *mac_cell_group_configP,
|
||||
NR_PhysicalCellGroupConfig_t *phy_cell_group_configP,
|
||||
NR_SpCellConfig_t *spcell_configP );
|
||||
|
||||
/**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/
|
||||
int nr_l2_init_ue(void);
|
||||
|
||||
NR_UE_MAC_INST_t *get_mac_inst(module_id_t Mod_idP);
|
||||
/**\brief fetch MAC instance by module_id, within 0 - (NB_NR_UE_MAC_INST-1)
|
||||
\param module_id index of MAC instance(s)*/
|
||||
NR_UE_MAC_INST_t *get_mac_inst(
|
||||
module_id_t module_id);
|
||||
|
||||
/**\brief called at each slot, slot length based on numerology. now use u=0, scs=15kHz, slot=1ms
|
||||
performs BSR/SR/PHR procedures, random access procedure handler and DLSCH/ULSCH procedures.
|
||||
\param module_id module id
|
||||
\param gNB_index corresponding gNB index
|
||||
\param cc_id component carrier id
|
||||
\param rx_frame receive frame number
|
||||
\param rx_slot receive slot number
|
||||
\param tx_frame transmit frame number
|
||||
\param tx_slot transmit slot number*/
|
||||
NR_UE_L2_STATE_t nr_ue_scheduler(
|
||||
const module_id_t module_id,
|
||||
const uint8_t gNB_index,
|
||||
const int cc_id,
|
||||
const frame_t rx_frame,
|
||||
const slot_t rx_slot,
|
||||
const frame_t tx_frame,
|
||||
const slot_t tx_slot);
|
||||
|
||||
#endif
|
||||
/** @}*/
|
||||
@@ -30,8 +30,8 @@
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include "defs.h"
|
||||
#include "proto.h"
|
||||
//#include "defs.h"
|
||||
#include "mac_proto.h"
|
||||
|
||||
static NR_UE_MAC_INST_t *nr_ue_mac_inst;
|
||||
|
||||
@@ -49,6 +49,6 @@ nr_l2_init_ue(void)
|
||||
return (1);
|
||||
}
|
||||
|
||||
NR_UE_MAC_INST_t *get_mac_inst(module_id_t Mod_idP){
|
||||
return &nr_ue_mac_inst[(int)Mod_idP];
|
||||
NR_UE_MAC_INST_t *get_mac_inst(module_id_t module_id){
|
||||
return &nr_ue_mac_inst[(int)module_id];
|
||||
}
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
* \warning
|
||||
*/
|
||||
|
||||
#include "proto.h"
|
||||
#include "mac_proto.h"
|
||||
#include "RRC/NR_UE/rrc_proto.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int8_t nr_ue_decode_mib(
|
||||
module_id_t module_id,
|
||||
int CC_id,
|
||||
int cc_id,
|
||||
uint8_t gNB_index,
|
||||
uint8_t extra_bits, // 8bits 38.212 c7.1.1
|
||||
uint32_t l_ssb_equal_64,
|
||||
@@ -50,7 +50,7 @@ int8_t nr_ue_decode_mib(
|
||||
|
||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||
|
||||
nr_mac_rrc_data_ind_ue( module_id, CC_id, gNB_index,
|
||||
nr_mac_rrc_data_ind_ue( module_id, cc_id, gNB_index,
|
||||
NR_BCCH_BCH, (uint8_t *) pduP, pdu_len );
|
||||
|
||||
|
||||
@@ -70,21 +70,21 @@ int8_t nr_ue_decode_mib(
|
||||
if(l_ssb_equal_64){
|
||||
ssb_index = (( extra_bits >> 5 ) & 0x7 ); // extra bits[5:7]
|
||||
}else{
|
||||
if(ssb_subcarrier_offset_msb){
|
||||
ssb_subcarrier_offset = ssb_subcarrier_offset | 0x10;
|
||||
}
|
||||
if(ssb_subcarrier_offset_msb){
|
||||
ssb_subcarrier_offset = ssb_subcarrier_offset | 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
printf("system frame number(6 MSB bits): %d\n", mac->mib->systemFrameNumber.buf[0]);
|
||||
printf("system frame number(with LSB): %d\n", (int)frame);
|
||||
printf("subcarrier spacing: %d\n", (int)mac->mib->subCarrierSpacingCommon);
|
||||
printf("ssb carrier offset(with MSB): %d\n", (int)ssb_subcarrier_offset);
|
||||
printf("dmrs type A position: %d\n", (int)mac->mib->dmrs_TypeA_Position);
|
||||
printf("pdcch config sib1: %d\n", (int)mac->mib->pdcch_ConfigSIB1);
|
||||
printf("cell barred: %d\n", (int)mac->mib->cellBarred);
|
||||
printf("intra frequcney reselection: %d\n", (int)mac->mib->intraFreqReselection);
|
||||
printf("half frame bit(extra bits): %d\n", (int)half_frame_bit);
|
||||
printf("ssb index(extra bits): %d\n", (int)ssb_index);
|
||||
printf("system frame number(6 MSB bits): %d\n", mac->mib->systemFrameNumber.buf[0]);
|
||||
printf("system frame number(with LSB): %d\n", (int)frame);
|
||||
printf("subcarrier spacing: %d\n", (int)mac->mib->subCarrierSpacingCommon);
|
||||
printf("ssb carrier offset(with MSB): %d\n", (int)ssb_subcarrier_offset);
|
||||
printf("dmrs type A position: %d\n", (int)mac->mib->dmrs_TypeA_Position);
|
||||
printf("pdcch config sib1: %d\n", (int)mac->mib->pdcch_ConfigSIB1);
|
||||
printf("cell barred: %d\n", (int)mac->mib->cellBarred);
|
||||
printf("intra frequcney reselection: %d\n", (int)mac->mib->intraFreqReselection);
|
||||
printf("half frame bit(extra bits): %d\n", (int)half_frame_bit);
|
||||
printf("ssb index(extra bits): %d\n", (int)ssb_index);
|
||||
|
||||
// fill in the elements in config request inside P5 message
|
||||
mac->phy_config.config_req.pbch_config.system_frame_number = frame; // after calculation
|
||||
@@ -105,3 +105,20 @@ int8_t nr_ue_decode_mib(
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Performs :
|
||||
// 1. TODO: Call RRC for link status return to PHY
|
||||
// 2. TODO: Perform SR/BSR procedures for scheduling feedback
|
||||
// 3. TODO: Perform PHR procedures
|
||||
|
||||
NR_UE_L2_STATE_t nr_ue_scheduler(
|
||||
const module_id_t module_id,
|
||||
const uint8_t gNB_index,
|
||||
const int cc_id,
|
||||
const frame_t rx_frame,
|
||||
const slot_t rx_slot,
|
||||
const frame_t tx_frame,
|
||||
const slot_t tx_slot){
|
||||
|
||||
|
||||
return CONNECTION_OK;
|
||||
}
|
||||
@@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "NR_IF_Module.h"
|
||||
#include "LAYER2/NR_MAC_UE/proto.h"
|
||||
#include "mac_proto.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "rrc_defs.h"
|
||||
#include "rrc_proto.h"
|
||||
#include "rrc_vars.h"
|
||||
#include "LAYER2/NR_MAC_UE/proto.h"
|
||||
#include "mac_proto.h"
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user