1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /************************************************************************
25 Desc: C source code for Entry point fucntions
29 **********************************************************************/
32 @brief This file contains the APIs exposed for the insertion/fetching/deletion of cellCb/ueCb and traversal of LcCbLst.
35 /* header include files -- defines (.h) */
36 #include "envopt.h" /* environment options */
37 #include "envdep.h" /* environment dependent */
38 #include "envind.h" /* environment independent */
39 #include "gen.h" /* general layer */
40 #include "ssi.h" /* system service interface */
41 #include "cm_hash.h" /* common hash list */
42 #include "cm_mblk.h" /* common memory link list library */
43 #include "cm_llist.h" /* common linked list library */
44 #include "cm_err.h" /* common error */
45 #include "cm_lte.h" /* common LTE */
50 #include "rg_sch_inf.h"
54 /* header/extern include files (.x) */
55 #include "gen.x" /* general layer */
56 #include "ssi.x" /* system service interface */
57 #include "cm5.x" /* common timers */
58 #include "cm_lib.x" /* common library */
59 #include "cm_hash.x" /* common hash list */
60 #include "cm_mblk.x" /* common memory link list library */
61 #include "cm_llist.x" /* common linked list library */
62 #include "cm_tkns.x" /* common tokens */
63 #include "cm_lte.x" /* common LTE */
68 #include "rg_sch_inf.x"
69 #include "rg_prg.x" /* PRG interface typedefs*/
70 #include "du_app_mac_inf.h"
75 PRIVATE S16 rgDBMInitUeCbLst ARGS(( RgCellCb *cellCb, U16 numBins));
76 PRIVATE Void rgDBMInitDedLcLst ARGS((RgUeCb *ueCb));
77 PRIVATE Void rgDBMInitCmnLcLst ARGS((RgCellCb *cellCb));
78 PRIVATE Void rgDBMInitRachLst ARGS((RgCellCb *cellCb));
80 PRIVATE S16 rgDBMInitSpsUeCbLst ARGS((
90 /* forward references */
93 * @brief Handler for Initializing the cell.
97 * Function : rgDBMInitCell
99 * Initializes the lists belonging to the cell.
102 * @param[in] RgCellCb *cellCb
108 PUBLIC S16 rgDBMInitCell
113 PUBLIC S16 rgDBMInitCell(cellCb)
121 /* Initialize ue list */
122 if ((ret = rgDBMInitUeCbLst(cellCb, RG_MAX_UE_BIN_PER_CELL)) != ROK)
126 /* Initialize SPS Ue list */
127 if ((ret = rgDBMInitSpsUeCbLst(cellCb, RG_MAX_UE_BIN_PER_CELL)) != ROK)
129 #endif /* LTEMAC_SPS */
131 /* Initialize BCCH/PCCH logical channels */
132 rgDBMInitCmnLcLst(cellCb);
135 /* Initialize rach ue list */
136 rgDBMInitRachLst(cellCb);
140 } /* rgDBMInitCell */
143 * @brief Handler for initializing the ueCbLst under the cellCb.
147 * Function : rgDBMInitUeCbLst
157 PRIVATE S16 rgDBMInitUeCbLst
163 PRIVATE S16 rgDBMInitUeCbLst(cellCb, numBins)
168 Inst inst = cellCb->macInst - RG_INST_START;
170 TRC2(rgDBMInitUeCbLst)
172 RETVALUE(cmHashListInit(&cellCb->ueLst, numBins, (U16)((PTR)&(ue.ueLstEnt) - (PTR)&ue), FALSE,
173 CM_HASH_KEYTYPE_CONID, rgCb[inst].rgInit.region, rgCb[inst].rgInit.pool));
175 } /* rgDBMInitUeCbLst */
178 * @brief Handler for de-initializing the ueCbLst under the cellCb.
182 * Function : rgDBMDeInitUeCbLst
191 PUBLIC S16 rgDBMDeInitUeCbLst
196 PUBLIC S16 rgDBMDeInitUeCbLst(cellCb)
200 TRC2(rgDBMDeInitUeCbLst)
202 RETVALUE(cmHashListDeinit(&cellCb->ueLst));
204 } /* rgDBMDeInitUeCbLst */
208 * @brief Handler for initializing the spsUeCbLst under the cellCb.
212 * Function : rgDBMInitSpsUeCbLst
222 PRIVATE S16 rgDBMInitSpsUeCbLst
228 PRIVATE S16 rgDBMInitSpsUeCbLst(cellCb, numBins)
233 Inst inst = cellCb->macInst - RG_INST_START;
235 TRC2(rgDBMInitSpsUeCbLst)
237 RETVALUE(cmHashListInit(&cellCb->spsUeLst, numBins, (U16) ((PTR) &(ue.spsUeLstEnt) - (PTR) &ue), FALSE,
238 CM_HASH_KEYTYPE_CONID, rgCb[inst].rgInit.region, rgCb[inst].rgInit.pool));
240 } /* rgDBMInitSpsUeCbLst */
243 * @brief Handler for de-initializing the spsUeCbLst under the cellCb.
247 * Function : rgDBMDeInitSpsUeCbLst
256 PUBLIC S16 rgDBMDeInitSpsUeCbLst
261 PUBLIC S16 rgDBMDeInitSpsUeCbLst(cellCb)
265 TRC2(rgDBMDeInitSpsUeCbLst)
267 RETVALUE(cmHashListDeinit(&cellCb->spsUeLst));
269 } /* rgDBMDeInitSpsUeCbLst */
271 #endif /* LTEMAC_SPS */
274 * @brief Handler for inserting the ueCb in to the ueCbLst under the cellCb.
278 * Function : rgDBMInsUeCb
288 PUBLIC S16 rgDBMInsUeCb
294 PUBLIC S16 rgDBMInsUeCb(cellCb, ueCb)
301 RETVALUE(cmHashListInsert(&cellCb->ueLst, (PTR)ueCb,
302 (U8 *)&ueCb->ueId, (U16)sizeof(ueCb->ueId)));
308 * @brief Handler for inserting the ueCb in to the spsUeCbLst under the cellCb.
312 * Function : rgDBMInsSpsUeCb
322 PUBLIC S16 rgDBMInsSpsUeCb
328 PUBLIC S16 rgDBMInsSpsUeCb(cellCb, ueCb)
333 TRC2(rgDBMInsSpsUeCb)
335 RETVALUE(cmHashListInsert(&cellCb->spsUeLst, (PTR)ueCb,
336 (U8 *)&ueCb->spsRnti, (U16)sizeof(ueCb->spsRnti)));
338 } /* end of rgDBMInsSpsUeCb */
340 #endif /* LTEMAC_SPS */
343 * @brief Handler for accessing the existing ueCb identified by the key ueId
344 * in the ueCbLst under the cellCb.
348 * Function : rgDBMGetUeCb
356 PUBLIC RgUeCb* rgDBMGetUeCb
362 PUBLIC RgUeCb* rgDBMGetUeCb(cellCb, ueId)
367 RgUeCb *ueCb = NULLP;
371 cmHashListFind(&cellCb->ueLst, (U8 *)&ueId,
372 sizeof(ueId), 0, (PTR *)&ueCb);
378 * @brief Handler for accessing the ueCb identified by the key sps-rnti
379 * in the spsUeLst under the cellCb.
383 * Function : rgDBMGetSpsUeCb
391 PUBLIC RgUeCb* rgDBMGetSpsUeCb
397 PUBLIC RgUeCb* rgDBMGetSpsUeCb(cellCb, spsRnti)
402 RgUeCb *ueCb = NULLP;
404 TRC2(rgDBMGetSpsUeCb)
406 cmHashListFind(&cellCb->spsUeLst, (U8 *)&spsRnti,
407 sizeof(spsRnti), 0, (PTR *)&ueCb);
409 } /* rgDBMGetSpsUeCb */
411 #endif /* LTEMAC_SPS */
414 * @brief Handler for accessing the existing next ueCb in the ueCbLst under the
419 * Function : rgDBMGetNextUeCb
427 PUBLIC RgUeCb* rgDBMGetNextUeCb
433 PUBLIC RgUeCb* rgDBMGetNextUeCb(cellCb, ueCb)
438 RgUeCb *nextUeCb = NULLP;
440 TRC2(rgDBMGetNextUeCb)
442 cmHashListGetNext(&cellCb->ueLst, (PTR) ueCb, (PTR *)&nextUeCb);
444 } /* rgDBMGetNextUeCb */
448 * @brief Handler for accessing the existing next ueCb stored in the spsUeCbLst
449 * using SPS-Rnti under the cellCb.
453 * Function : rgDBMGetNextSpsUeCb
461 PUBLIC RgUeCb* rgDBMGetNextSpsUeCb
467 PUBLIC RgUeCb* rgDBMGetNextSpsUeCb(cellCb, ueCb)
472 RgUeCb *nextUeCb = NULLP;
474 TRC2(rgDBMGetNextSpsUeCb)
476 cmHashListGetNext(&cellCb->spsUeLst, (PTR) ueCb, (PTR *)&nextUeCb);
478 } /* end of rgDBMGetNextSpsUeCb */
480 #endif /* LTEMAC_SPS */
484 * @brief Handler for deleting the existing ueCb from the ueCbLst under the
489 * Function : rgDBMDelUeCb
499 PUBLIC S16 rgDBMDelUeCb
505 PUBLIC S16 rgDBMDelUeCb(cellCb, ueCb)
512 RETVALUE(cmHashListDelete(&cellCb->ueLst, (PTR)ueCb));
517 * @brief Handler for deleting the existing ueCb from the spsUeCbLst under the
522 * Function : rgDBMDelSpsUeCb
532 PUBLIC S16 rgDBMDelSpsUeCb
538 PUBLIC S16 rgDBMDelSpsUeCb(cellCb, ueCb)
543 TRC2(rgDBMDelSpsUeCb)
545 RETVALUE(cmHashListDelete(&cellCb->spsUeLst, (PTR)ueCb));
546 } /* end of rgDBMDelSpsUeCb */
548 #endif /* LTEMAC_SPS */
551 * @brief Handler for Initializing the UE.
555 * Function : rgDBMInitUe
557 * Initializes the lists belonging to the UE.
560 * @param[in] RgUeCb *ueCb
566 PUBLIC Void rgDBMInitUe
571 PUBLIC Void rgDBMInitUe(ueCb)
581 /* Initialize Dedicated logical channels */
582 rgDBMInitDedLcLst(ueCb);
585 /* Initialize the SPS LC Ids */
586 for (idx=0; idx < RG_MAX_LC_PER_UE; idx++)
588 ueCb->ul.spsLcId[idx] = FALSE;
597 * @brief Handler for Initializing the dedicated logical channels.
601 * Function : rgDBMInitDedLcLst
603 * Initializes dedicated logical channels.
605 * @param[in] RgUeCb *ueCb
609 PRIVATE Void rgDBMInitDedLcLst
614 PRIVATE Void rgDBMInitDedLcLst(ueCb)
620 TRC2(rgDBMInitDedLcLst);
622 for (idx = 0; idx < RG_MAX_LC_PER_UE; ++idx)
624 /* Set Dedicated LCs as not configured */
625 ueCb->ul.lcCb[idx].lcId = RG_INVALID_LC_ID;
626 ueCb->ul.lcCb[idx].lcgId = RG_INVALID_LCG_ID;
627 ueCb->dl.lcCb[idx].lcId = RG_INVALID_LC_ID;
630 for (idx = 0; idx < RG_MAX_LCG_PER_UE; ++idx)
632 /* Set LCGs as not configured */
633 ueCb->ul.lcgArr[idx].lcgId = RG_INVALID_LCG_ID;
634 ueCb->ul.lcgArr[idx].lcCount = 0;
637 /* Stack Crash problem for TRACE5 Changes. Added the return below */
639 } /* rgDBMInitDedLcLst */
642 * @brief Handler for Initializing the common logical channel list of the cell.
646 * Function : rgDBMInitCmnLcLst
648 * Initializes following common logical channels belonging to the cell.
653 * @param[in] RgCellCb *cellCb
657 PRIVATE Void rgDBMInitCmnLcLst
662 PRIVATE Void rgDBMInitCmnLcLst(cellCb)
668 TRC2(rgDBMInitCmnLcLst);
670 cellCb->bcchBchInfo.lcId = RG_INVALID_LC_ID;
671 cellCb->pcchInfo.lcId = RG_INVALID_LC_ID;
673 cellCb->numBcchDlschInfo = 0;
674 for (idx = 0; idx < RG_MAX_BCCH_DLSCH; idx++)
676 cellCb->bcchDlschInfo[idx].lcId = RG_INVALID_LC_ID;
677 cellCb->bcchDlschInfo[idx].tb = NULLP;
680 /* Stack Crash problem for TRACE5 Changes. Added the return below */
682 } /* rgDBMInitCmnLcLst */
685 * @brief Handler for Initializing the common logical channel list of the cell.
689 * Function : rgDBMFreeCmnLcLst
691 * Initializes following common logical channels belonging to the cell.
696 * @param[in] RgCellCb *cellCb
700 PUBLIC Void rgDBMFreeCmnLcLst
705 PUBLIC Void rgDBMFreeCmnLcLst(cellCb)
711 TRC2(rgDBMFreeCmnLcLst);
713 cellCb->bcchBchInfo.lcId = RG_INVALID_LC_ID;
714 cellCb->pcchInfo.lcId = RG_INVALID_LC_ID;
716 for (idx = 0; idx < cellCb->numBcchDlschInfo; idx++)
718 cellCb->bcchDlschInfo[idx].lcId = RG_INVALID_LC_ID;
719 RG_FREE_MSG(cellCb->bcchDlschInfo[idx].tb);
721 cellCb->numBcchDlschInfo = 0;
723 /* Stack Crash problem for TRACE5 Changes. Added the return below */
725 } /* rgDBMFreeCmnLcLst */
728 * @brief Handler for inserting dedicated DL logical channel.
732 * Function : rgDBMInsDlDedLcCb
734 * @param[in] RgUeCb *ueCb
735 * @param[in] RgDlLcCb* dlLcCb
739 PUBLIC Void rgDBMInsDlDedLcCb
745 PUBLIC Void rgDBMInsDlDedLcCb(ueCb, idx)
750 TRC2(rgDBMInsDlDedLcCb);
751 if( idx >= RG_DEDLC_MIN_LCID )
753 ueCb->dl.lcCb[idx-1].lcId = idx;
755 /* Stack Crash problem for TRACE5 Changes. Added the return below */
757 } /* rgDBMInsDlDedLcCb */
760 * @brief Handler for deleting dedicated DL logical channel.
764 * Function : rgDBMDelDlDedLcCb
766 * @param[in] RgUeCb *ueCb
767 * @param[in] RgDlLcCb* dlLcCb
771 PUBLIC Void rgDBMDelDlDedLcCb
777 PUBLIC Void rgDBMDelDlDedLcCb(ueCb, dlLcCb)
782 TRC2(rgDBMDelDlDedLcCb);
784 ueCb->dl.lcCb[dlLcCb->lcId - 1].lcId = RG_INVALID_LC_ID;
786 /* Stack Crash problem for TRACE5 Changes. Added the return below */
789 } /* rgDBMDelDlDedLcCb */
792 * @brief Handler for accessing the existing DL dedicated lcCb at idx in the
793 * lcCbLst of the ueCb.
797 * Function : rgDBMGetDlDedLcCb
804 PUBLIC RgDlLcCb* rgDBMGetDlDedLcCb
810 PUBLIC RgDlLcCb* rgDBMGetDlDedLcCb(ueCb, idx)
815 TRC2(rgDBMGetDlDedLcCb);
817 if (idx > RG_DEDLC_MAX_LCID || idx <= 0)
821 if(ueCb->dl.lcCb[idx-1].lcId == RG_INVALID_LC_ID)
826 RETVALUE(&ueCb->dl.lcCb[idx-1]);
828 } /* rgDBMGetDlDedLcCb */
831 * @brief Handler for inserting dedicated UL logical channel.
835 * Function : rgDBMInsUlDedLcCb
838 * @param[in] RgUeCb *ueCb
839 * @param[in] CmLteLcId idx
840 * @param[in] LteLcgId gId
845 PUBLIC Void rgDBMInsUlDedLcCb
853 PUBLIC Void rgDBMInsUlDedLcCb(ueCb, idx, gId, qci)
861 PUBLIC Void rgDBMInsUlDedLcCb
868 PUBLIC Void rgDBMInsUlDedLcCb(ueCb, idx, gId)
875 TRC2(rgDBMInsUlDedLcCb);
876 if ( idx >= RG_DEDLC_MIN_LCID)
878 ueCb->ul.lcCb[idx - 1].lcId = idx;
879 ueCb->ul.lcCb[idx - 1].lcgId = gId;
881 ueCb->ul.lcCb[idx - 1].qci = qci;
884 if(ueCb->ul.lcgArr[gId].lcgId == RG_INVALID_LCG_ID)
886 ueCb->ul.lcgArr[gId].lcgId = gId;
888 ueCb->ul.lcgArr[gId].lcCount = ueCb->ul.lcgArr[gId].lcCount + 1;
891 /* Stack Crash problem for TRACE5 Changes. Added the return below */
894 } /* rgDBMInsUlDedLcCb */
897 * @brief Handler for deleting the dedicated UL logical channel.
901 * Function : rgDBMUpdUlDedLcCb
904 * @param[in] RgUeCb *ueCb
905 * @param[in] RgUlLcCb* ulLcCb
906 * @param[in] LteLcgId gId
910 PUBLIC Void rgDBMUpdUlDedLcCb
917 PUBLIC Void rgDBMUpdUlDedLcCb(ueCb, ulLcCb, gId)
923 TRC2(rgDBMUpdUlDedLcCb);
925 ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount =
926 ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount - 1;
927 if(ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount == 0)
929 ueCb->ul.lcgArr[ulLcCb->lcgId].lcgId = RG_INVALID_LCG_ID;
931 ueCb->ul.lcCb[ulLcCb->lcId - 1].lcgId = gId;
933 if(ueCb->ul.lcgArr[gId].lcgId == RG_INVALID_LCG_ID)
935 ueCb->ul.lcgArr[gId].lcgId = gId;
937 ueCb->ul.lcgArr[gId].lcCount = ueCb->ul.lcgArr[gId].lcCount + 1;
939 /* Stack Crash problem for TRACE5 Changes. Added the return below */
941 } /* rgDBMUpdUlDedLcCb */
944 * @brief Handler for updating the dedicated UL logical channel.
948 * Function : rgDBMDelUlDedLcCb
951 * @param[in] RgUeCb *ueCb
952 * @param[in] RgUlLcCb* ulLcCb
956 PUBLIC Void rgDBMDelUlDedLcCb
962 PUBLIC Void rgDBMDelUlDedLcCb(ueCb, ulLcCb)
967 TRC2(rgDBMDelUlDedLcCb);
969 ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount =
970 ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount - 1;
971 if(ueCb->ul.lcgArr[ulLcCb->lcgId].lcCount == 0)
973 ueCb->ul.lcgArr[ulLcCb->lcgId].lcgId = RG_INVALID_LCG_ID;
975 ueCb->ul.lcCb[ulLcCb->lcId - 1].lcgId = RG_INVALID_LCG_ID;
976 ueCb->ul.lcCb[ulLcCb->lcId - 1].lcId = RG_INVALID_LC_ID;
978 /* Stack Crash problem for TRACE5 Changes. Added the return below */
980 } /* rgDBMDelUlDedLcCb */
983 * @brief Handler for accessing the existing UL dedicated lcCb at idx in the
984 * lcCbLst of the ueCb.
988 * Function : rgDBMGetUlDedLcCb
996 PUBLIC RgUlLcCb* rgDBMGetUlDedLcCb
1002 PUBLIC RgUlLcCb* rgDBMGetUlDedLcCb(ueCb, idx)
1007 TRC2(rgDBMGetUlDedLcCb)
1009 if (idx > RG_DEDLC_MAX_LCID || idx < RG_DEDLC_MIN_LCID)
1013 if(ueCb->ul.lcCb[idx-1].lcId == RG_INVALID_LC_ID)
1018 RETVALUE(&ueCb->ul.lcCb[idx-1]);
1019 } /* rgDBMGetDlDedLcCb */
1022 * @brief Handler for accessing the existing DL common lcCb identified by the key lcId
1023 * in the lcCbLst of the ueCb.
1027 * Function : rgDBMChkCmnLcCb
1030 * @param[in] *cellCb
1037 PUBLIC S16 rgDBMChkCmnLcCb
1043 PUBLIC S16 rgDBMChkCmnLcCb(cellCb, lcId)
1050 TRC2(rgDBMChkCmnLcCb)
1052 if(cellCb->bcchBchInfo.lcId == lcId)
1056 if(cellCb->pcchInfo.lcId == lcId)
1061 for (idx = 0; idx < cellCb->numBcchDlschInfo; idx++)
1063 if(cellCb->bcchDlschInfo[idx].lcId == lcId)
1069 } /* rgDBMChkCmnLcCb */
1072 * @brief Handler for accessing the existing BCCH mapped on to BCH in the
1073 * lcCbLst of the ueCb.
1077 * Function : rgDBMGetBcchOnBch
1080 * @param[in] *cellCb
1081 * @return RgBcchBchLcCb*
1084 PUBLIC RgBcchBchLcCb* rgDBMGetBcchOnBch
1089 PUBLIC RgBcchBchLcCb* rgDBMGetBcchOnBch(cellCb)
1093 TRC2(rgDBMGetBcchOnBch)
1095 if(cellCb->bcchBchInfo.lcId != RG_INVALID_LC_ID)
1097 RETVALUE(&(cellCb->bcchBchInfo));
1100 } /* rgDBMGetBcchOnBch */
1103 * @brief Handler for accessing the existing BCCH mapped on to DLSCH in the
1104 * lcCbLst of the ueCb.
1108 * Function : rgDBMGetBcchOnDlsch
1111 * @param[in] *cellCb
1113 * @return RgBcchDlschLcCb*
1116 PUBLIC RgBcchDlschLcCb* rgDBMGetBcchOnDlsch
1122 PUBLIC RgBcchDlschLcCb* rgDBMGetBcchOnDlsch(cellCb,lcId)
1129 TRC2(rgDBMGetBcchOnDlsch)
1131 for (idx = 0; idx < RG_MAX_BCCH_DLSCH; idx++)
1133 if(cellCb->bcchDlschInfo[idx].lcId == lcId)
1135 RETVALUE(&(cellCb->bcchDlschInfo[idx]));
1139 } /* rgDBMGetBcchOnDlsch */
1142 * @brief Handler for accessing the existing PCCH in the lcCbLst of the ueCb.
1146 * Function : rgDBMGetPcch
1149 * @param[in] *cellCb
1150 * @return RgPcchLcCb*
1153 PUBLIC RgPcchLcCb* rgDBMGetPcch
1158 PUBLIC RgPcchLcCb* rgDBMGetPcch(cellCb)
1164 if(cellCb->pcchInfo.lcId != RG_INVALID_LC_ID)
1166 RETVALUE(&(cellCb->pcchInfo));
1169 } /* rgDBMGetPcch */
1172 * @brief Handler for inserting the BCCH mapped on to BCH in the
1173 * lcCbLst of the ueCb.
1177 * Function : rgDBMInsBcchOnBch
1180 * @param[in] *cellCb
1184 PUBLIC Void rgDBMInsBcchOnBch
1190 PUBLIC Void rgDBMInsBcchOnBch(cellCb, idx)
1195 TRC2(rgDBMInsBcchOnBch)
1197 cellCb->bcchBchInfo.lcId = idx;
1199 /* Stack Crash problem for TRACE5 Changes. Added the return below */
1201 } /* rgDBMInsBcchOnBch */
1204 * @brief Handler for inserting the BCCH mapped on to DLSCH in the
1205 * lcCbLst of the ueCb.
1209 * Function : rgDBMInsBcchOnDlsch
1212 * @param[in] *cellCb
1216 PUBLIC Void rgDBMInsBcchOnDlsch
1222 PUBLIC Void rgDBMInsBcchOnDlsch(cellCb, idx)
1227 TRC2(rgDBMInsBcchOnDlsch)
1229 cellCb->bcchDlschInfo[cellCb->numBcchDlschInfo].lcId = idx;
1230 cellCb->numBcchDlschInfo++;
1232 /* Stack Crash problem for TRACE5 Changes. Added the return below */
1234 } /* rgDBMInsBcchOnDlsch */
1238 * @brief Handler for inserting the PCCH in the lcCbLst of the ueCb.
1242 * Function : rgDBMInsPcch
1245 * @param[in] *cellCb
1249 PUBLIC Void rgDBMInsPcch
1255 PUBLIC Void rgDBMInsPcch(cellCb, idx)
1262 cellCb->pcchInfo.lcId = idx;
1264 /* Stack Crash problem for TRACE5 Changes. Added the return below */
1266 } /* rgDBMInsPcch */
1269 * @brief Handler for initializing the rachLst
1273 * Function : rgDBMInitRachLst
1276 * @param[in] *cellCb
1280 PRIVATE Void rgDBMInitRachLst
1285 PRIVATE Void rgDBMInitRachLst(cellCb)
1289 TRC2(rgDBMInitRachLst)
1291 cmLListInit(&cellCb->raInfo.ueRachLst);
1293 } /* rgDBMInitRachLst */
1296 * @brief Handler for inserting the ueCb in the rachLst.
1300 * Function : rgDBMInsUeCbInRachLst
1303 * @param[in] *cellCb
1308 PUBLIC Void rgDBMInsUeCbInRachLst
1314 PUBLIC Void rgDBMInsUeCbInRachLst(cellCb, ueCb)
1319 TRC2(rgDBMInsUeCbInRachLst)
1321 cmLListAdd2Tail(&cellCb->raInfo.ueRachLst,&ueCb->rachLstEnt);
1324 } /* rgDBMInsUeCbInRachLst */
1327 * @brief Handler for accessing the existing raCb in the rachLst.
1331 * Function : rgDBMGetUeCbFromRachLst
1334 * @param[in] *cellCb
1339 PUBLIC RgUeCb* rgDBMGetUeCbFromRachLst
1345 PUBLIC RgUeCb* rgDBMGetUeCbFromRachLst(cellCb, key)
1352 TRC2(rgDBMGetUeCbFromRachLst)
1354 CM_LLIST_FIRST_NODE(&cellCb->raInfo.ueRachLst,tmpNode);
1357 if(((RgUeCb *)tmpNode->node)->ueId == key)
1359 RETVALUE((RgUeCb *)(tmpNode->node));
1361 CM_LLIST_NEXT_NODE(&cellCb->raInfo.ueRachLst,tmpNode);
1364 } /* rgDBMGetUeCbFromRachLst */
1367 * @brief Handler for accessing the existing ueCb from rachLst.
1371 * Function : rgDBMGetNextUeCbFromRachLst
1374 * @param[in] *cellCb
1379 PUBLIC RgUeCb* rgDBMGetNextUeCbFromRachLst
1385 PUBLIC RgUeCb* rgDBMGetNextUeCbFromRachLst(cellCb, ueCb)
1390 TRC2(rgDBMGetNextUeCbFromRachLst)
1394 RETVALUE( cellCb->raInfo.ueRachLst.first ?
1395 (RgUeCb *)(cellCb->raInfo.ueRachLst.first->node) : NULLP );
1397 RETVALUE( ueCb->rachLstEnt.next ?
1398 (RgUeCb *)(ueCb->rachLstEnt.next->node) : NULLP );
1399 } /* rgDBMGetNextUeCbFromRachLst */
1402 * @brief Handler for deleting the existing ueCb in the rachLst.
1406 * Function : rgDBMDelUeCbFromRachLst
1409 * @param[in] *cellCb
1414 PUBLIC Void rgDBMDelUeCbFromRachLst
1420 PUBLIC Void rgDBMDelUeCbFromRachLst(cellCb, ueCb)
1425 TRC2(rgDBMDelUeCbFromRachLst)
1427 cmLListDelFrm(&cellCb->raInfo.ueRachLst, &ueCb->rachLstEnt);
1429 } /* rgDBMDelUeCbFromRachLst */
1431 /**********************************************************************
1434 **********************************************************************/