#define KEY_FILE_ULBFWUE "UlBfwUe"
#define KEY_FILE_O_XU_CFG "oXuCfgFile"
+#define KEY_FILE_O_XU_BBU_CFG "oXuBbuCfgFile"
#define KEY_O_XU_PCIE_BUS "PciBusAddoXu"
#define KEY_O_XU_REM_MAC "oXuRem"
+#define KEY_DL_CP_BURST "dlCpProcBurst"
+#define KEY_XRAN_MLOG_DIS "xranMlogDisable"
#define KEY_FILE_ULSRS "antSrsC"
#define KEY_FILE_SLOT_TX "SlotNumTx"
#define KEY_FILE_SLOT_RX "SlotNumRx"
-#define KEY_PRACH_ENABLE "rachEanble"
-#define KEY_SRS_ENABLE "srsEanble"
+#define KEY_PRACH_ENABLE "rachEnable"
+#define KEY_SRS_ENABLE "srsEnable"
#define KEY_PUSCH_MASK_ENABLE "puschMaskEnable"
#define KEY_PUSCH_MASK_SLOT "puschMaskSlot"
#define KEY_PRACH_CFGIDX "prachConfigIndex"
+#define KEY_PRACH_CFGIDX_LTE "prachConfigIndexLTE"
#define KEY_SRS_SYM_IDX "srsSym"
+#define KEY_SRS_SLOT "srsSlot"
+#define KEY_SRS_NDM_OFFSET "srsNdmOffset"
+#define KEY_SRS_NDM_TXDUR "srsNdmTxDuration"
#define KEY_MAX_FRAME_ID "maxFrameId"
#define KEY_DEBUG_STOP_CNT "debugStopCount"
#define KEY_BBDEV_MODE "bbdevMode"
#define KEY_DYNA_SEC_ENA "DynamicSectionEna"
+#define EXT_TYPE "extType"
#define KEY_ALPHA "Gps_Alpha"
#define KEY_BETA "Gps_Beta"
#define KEY_PRBELEM_SRS "PrbElemSrs"
#define KEY_MAX_SEC_SYM "max_sections_per_symbol"
#define KEY_MAX_SEC_SLOT "max_sections_per_slot"
+#define KEY_PRBMAP_BY_SYMB "RunSlotPrbMapBySymbolEna"
+#define KEY_DSS_ENABLE "dssEnable"
+#define KEY_DSS_PERIOD "dssPeriod"
+#define KEY_TECHNOLOGY "technology"
typedef int (*fillConfigStruct_fn)(void* cbPram, const char *key, const char *value);
struct slot_cfg_to_pars {
*
* @todo Initialize missing parameters.
*/
-static void init_config(RuntimeConfig* config)
-{
- memset(config , 0, sizeof(RuntimeConfig));
-}
+//static void init_config(RuntimeConfig* config)
+//{
+// memset(config , 0, sizeof(RuntimeConfig));
+//}
static int32_t
parseFileViaCb (char *filename, fillConfigStruct_fn cbFn, void* cbParm);
static int fillConfigStruct(RuntimeConfig *config, const char *key, const char *value)
{
- int32_t parse_res = 0;
static uint32_t section_idx_dl = 0;
static uint32_t section_idx_ul = 0;
static uint32_t section_idx_srs = 0;
} else if (strcmp(key, KEY_SRS_ENABLE) == 0) {
config->enableSrs = atoi(value);
printf("Srs enable: %d\n",config->enableSrs);
+ } else if (strcmp(key, KEY_SRS_SYM_IDX) == 0) {
+ config->srsSymMask = atoi(value);
+ printf("Srs symbol [0-13]: %d\n",config->srsSymMask);
+ } else if (strcmp(key, KEY_SRS_SLOT) == 0) {
+ config->srsSlot = atoi(value);
+ printf("Srs slot: %d\n",config->srsSlot);
+ } else if (strcmp(key, KEY_SRS_NDM_OFFSET) == 0) {
+ config->srsNdmOffset = atoi(value);
+ printf("Srs NDM Offset: %d\n",config->srsNdmOffset);
+ } else if (strcmp(key, KEY_SRS_NDM_TXDUR) == 0) {
+ config->srsNdmTxDuration = atoi(value);
+ printf("Srs NDM TX duration: %d\n",config->srsNdmTxDuration);
} else if (strcmp(key, KEY_PUSCH_MASK_ENABLE) == 0) {
config->puschMaskEnable = atoi(value);
printf("PUSCH mask enable: %d\n",config->puschMaskEnable);
} else if (strcmp(key, KEY_PRACH_CFGIDX) == 0) {
config->prachConfigIndex = atoi(value);
printf("Prach config index: %d\n",config->prachConfigIndex);
- } else if (strcmp(key, KEY_SRS_SYM_IDX) == 0) {
- config->srsSymMask = atoi(value);
- printf("Srs symbol [0-13]: %d\n",config->srsSymMask);
+ } else if (strcmp(key, KEY_PRACH_CFGIDX_LTE) == 0) {
+ config->prachConfigIndexLTE = atoi(value);
+ printf("Prach config index LTE for DSS: %d\n",config->prachConfigIndexLTE);
} else if (strncmp(key, KEY_FILE_PRACH_AxC, strlen(KEY_FILE_PRACH_AxC)) == 0) {
unsigned int ant_num = 0;
sscanf(key,"antPrachC%02u",&ant_num);
} else if (strcmp(key, KEY_DYNA_SEC_ENA) == 0) {
config->DynamicSectionEna = atoi(value);
printf("DynamicSectionEna: %d\n",config->DynamicSectionEna);
+ } else if (strcmp(key, EXT_TYPE) == 0) {
+ config->extType = atoi(value);
+ printf("ExtType: %d\n",config->extType);
} else if (strcmp(key, KEY_ALPHA) == 0) {
config->GPS_Alpha = atoi(value);
printf("GPS_Alpha: %d\n",config->GPS_Alpha);
}
else{
struct xran_prb_elm *pPrbElem = &config->p_PrbMapUl->prbMap[section_idx_ul];
- sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
+ sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
(uint8_t*)&pPrbElem->bf_weight.numBundPrb,
(uint8_t*)&pPrbElem->bf_weight.numSetBFWs,
(uint8_t*)&pPrbElem->bf_weight.RAD,
(uint8_t*)&pPrbElem->bf_weight.disableBFWs,
(uint8_t*)&pPrbElem->bf_weight.bfwIqWidth,
- (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth);
+ (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth,
+ (uint8_t*)&pPrbElem->bf_weight.extType);
printf(KEY_EXTBFW_UL"%d: ", section_idx_ul);
- printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d\n",
- pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth);
+ printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d, extType %d\n",
+ pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth, pPrbElem->bf_weight.extType);
}
}else if (strcmp(key, KEY_NPRBELEM_DL ) == 0) {
config->p_PrbMapDl->nPrbElm = atoi(value);
}
else{
struct xran_prb_elm *pPrbElem = &config->p_PrbMapDl->prbMap[section_idx_dl];
- sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
+ sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
(uint8_t*)&pPrbElem->bf_weight.numBundPrb,
(uint8_t*)&pPrbElem->bf_weight.numSetBFWs,
(uint8_t*)&pPrbElem->bf_weight.RAD,
(uint8_t*)&pPrbElem->bf_weight.disableBFWs,
(uint8_t*)&pPrbElem->bf_weight.bfwIqWidth,
- (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth);
+ (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth,
+ (uint8_t*)&pPrbElem->bf_weight.extType);
printf(KEY_EXTBFW_DL"%d: ", section_idx_dl);
- printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d\n",
- pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth);
+ printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d, extType %d\n",
+ pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth, pPrbElem->bf_weight.extType);
}
} else if (strcmp(key, KEY_NPRBELEM_SRS ) == 0) {
config->p_PrbMapSrs->nPrbElm = atoi(value);
printf("nRBStart %d,nRBSize %d,nStartSymb %d,numSymb %d,nBeamIndex %d, bf_weight_update %d compMethod %d, iqWidth %d BeamFormingType %d\n",
pPrbElem->nRBStart,pPrbElem->nRBSize,pPrbElem->nStartSymb,pPrbElem->numSymb,pPrbElem->nBeamIndex, pPrbElem->bf_weight_update, pPrbElem->compMethod, pPrbElem->iqWidth, pPrbElem->BeamFormingType);
}
+ } else if (strcmp(key, KEY_PRBMAP_BY_SYMB ) == 0) {
+ config->RunSlotPrbMapBySymbolEnable = atoi(value);
+ printf("RunSlotPrbMapBySymbolEnable: %d\n",config->RunSlotPrbMapBySymbolEnable);
+ } else if (strcmp(key, KEY_DSS_ENABLE ) == 0) {
+ config->dssEnable = atoi(value);
+ printf("dssEnable: %d\n",config->dssEnable);
+ } else if (strcmp(key, KEY_DSS_PERIOD ) == 0) {
+ config->dssPeriod = atoi(value);
+ printf("dssPeriod: %d\n",config->dssPeriod);
+ } else if (strcmp(key, KEY_TECHNOLOGY ) == 0) {
+ int i = 0;
+ sscanf(value, "%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx,%02hhx",
+ (uint8_t *)&config->technology[0],
+ (uint8_t *)&config->technology[1],
+ (uint8_t *)&config->technology[2],
+ (uint8_t *)&config->technology[3],
+ (uint8_t *)&config->technology[4],
+ (uint8_t *)&config->technology[5],
+ (uint8_t *)&config->technology[6],
+ (uint8_t *)&config->technology[7],
+ (uint8_t *)&config->technology[8],
+ (uint8_t *)&config->technology[9],
+ (uint8_t *)&config->technology[10],
+ (uint8_t *)&config->technology[11],
+ (uint8_t *)&config->technology[12],
+ (uint8_t *)&config->technology[13],
+ (uint8_t *)&config->technology[14]);
+ printf("technology:");
+ for( i=0; i<config->dssPeriod; i++) {
+ printf("%d ",config->technology[i]);
+ }
+ printf("\n");
}else {
printf("Unsupported configuration key [%s]\n", key);
return -1;
}
-
return 0;
}
static int
fillUsecaseStruct(UsecaseConfig *config, const char *key, const char *value)
{
- int32_t parse_res = 0;
if (strcmp(key, KEY_APP_MODE) == 0){
config->appMode = atoi(value);
printf("appMode %d \n", config->appMode);
strncpy(&config->o_xu_cfg_file[o_xu_id][0], value, strlen(value));
printf("oXuCfgFile%d: %s\n",o_xu_id, config->o_xu_cfg_file[o_xu_id]);
}
+ } else if (strncmp(key, KEY_FILE_O_XU_BBU_CFG, strlen(KEY_FILE_O_XU_BBU_CFG)) == 0) {
+ strncpy(&config->o_xu_bbu_cfg_file[0], value, strlen(value));
+ printf("oXuBbuCfgFile: %s\n", config->o_xu_bbu_cfg_file);
} else if (strncmp(key, KEY_OWDM_INIT_EN, strlen(KEY_OWDM_INIT_EN)) == 0) {
config->owdmInitEn = atoi(value);
printf("owdmInitEn %d\n", config->owdmInitEn);
config->remote_o_xu_addr[xu_num][vf_num].addr_bytes[4],
config->remote_o_xu_addr[xu_num][vf_num].addr_bytes[5]);
}
+ }
+ else if (strncmp(key, KEY_DL_CP_BURST, strlen(KEY_DL_CP_BURST)) == 0) {
+ config->dlCpProcBurst = atoi(value);
+ printf("dlCpProcBurst %d\n", config->dlCpProcBurst);
+ } else if (strncmp(key, KEY_XRAN_MLOG_DIS, strlen(KEY_XRAN_MLOG_DIS)) == 0) {
+ config->mlogxrandisable = atoi(value);
+ printf("xranMlogDisable %d\n", config->mlogxrandisable);
} else {
printf("Unsupported configuration key [%s]\n", key);
return -1;
printf("section_idx %d of bfw exceeds nPrbElemUl\n",section_idx);
}else{
struct xran_prb_elm *pPrbElem = &config->p_SlotPrbMap[direction][slot_idx]->prbMap[section_idx];
- sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
+ sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
(uint8_t*)&pPrbElem->bf_weight.numBundPrb,
(uint8_t*)&pPrbElem->bf_weight.numSetBFWs,
(uint8_t*)&pPrbElem->bf_weight.RAD,
(uint8_t*)&pPrbElem->bf_weight.disableBFWs,
(uint8_t*)&pPrbElem->bf_weight.bfwIqWidth,
- (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth);
+ (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth,
+ (uint8_t*)&pPrbElem->bf_weight.extType);
printf(KEY_EXTBFW_UL"%d: ", section_idx);
- printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d\n",
- pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth);
+ printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d, extType %d\n",
+ pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth, pPrbElem->bf_weight.extType);
}
}else if (strcmp(key, KEY_NPRBELEM_DL ) == 0) {
config->p_SlotPrbMap[direction][slot_idx]->nPrbElm = atoi(value);
}
else{
struct xran_prb_elm *pPrbElem = &config->p_SlotPrbMap[direction][slot_idx]->prbMap[section_idx];
- sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
+ sscanf(value, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu,%hhu",
(uint8_t*)&pPrbElem->bf_weight.numBundPrb,
(uint8_t*)&pPrbElem->bf_weight.numSetBFWs,
(uint8_t*)&pPrbElem->bf_weight.RAD,
(uint8_t*)&pPrbElem->bf_weight.disableBFWs,
(uint8_t*)&pPrbElem->bf_weight.bfwIqWidth,
- (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth);
+ (uint8_t*)&pPrbElem->bf_weight.bfwCompMeth,
+ (uint8_t*)&pPrbElem->bf_weight.extType);
printf(KEY_EXTBFW_DL"%d: ",section_idx);
- printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d\n",
- pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth);
+ printf("numBundPrb %d, numSetBFW %d, RAD %d, disableBFW %d, bfwIqWidth %d, bfwCompMeth %d, extType %d\n",
+ pPrbElem->bf_weight.numBundPrb, pPrbElem->bf_weight.numSetBFWs, pPrbElem->bf_weight.RAD, pPrbElem->bf_weight.disableBFWs, pPrbElem->bf_weight.bfwIqWidth, pPrbElem->bf_weight.bfwCompMeth, pPrbElem->bf_weight.extType);
}
} else {
printf("Unsupported configuration key [%s]\n", key);
struct xran_prb_map*
config_malloc_prb_map(void)
{
- uint32_t size = sizeof(struct xran_prb_map) + (XRAN_MAX_SECTIONS_PER_SLOT -1) * sizeof(struct xran_prb_elm);
+ //uint32_t size = sizeof(struct xran_prb_map) + (XRAN_MAX_SECTIONS_PER_SLOT -1) * sizeof(struct xran_prb_elm);
+ uint32_t size = sizeof(struct xran_prb_map) + (8) * sizeof(struct xran_prb_elm);
void *ret = NULL;
ret = malloc(size);
int32_t
config_init(RuntimeConfig *p_o_xu_cfg)
{
- int32_t i, j, k, z;
+ int32_t i, j;
memset(p_o_xu_cfg, 0, sizeof(RuntimeConfig));
p_o_xu_cfg->p_PrbMapDl = config_malloc_prb_map();
}
}
+#if 0
for (i = 0; i < XRAN_DIR_MAX; i++) {
for (j = 0; j < XRAN_N_FE_BUF_LEN; j++) {
for (k = 0; k < XRAN_MAX_SECTOR_NR; k++) {
}
}
}
+#endif
return 0;
}
+int32_t
+config_init2(RuntimeConfig *p_o_xu_cfg)
+{
+ int32_t i, j, k, z;
+ for (i = 0; i < XRAN_DIR_MAX; i++) {
+ for (j = 0; j < XRAN_N_FE_BUF_LEN; j++) {
+ for (k = 0; k < p_o_xu_cfg->numCC; k++) {
+ for (z = 0; z < p_o_xu_cfg->numAxc; z++) {
+ p_o_xu_cfg->p_RunSlotPrbMap[i][j][k][z] = config_malloc_prb_map();
+ p_o_xu_cfg->p_RunSrsSlotPrbMap[i][j][k][z] = config_malloc_prb_map();
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
int
-parseConfigFile(char *filename, RuntimeConfig *config)
+parseConfigFile(const char *filename, RuntimeConfig *config)
{
char inputLine[MAX_LINE_SIZE] = {0};
int inputLen = 0;
}
}
- if (inputLine[strlen(inputLine)-1] == '\n')
- inputLine[strlen(inputLine)-1] == '\0';
lineNum++;
inputLen = strlen(inputLine);
}
int32_t
-parseSlotConfigFile(char *dir, RuntimeConfig *config)
+parseSlotConfigFile(const char *dir, RuntimeConfig *config)
{
int32_t ret = 0;
char filename[512];
size_t len;
int32_t slot_idx = 0;
- int32_t cc_idx = 0;
- int32_t ant_idx = 0;
int32_t direction = 0;
struct slot_cfg_to_pars slot_cfg_param;
}
}
- if (inputLine[strlen(inputLine)-1] == '\n')
- inputLine[strlen(inputLine)-1] == '\0';
lineNum++;
inputLen = strlen(inputLine);
return 0;
}
-int parseUsecaseFile(char *filename, UsecaseConfig *usecase_cfg)
+int parseUsecaseFile(const char *filename, UsecaseConfig *usecase_cfg)
{
char inputLine[MAX_LINE_SIZE] = {0};
int inputLen = 0;
}
}
- if (inputLine[strlen(inputLine)-1] == '\n')
- inputLine[strlen(inputLine)-1] == '\0';
lineNum++;
inputLen = strlen(inputLine);