SPutSBuf(CU_APP_MEM_REG, CU_POOL, \
(Data *)_datPtr, _size);
+#define SEARCH_DU_DB(_duIdx, _duId, _duDb){\
+ _duDb = NULLP; \
+ for(_duIdx=0; _duIdx < cuCb.numDu; _duIdx++)\
+ {\
+ if(cuCb.duInfo[_duIdx].duId == _duId)\
+ {\
+ _duDb = (&cuCb.duInfo[_duIdx]);\
+ break; \
+ }\
+ }\
+}
+
+#define SEARCH_CELL_DB(_cellIdx, _duDb, _nrCellId, _cellCb){\
+ _cellCb = NULLP; \
+ for(_cellIdx=0; _cellIdx < _duDb->numCells; _cellIdx++)\
+ {\
+ if(_duDb->cellCb[_cellIdx].nrCellId == _nrCellId)\
+ {\
+ _cellCb = (&(_duDb->cellCb[_cellIdx]));\
+ break;\
+ }\
+ }\
+}
+
+
+typedef enum
+{
+ UE_IDLE,
+ UE_ATTACH_IN_PROGRESS,
+ UE_ACTIVE,
+ UE_HANDOVER_IN_PROGRESS
+}UeState;
+
typedef struct RrcVersion
{
uint8_t rrcVer; /* Latest RRC Version */
RrcVersion rrcVersion;
}CuCfgParams;
+typedef struct cuCellCb CuCellCb;
+
+typedef struct cuUeCb
+{
+ CuCellCb *cellCb;
+ uint32_t crnti;
+ uint8_t gnbDuUeF1apId;
+ uint8_t gnbCuUeF1apId;
+ F1apMsgDb f1apMsgDb;
+ UeState state;
+}CuUeCb;
+
+struct cuCellCb
+{
+ uint32_t nrCellId;
+ uint8_t numUe;
+ CuUeCb *ueCb[MAX_NUM_UE];
+};
+
typedef struct duDb
{
uint32_t duId;
char duName[CU_DU_NAME_LEN_MAX];
- //Cell Info
- //UE Info within each Cell
+ uint8_t numCells;
+ CuCellCb cellCb[MAX_NUM_CELL];
+ uint8_t numUe;
+ CuUeCb ueCb[MAX_NUM_CELL * MAX_NUM_UE];
}DuDb;
typedef struct cuGlobalCb
Snssai *snssaiList[MAX_NUM_OF_SLICE];
uint8_t numDu;
DuDb duInfo[MAX_DU_SUPPORTED];
+ uint32_t gnbCuUeF1apIdGenerator; /* Generating CU UE F1AP ID */
}CuGlobalCb;
CuGlobalCb cuCb;