adding MAC part of 5G FAPI interface for PUSCH. Since the previous version was incomplete anyway I merged in the new SCF specs and used those (only for PUSCH). Todo: implement PHY part.

This commit is contained in:
Florian Kaltenberger
2019-09-05 16:40:31 +02:00
parent fa040160d0
commit 7fb14ab321
8 changed files with 218 additions and 108 deletions
@@ -17,6 +17,12 @@
#define NFAPI_NR_MAX_NB_CORESETS 12
#define NFAPI_NR_MAX_NB_SEARCH_SPACES 40
#define NFAPI_MAX_NUM_UL_UE_PER_GROUP 6
#define NFAPI_MAX_NUM_UL_PDU 8
#define NFAPI_MAX_NUM_GROUPS 8
#define NFAPI_MAX_NUM_CB 8
/*
// Extension to the generic structures for single tlv values
typedef struct {
nfapi_tl_t tl;
@@ -27,6 +33,7 @@ typedef struct {
nfapi_tl_t tl;
uint32_t value;
} nfapi_uint32_tlv_t;
*/
// 2019.8
// SCF222_5G-FAPI_PHY_SPI_Specificayion.pdf Section 3.2
@@ -259,7 +266,7 @@ typedef struct {
typedef struct {
uint8_t number_of_tlvs;
nfapi_nr_config_tlv_t tlv;
} nfapi_nr_config_request_t;
} nfapi_nr_config_request_scf_t;
typedef enum {
NFAPI_NR_CONFIG_MSG_OK = 0,
@@ -830,8 +837,7 @@ typedef struct
uint8_t new_data_indicator;
uint32_t tb_size;
uint16_t num_cb;
// fixme:
uint8_t *cb_present_and_position;//uint8_t cb_present_and_position[ceil (num_cb / 8)]
uint8_t cb_present_and_position[(NFAPI_MAX_NUM_CB+7) / 8];
} nfapi_nr_pusch_data_t;
//for nfapi_nr_pusch_uci_t
@@ -875,9 +881,14 @@ typedef struct
} nfapi_nr_dfts_ofdm_t;
#define PUSCH_PDU_BITMAP_PUSCH_DATA 0x1
#define PUSCH_PDU_BITMAP_PUSCH_UCI 0x2
#define PUSCH_PDU_BITMAP_PUSCH_PTRS 0x4
#define PUSCH_PDU_BITMAP_DFTS_OFDM 0x8
typedef struct
{
uint16_t pdu_bit_map;//
uint16_t pdu_bit_map;//Bitmap indicating presence of optional PDUs (see above)
uint16_t rnti;
uint32_t handle;//An opaque handling returned in the RxData.indication and/or UCI.indication message
//BWP
@@ -892,6 +903,7 @@ typedef struct
uint8_t mcs_table;
uint8_t transform_precoding;
uint16_t data_scrambling_id;
uint8_t nrOfLayers;
//DMRS
uint8_t ul_dmrs_symb_pos;
uint8_t dmrs_config_type;
@@ -1002,19 +1014,25 @@ typedef struct
} nfapi_nr_srs_pdu_t;
//
typedef struct
{
nfapi_nr_prach_pdu_t* prach_pdu;
nfapi_nr_pusch_pdu_t* pusch_pdu;
nfapi_nr_pucch_pdu_t* pucch_pdu;
nfapi_nr_srs_pdu_t* srs_pdu;
} nfapi_nr_ul_pdu_configuration_t;
typedef enum {
NFAPI_NR_UL_CONFIG_PRACH_PDU_TYPE=0,
NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE,
NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE,
NFAPI_NR_UL_CONFIG_SRS_PDU_TYPE,
} nfapi_nr_ul_config_pdu_type_e;
typedef struct
{
uint16_t pdu_type;//0: PRACH PDU, 1: PUSCH PDU, 2: PUCCH PDU, 3: SRS PDU
uint16_t pdu_size;//Value: 0 -> 65535
nfapi_nr_ul_pdu_configuration_t* ul_pdu_configuration;
union
{
nfapi_nr_prach_pdu_t prach_pdu;
nfapi_nr_pusch_pdu_t pusch_pdu;
nfapi_nr_pucch_pdu_t pucch_pdu;
nfapi_nr_srs_pdu_t srs_pdu;
};
} nfapi_nr_ul_tti_request_number_of_pdus_t;
@@ -1027,7 +1045,7 @@ typedef struct
typedef struct
{
uint8_t n_ue;//Number of UE in this group For SU-MIMO, one group includes one UE only. For MU-MIMO, one group includes up to 12 UEs. Value 1 -> 6
nfapi_nr_ul_tti_request_number_of_ue_t* ue_list;
nfapi_nr_ul_tti_request_number_of_ue_t ue_list[NFAPI_MAX_NUM_UL_UE_PER_GROUP];
} nfapi_nr_ul_tti_request_number_of_groups_t;
@@ -1039,8 +1057,8 @@ typedef struct {
uint8_t n_ulsch;//Number of ULSCH PDUs that are included in this message.
uint8_t n_ulcch;//Number of ULCCH PDUs
uint8_t n_group;//Number of UE Groups included in this message. Value 0 -> 8
nfapi_nr_ul_tti_request_number_of_pdus_t* pdus_list;
nfapi_nr_ul_tti_request_number_of_groups_t* groups_list;
nfapi_nr_ul_tti_request_number_of_pdus_t pdus_list[NFAPI_MAX_NUM_UL_PDU];
nfapi_nr_ul_tti_request_number_of_groups_t groups_list[NFAPI_MAX_NUM_GROUPS];
} nfapi_nr_ul_tti_request_t;
@@ -1381,4 +1399,4 @@ typedef struct
} nfapi_nr_rach_indication_t;
#endif
#endif