- KW_SEND_SAPID_ALARM(tKwCb, suId, event, cause);
-
- RETVALUE(ROK);
-} /* KwLiRguBndCfm */
-
-/**
- * @brief Handler to process PDU received from MAC
- *
- * @details
- * This function receives the PDU from MAC.
- * seggregates common and dedicated logical channel
- * PDU and call respective handler.
- *
- * @param[in] pst Post structure
- * @param[in] suId Service User ID
- * @param[in] datInd Data Indication Information
- *
- * @return S16
- * -# ROK
- * -# RFAILED
- *
-*/
-
-PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData)
-{
- U8 idx;
- U8 lcId; /* Logical Channel */
- U8 numDLch = 0; /* Number of dedicated logical channel */
- Bool dLchPduPres; /* PDU received on dedicated logical channel */
- RguLchDatInd dLchData[RGU_MAX_LC]; /* PDU info on dedicated logical channel */
- RguDDatIndInfo *dLchUlDat; /* UL data on dedicated logical channel */
- RguCDatIndInfo *cLchUlDat; /* UL data on common logical channel */
-
- /* Initializing dedicated logical channel Database */
- for(idx = 0; idx < RGU_MAX_LC; idx++)
- {
- dLchData[idx].lcId = idx;
- dLchData[idx].pdu.numPdu = 0;
- }
-
- dLchPduPres = FALSE;
-
- /* Seggregate PDUs received on common and dedicated channels
- * and call common channel's handler */
- for(idx = 0; idx< ulData->nmbPdu; idx++)
- {
- if(ulData->pduInfo[idx].commCh)
- {
- KW_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchUlDat, sizeof(RguCDatIndInfo));
- cmMemset((U8*)cLchUlDat, (U8)0, sizeof(RguCDatIndInfo));
-
- cLchUlDat->cellId = ulData->cellId;
- cLchUlDat->rnti = ulData->rnti;
- cLchUlDat->lcId = ulData->pduInfo[idx].lcId;
- cLchUlDat->pdu = ulData->pduInfo[idx].pduBuf;
-
- KwLiRguCDatInd(pst, suId, cLchUlDat);
- }
- else
- {
- if(!dLchPduPres)
- {
- KW_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo));
- dLchPduPres = TRUE;
- }
-
- lcId = ulData->pduInfo[idx].lcId;
- dLchData[lcId].pdu.mBuf[dLchData[lcId].pdu.numPdu] = ulData->pduInfo[idx].pduBuf;
- dLchData[lcId].pdu.numPdu++;
- }
- }
-
- /* If any PDU received on dedicated logical channel, copy into RguDDatIndInfo
- * and call its handler */
- if(dLchPduPres)
- {
- dLchUlDat->cellId = ulData->cellId;
- dLchUlDat->rnti = ulData->rnti;
-
- for(idx = 0; idx < RGU_MAX_LC; idx++)
- {
- if(dLchData[idx].pdu.numPdu)
- {
- cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd));
- numDLch++;
- }
- }
- dLchUlDat->numLch = numDLch;
- KwLiRguDDatInd(pst, suId, dLchUlDat);
- }
-