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 *******************************************************************************/
20 /************************************************************************
26 Desc: C source code for pack/unpack of CRG interface primitives.
30 **********************************************************************/
33 @brief This file contains the packing/unpacking code for the CRG interface
36 /* header include files (.h) */
37 #include "common_def.h"
38 #include "crg.h" /* CRG Interface defines */
40 /* header/extern include files (.x) */
41 #include "crg.x" /* CRG Interface includes */
46 * @brief Request from RRC to MAC to bind the interface saps
50 * Function : cmPkCrgBndReq
53 * @param[in] SuId suId
54 * @param[in] SpId spId
59 PUBLIC S16 cmPkCrgBndReq
66 PUBLIC S16 cmPkCrgBndReq(pst, suId, spId)
75 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
76 #if (ERRCLASS & ERRCLS_ADD_RES)
77 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
78 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
79 (ErrVal)ECRG001, (ErrVal)0, "Packing failed");
83 if (SPkS16(spId, mBuf) != ROK) {
84 #if (ERRCLASS & ERRCLS_ADD_RES)
85 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
86 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
87 (ErrVal)ECRG002, (ErrVal)0, "Packing failed");
92 if (SPkS16(suId, mBuf) != ROK) {
93 #if (ERRCLASS & ERRCLS_ADD_RES)
94 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
95 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
96 (ErrVal)ECRG003, (ErrVal)0, "Packing failed");
101 pst->event = (Event) EVTCRGBNDREQ;
102 RETVALUE(SPstTsk(pst,mBuf));
107 * @brief Request from RRC to MAC to bind the interface saps
111 * Function : cmUnpkCrgBndReq
113 * @param[in] Pst* pst
114 * @param[in] SuId suId
115 * @param[in] SpId spId
120 PUBLIC S16 cmUnpkCrgBndReq
127 PUBLIC S16 cmUnpkCrgBndReq(func, pst, mBuf)
136 TRC3(cmUnpkCrgBndReq)
138 if (SUnpkS16(&suId, mBuf) != ROK) {
140 #if (ERRCLASS & ERRCLS_ADD_RES)
141 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
142 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
143 (ErrVal)ECRG004, (ErrVal)0, "Packing failed");
147 if (SUnpkS16(&spId, mBuf) != ROK) {
149 #if (ERRCLASS & ERRCLS_ADD_RES)
150 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
151 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
152 (ErrVal)ECRG005, (ErrVal)0, "Packing failed");
157 RETVALUE((*func)(pst, suId, spId));
162 * @brief Confirmation from MAC to RRC for the bind/Unbind
163 * request for the interface saps
167 * Function : cmPkCrgBndCfm
169 * @param[in] Pst* pst
170 * @param[in] SuId suId
171 * @param[in] U8 status
176 PUBLIC S16 cmPkCrgBndCfm
183 PUBLIC S16 cmPkCrgBndCfm(pst, suId, status)
189 Buffer *mBuf = NULLP;
192 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
193 #if (ERRCLASS & ERRCLS_ADD_RES)
194 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
195 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
196 (ErrVal)ECRG006, (ErrVal)0, "Packing failed");
200 if (SPkU8(status, mBuf) != ROK) {
201 #if (ERRCLASS & ERRCLS_ADD_RES)
202 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
203 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
204 (ErrVal)ECRG007, (ErrVal)0, "Packing failed");
209 if (SPkS16(suId, mBuf) != ROK) {
210 #if (ERRCLASS & ERRCLS_ADD_RES)
211 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
212 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
213 (ErrVal)ECRG008, (ErrVal)0, "Packing failed");
218 pst->event = (Event) EVTCRGBNDCFM;
219 RETVALUE(SPstTsk(pst,mBuf));
224 * @brief Confirmation from MAC to RRC for the bind/Unbind
225 * request for the interface saps
229 * Function : cmUnpkCrgBndCfm
231 * @param[in] Pst* pst
232 * @param[in] SuId suId
233 * @param[in] U8 status
238 PUBLIC S16 cmUnpkCrgBndCfm
245 PUBLIC S16 cmUnpkCrgBndCfm(func, pst, mBuf)
254 TRC3(cmUnpkCrgBndCfm)
256 if (SUnpkS16(&suId, mBuf) != ROK) {
258 #if (ERRCLASS & ERRCLS_ADD_RES)
259 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
260 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
261 (ErrVal)ECRG009, (ErrVal)0, "Packing failed");
265 if (SUnpkU8(&status, mBuf) != ROK) {
267 #if (ERRCLASS & ERRCLS_ADD_RES)
268 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
269 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
270 (ErrVal)ECRG010, (ErrVal)0, "Packing failed");
275 RETVALUE((*func)(pst, suId, status));
280 * @brief Request from RRC to MAC to Unbind the interface saps
284 * Function : cmPkCrgUbndReq
286 * @param[in] Pst* pst
287 * @param[in] SpId spId
288 * @param[in] Reason reason
293 PUBLIC S16 cmPkCrgUbndReq
300 PUBLIC S16 cmPkCrgUbndReq(pst, spId, reason)
306 Buffer *mBuf = NULLP;
309 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
310 #if (ERRCLASS & ERRCLS_ADD_RES)
311 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
312 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
313 (ErrVal)ECRG011, (ErrVal)0, "Packing failed");
317 if (SPkS16(reason, mBuf) != ROK) {
318 #if (ERRCLASS & ERRCLS_ADD_RES)
319 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
320 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
321 (ErrVal)ECRG012, (ErrVal)0, "Packing failed");
326 if (SPkS16(spId, mBuf) != ROK) {
327 #if (ERRCLASS & ERRCLS_ADD_RES)
328 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
329 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
330 (ErrVal)ECRG013, (ErrVal)0, "Packing failed");
335 pst->event = (Event) EVTCRGUBNDREQ;
336 RETVALUE(SPstTsk(pst,mBuf));
341 * @brief Request from RRC to MAC to Unbind the interface saps
345 * Function : cmUnpkCrgUbndReq
347 * @param[in] Pst* pst
348 * @param[in] SpId spId
349 * @param[in] Reason reason
354 PUBLIC S16 cmUnpkCrgUbndReq
361 PUBLIC S16 cmUnpkCrgUbndReq(func, pst, mBuf)
370 TRC3(cmUnpkCrgUbndReq)
372 if (SUnpkS16(&spId, mBuf) != ROK) {
374 #if (ERRCLASS & ERRCLS_ADD_RES)
375 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
376 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
377 (ErrVal)ECRG014, (ErrVal)0, "Packing failed");
381 if (SUnpkS16(&reason, mBuf) != ROK) {
383 #if (ERRCLASS & ERRCLS_ADD_RES)
384 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
385 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
386 (ErrVal)ECRG015, (ErrVal)0, "Packing failed");
391 RETVALUE((*func)(pst, spId, reason));
396 * @brief Configuration Request from RRC to MAC for
397 * configuring Cell/Ue/Lc
401 * Function : cmPkCrgCfgReq
403 * @param[in] Pst* pst
404 * @param[in] SpId spId
405 * @param[in] CrgCfgTransId transId
406 * @param[in] CrgCfgReqInfo * cfgReqInfo
411 PUBLIC S16 cmPkCrgCfgReq
415 CrgCfgTransId transId,
416 CrgCfgReqInfo * cfgReqInfo
419 PUBLIC S16 cmPkCrgCfgReq(pst, spId, transId, cfgReqInfo)
422 CrgCfgTransId transId;
423 CrgCfgReqInfo * cfgReqInfo;
426 Buffer *mBuf = NULLP;
429 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
430 #if (ERRCLASS & ERRCLS_ADD_RES)
431 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
432 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
433 (ErrVal)ECRG016, (ErrVal)0, "Packing failed");
435 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
438 if (cmPkCrgCfgReqInfo(cfgReqInfo, mBuf) != ROK) {
439 #if (ERRCLASS & ERRCLS_ADD_RES)
440 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
441 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
442 (ErrVal)ECRG017, (ErrVal)0, "Packing failed");
444 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
448 /* crg_c_001.main_5: MOD - Updating ERR code */
449 if (cmPkCrgCfgTransId(&transId, mBuf) != ROK) {
450 #if (ERRCLASS & ERRCLS_ADD_RES)
451 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
452 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
453 (ErrVal)ECRG018, (ErrVal)0, "Packing failed");
455 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
459 if (SPkS16(spId, mBuf) != ROK) {
460 #if (ERRCLASS & ERRCLS_ADD_RES)
461 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
462 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
463 (ErrVal)ECRG019, (ErrVal)0, "Packing failed");
465 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
469 if (SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo)) != ROK) {
470 #if (ERRCLASS & ERRCLS_ADD_RES)
471 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
472 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
473 (ErrVal)ECRG020, (ErrVal)0, "Packing failed");
478 pst->event = (Event) EVTCRGCFGREQ;
479 RETVALUE(SPstTsk(pst,mBuf));
484 * @brief Configuration Request from RRC to MAC for
485 * configuring Cell/Ue/Lc
489 * Function : cmUnpkCrgCfgReq
491 * @param[in] Pst* pst
492 * @param[in] SpId spId
493 * @param[in] CrgCfgTransId transId
494 * @param[in] CrgCfgReqInfo * cfgReqInfo
499 PUBLIC S16 cmUnpkCrgCfgReq
506 PUBLIC S16 cmUnpkCrgCfgReq(func, pst, mBuf)
513 CrgCfgTransId transId;
514 CrgCfgReqInfo *cfgReqInfo;
516 TRC3(cmUnpkCrgCfgReq)
518 if (SUnpkS16(&spId, mBuf) != ROK) {
520 #if (ERRCLASS & ERRCLS_ADD_RES)
521 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
522 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
523 (ErrVal)ECRG021, (ErrVal)0, "Packing failed");
527 if (cmUnpkCrgCfgTransId(&transId, mBuf) != ROK) {
529 #if (ERRCLASS & ERRCLS_ADD_RES)
530 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
531 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
532 (ErrVal)ECRG022, (ErrVal)0, "Packing failed");
536 if ((SGetSBuf(pst->region, pst->pool, (Data **)&cfgReqInfo, sizeof(CrgCfgReqInfo))) != ROK) {
537 #if (ERRCLASS & ERRCLS_ADD_RES)
538 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
539 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
540 (ErrVal)ECRG023, (ErrVal)0, "Packing failed");
546 if (cmUnpkCrgCfgReqInfo(cfgReqInfo, mBuf) != ROK) {
547 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
549 #if (ERRCLASS & ERRCLS_ADD_RES)
550 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
551 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
552 (ErrVal)ECRG024, (ErrVal)0, "Packing failed");
557 RETVALUE((*func)(pst, spId, transId, cfgReqInfo));
562 * @brief Configuration Confirm from MAC to RRC
566 * Function : cmPkCrgCfgCfm
568 * @param[in] Pst* pst
569 * @param[in] SuId suId
570 * @param[in] CrgCfgTransId transId
571 * @param[in] U8 status
576 PUBLIC S16 cmPkCrgCfgCfm
580 CrgCfgTransId transId,
584 PUBLIC S16 cmPkCrgCfgCfm(pst, suId, transId, status)
587 CrgCfgTransId transId;
591 Buffer *mBuf = NULLP;
594 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
595 #if (ERRCLASS & ERRCLS_ADD_RES)
596 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
597 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
598 (ErrVal)ECRG025, (ErrVal)0, "Packing failed");
602 /* crg_c_001.main_5 - ADD - Added the packing for status. */
603 if (SPkU8(status, mBuf) != ROK) {
604 #if (ERRCLASS & ERRCLS_ADD_RES)
605 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
606 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
607 (ErrVal)ECRG026, (ErrVal)0, "Packing failed");
612 if (cmPkCrgCfgTransId(&transId, mBuf) != ROK) {
613 #if (ERRCLASS & ERRCLS_ADD_RES)
614 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
615 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
616 (ErrVal)ECRG027, (ErrVal)0, "Packing failed");
621 if (SPkS16(suId, mBuf) != ROK) {
622 #if (ERRCLASS & ERRCLS_ADD_RES)
623 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
624 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
625 (ErrVal)ECRG028, (ErrVal)0, "Packing failed");
630 pst->event = (Event) EVTCRGCFGCFM;
631 RETVALUE(SPstTsk(pst,mBuf));
636 * @brief Configuration Confirm from MAC to RRC
640 * Function : cmUnpkCrgCfgCfm
642 * @param[in] Pst* pst
643 * @param[in] SuId suId
644 * @param[in] CrgCfgTransId transId
645 * @param[in] U8 status
650 PUBLIC S16 cmUnpkCrgCfgCfm
657 PUBLIC S16 cmUnpkCrgCfgCfm(func, pst, mBuf)
664 CrgCfgTransId transId;
667 TRC3(cmUnpkCrgCfgCfm)
669 if (SUnpkS16(&suId, mBuf) != ROK) {
671 #if (ERRCLASS & ERRCLS_ADD_RES)
672 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
673 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
674 (ErrVal)ECRG029, (ErrVal)0, "Packing failed");
678 if (cmUnpkCrgCfgTransId(&transId, mBuf) != ROK) {
680 #if (ERRCLASS & ERRCLS_ADD_RES)
681 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
682 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
683 (ErrVal)ECRG030, (ErrVal)0, "Packing failed");
687 if (SUnpkU8(&status, mBuf) != ROK) {
689 #if (ERRCLASS & ERRCLS_ADD_RES)
690 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
691 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
692 (ErrVal)ECRG031, (ErrVal)0, "Packing failed");
697 RETVALUE((*func)(pst, suId, transId, status));
701 /***********************************************************
703 * Func : cmPkCrgCfgTransId
706 * Desc : Transaction ID between MAC and RRC
715 **********************************************************/
717 PUBLIC S16 cmPkCrgCfgTransId
719 CrgCfgTransId *param,
723 PUBLIC S16 cmPkCrgCfgTransId(param, mBuf)
724 CrgCfgTransId *param;
730 TRC3(cmPkCrgCfgTransId)
732 for (i=CRG_CFG_TRANSID_SIZE-1; i >= 0; i--) {
733 CMCHKPK(SPkU8, param->trans[i], mBuf);
740 /***********************************************************
742 * Func : cmUnpkCrgCfgTransId
745 * Desc : Transaction ID between MAC and RRC
754 **********************************************************/
756 PUBLIC S16 cmUnpkCrgCfgTransId
758 CrgCfgTransId *param,
762 PUBLIC S16 cmUnpkCrgCfgTransId(param, mBuf)
763 CrgCfgTransId *param;
769 TRC3(cmUnpkCrgCfgTransId)
771 for (i=0; i<CRG_CFG_TRANSID_SIZE; i++) {
772 CMCHKUNPK(SUnpkU8, ¶m->trans[i], mBuf);
779 /***********************************************************
781 * Func : cmPkCrgBwCfg
784 * Desc : Bandwidth configuration per cell
793 **********************************************************/
795 PUBLIC S16 cmPkCrgBwCfg
801 PUBLIC S16 cmPkCrgBwCfg(param, mBuf)
809 CMCHKPK(SPkU8, param->ulTotalBw, mBuf);
810 CMCHKPK(SPkU8, param->dlTotalBw, mBuf);
816 /***********************************************************
818 * Func : cmUnpkCrgBwCfg
821 * Desc : Bandwidth configuration per cell
830 **********************************************************/
832 PUBLIC S16 cmUnpkCrgBwCfg
838 PUBLIC S16 cmUnpkCrgBwCfg(param, mBuf)
846 CMCHKUNPK(SUnpkU8, ¶m->dlTotalBw, mBuf);
847 CMCHKUNPK(SUnpkU8, ¶m->ulTotalBw, mBuf);
853 /***********************************************************
855 * Func : cmPkCrgRachCfg
858 * Desc : RACH configuration per cell
867 **********************************************************/
869 PUBLIC S16 cmPkCrgRachCfg
875 PUBLIC S16 cmPkCrgRachCfg(param, mBuf)
883 CMCHKPK(SPkU8, param->maxMsg3Tx, mBuf);
889 /***********************************************************
891 * Func : cmUnpkCrgRachCfg
894 * Desc : RACH configuration per cell
903 **********************************************************/
905 PUBLIC S16 cmUnpkCrgRachCfg
911 PUBLIC S16 cmUnpkCrgRachCfg(param, mBuf)
917 TRC3(cmUnpkCrgRachCfg)
919 CMCHKUNPK(SUnpkU8, ¶m->maxMsg3Tx, mBuf);
925 /***********************************************************
927 * Func : cmPkCrgCellCfg
930 * Desc : Cell configuration
939 **********************************************************/
941 PUBLIC S16 cmPkCrgCellCfg
947 PUBLIC S16 cmPkCrgCellCfg(param, mBuf)
956 CMCHKPK(SPkU8, param->emtcEnable, mBuf);
958 #ifdef TENB_MULT_CELL_SUPPRT
959 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
960 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
962 CMCHKPK(cmPkCrgBwCfg, ¶m->bwCfg, mBuf);
963 CMCHKPK(cmPkCrgRachCfg, ¶m->rachCfg, mBuf);
964 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
970 /***********************************************************
972 * Func : cmUnpkCrgCellCfg
975 * Desc : Cell configuration
984 **********************************************************/
986 PUBLIC S16 cmUnpkCrgCellCfg
992 PUBLIC S16 cmUnpkCrgCellCfg(param, mBuf)
998 TRC3(cmUnpkCrgCellCfg)
1000 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1001 CMCHKUNPK(cmUnpkCrgRachCfg, ¶m->rachCfg, mBuf);
1002 CMCHKUNPK(cmUnpkCrgBwCfg, ¶m->bwCfg, mBuf);
1003 #ifdef TENB_MULT_CELL_SUPPRT
1004 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
1005 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
1008 CMCHKUNPK(SUnpkU8, ¶m->emtcEnable, mBuf);
1015 /***********************************************************
1017 * Func : cmPkCrgUeUlHqCfg
1020 * Desc : Uplink HARQ configuration per UE
1029 **********************************************************/
1031 PUBLIC S16 cmPkCrgUeUlHqCfg
1033 CrgUeUlHqCfg *param,
1037 PUBLIC S16 cmPkCrgUeUlHqCfg(param, mBuf)
1038 CrgUeUlHqCfg *param;
1043 TRC3(cmPkCrgUeUlHqCfg)
1045 CMCHKPK(SPkU8, param->maxUlHqTx, mBuf);
1050 /***********************************************************
1052 * Func : cmPkCrgUeSCellCfg
1055 * Desc : Secondary Cell information of the UE
1064 **********************************************************/
1066 PRIVATE S16 cmPkCrgUeSCellCfg
1068 CrgUeSCellInfo *param,
1072 PRIVATE S16 cmPkCrgUeSCellCfg(param, mBuf)
1073 CrgUeSCellInfo *param;
1077 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
1078 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
1079 CMCHKPK(SPkU8, param->macInst, mBuf);
1080 CMCHKPK(SPkU16, param->sCellId, mBuf);
1084 /***********************************************************
1086 * Func : cmUnpkCrgUeSCellCfg
1089 * Desc : Secondary Cell information of the UE
1098 **********************************************************/
1100 PRIVATE S16 cmUnpkCrgUeSCellCfg
1102 CrgUeSCellInfo *param,
1106 PRIVATE S16 cmUnpkCrgUeSCellCfg(param, mBuf)
1107 CrgUeSCellInfo *param;
1111 CMCHKUNPK(SUnpkU16, ¶m->sCellId, mBuf);
1112 CMCHKUNPK(SUnpkU8, ¶m->macInst, mBuf);
1113 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
1114 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
1117 /***********************************************************
1119 * Func : cmPkCrgUeSecCellInfo
1122 * Desc : Secondary Cell information of the UE
1131 **********************************************************/
1133 PUBLIC S16 cmPkCrgUeSecCellInfo
1135 CrgUeSecCellInfo *param,
1139 PUBLIC S16 cmPkCrgUeSecCellInfo(param, mBuf)
1140 CrgUeSecCellInfo *param;
1145 for(idx = param->numSCells - 1; idx >= 0; idx--)
1147 CMCHKPK(cmPkCrgUeSCellCfg, ¶m->ueSCellCfg[(U8)idx], mBuf);
1150 CMCHKPK(SPkU8, param->numSCells, mBuf);
1151 CMCHKPK(SPkU8, param->isSCellCfgPres, mBuf);
1156 /***********************************************************
1158 * Func : cmUnpkCrgUeSecCellInfo
1161 * Desc : Secondary Cell information of the UE
1170 **********************************************************/
1172 PUBLIC S16 cmUnpkCrgUeSecCellInfo
1174 CrgUeSecCellInfo *param,
1178 PUBLIC S16 cmUnpkCrgUeSecCellInfo(param, mBuf)
1179 CrgUeSecCellInfo *param;
1185 CMCHKUNPK(SUnpkU8, ¶m->isSCellCfgPres, mBuf);
1186 if(TRUE == param->isSCellCfgPres)
1188 CMCHKUNPK(SUnpkU8, ¶m->numSCells, mBuf);
1190 for(idx = 0; idx < param->numSCells; idx++)
1192 CMCHKUNPK(cmUnpkCrgUeSCellCfg, ¶m->ueSCellCfg[idx],mBuf);
1199 #endif /* LTE_ADV */
1202 /***********************************************************
1204 * Func : cmUnpkCrgUeUlHqCfg
1207 * Desc : Uplink HARQ configuration per UE
1216 **********************************************************/
1218 PUBLIC S16 cmUnpkCrgUeUlHqCfg
1220 CrgUeUlHqCfg *param,
1224 PUBLIC S16 cmUnpkCrgUeUlHqCfg(param, mBuf)
1225 CrgUeUlHqCfg *param;
1230 TRC3(cmUnpkCrgUeUlHqCfg)
1232 CMCHKUNPK(SUnpkU8, ¶m->maxUlHqTx, mBuf);
1238 /***********************************************************
1240 * Func : cmPkCrgUeCfg
1243 * Desc : UE configuration
1252 **********************************************************/
1254 PUBLIC S16 cmPkCrgUeCfg
1260 PUBLIC S16 cmPkCrgUeCfg(param, mBuf)
1267 #ifdef TENB_MULT_CELL_SUPPRT
1268 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
1269 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
1271 CMCHKPK(SPkU32, param->txMode.tm, mBuf);
1272 CMCHKPK(SPkU8, param->txMode.pres, mBuf);
1273 CMCHKPK(cmPkCrgUeUlHqCfg, ¶m->ueUlHqCfg, mBuf);
1274 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1275 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1281 /***********************************************************
1283 * Func : cmUnpkCrgUeCfg
1286 * Desc : UE configuration
1295 **********************************************************/
1297 PUBLIC S16 cmUnpkCrgUeCfg
1303 PUBLIC S16 cmUnpkCrgUeCfg(param, mBuf)
1310 TRC3(cmUnpkCrgUeCfg)
1312 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1313 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1314 CMCHKUNPK(cmUnpkCrgUeUlHqCfg, ¶m->ueUlHqCfg, mBuf);
1315 CMCHKUNPK(SUnpkU8, ¶m->txMode.pres, mBuf);
1316 CMCHKUNPK(SUnpkU32, (U32 *)&tmpEnum, mBuf);
1317 param->txMode.tm = (CrgTxMode) tmpEnum;
1318 #ifdef TENB_MULT_CELL_SUPPRT
1319 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
1320 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
1327 /***********************************************************
1329 * Func : cmPkCrgDlLchCfg
1332 * Desc : Logical channel configuration info for downlink logical channels
1341 **********************************************************/
1343 PUBLIC S16 cmPkCrgDlLchCfg
1349 PUBLIC S16 cmPkCrgDlLchCfg(param, mBuf)
1355 TRC3(cmPkCrgDlLchCfg)
1357 CMCHKPK(SPkU8, param->dlTrchType, mBuf);
1363 /***********************************************************
1365 * Func : cmUnpkCrgDlLchCfg
1368 * Desc : Logical channel configuration info for downlink logical channels
1377 **********************************************************/
1379 PUBLIC S16 cmUnpkCrgDlLchCfg
1385 PUBLIC S16 cmUnpkCrgDlLchCfg(param, mBuf)
1391 TRC3(cmUnpkCrgDlLchCfg)
1393 CMCHKUNPK(SUnpkU8, ¶m->dlTrchType, mBuf);
1399 /***********************************************************
1401 * Func : cmPkCrgUlLchCfg
1404 * Desc : Logical channel configuration info for uplink logical channels
1413 **********************************************************/
1415 PUBLIC S16 cmPkCrgUlLchCfg
1421 PUBLIC S16 cmPkCrgUlLchCfg(param, mBuf)
1427 TRC3(cmPkCrgUlLchCfg)
1429 CMCHKPK(SPkU8, param->lcgId, mBuf);
1430 CMCHKPK(SPkU8, param->ulTrchType, mBuf);
1436 /***********************************************************
1438 * Func : cmUnpkCrgUlLchCfg
1441 * Desc : Logical channel configuration info for uplink logical channels
1450 **********************************************************/
1452 PUBLIC S16 cmUnpkCrgUlLchCfg
1458 PUBLIC S16 cmUnpkCrgUlLchCfg(param, mBuf)
1464 TRC3(cmUnpkCrgUlLchCfg)
1466 CMCHKUNPK(SUnpkU8, ¶m->ulTrchType, mBuf);
1467 CMCHKUNPK(SUnpkU8, ¶m->lcgId, mBuf);
1473 /***********************************************************
1475 * Func : cmPkCrgLchCfg
1478 * Desc : Logical channel configuration info for common and dedicated channels
1487 **********************************************************/
1489 PUBLIC S16 cmPkCrgLchCfg
1495 PUBLIC S16 cmPkCrgLchCfg(param, mBuf)
1502 /* crg_c_001.main_5 - ADD - Added the packing for LTE_L2_MEAS. */
1504 CMCHKPK(SPkU8, param->qci, mBuf);
1506 CMCHKPK(cmPkCrgUlLchCfg, ¶m->ulInfo, mBuf);
1507 CMCHKPK(cmPkCrgDlLchCfg, ¶m->dlInfo, mBuf);
1508 CMCHKPK(SPkU8, param->dir, mBuf);
1509 CMCHKPK(cmPkLteLcType, param->lcType, mBuf);
1510 CMCHKPK(cmPkLteLcId, param->lcId, mBuf);
1511 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1512 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1518 /***********************************************************
1520 * Func : cmUnpkCrgLchCfg
1523 * Desc : Logical channel configuration info for common and dedicated channels
1532 **********************************************************/
1534 PUBLIC S16 cmUnpkCrgLchCfg
1540 PUBLIC S16 cmUnpkCrgLchCfg(param, mBuf)
1546 TRC3(cmUnpkCrgLchCfg)
1548 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1549 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1550 CMCHKUNPK(cmUnpkLteLcId, ¶m->lcId, mBuf);
1551 CMCHKUNPK(cmUnpkLteLcType, ¶m->lcType, mBuf);
1552 CMCHKUNPK(SUnpkU8, ¶m->dir, mBuf);
1553 CMCHKUNPK(cmUnpkCrgDlLchCfg, ¶m->dlInfo, mBuf);
1554 CMCHKUNPK(cmUnpkCrgUlLchCfg, ¶m->ulInfo, mBuf);
1555 /* crg_c_001.main_5 - ADD - Added the unpacking for LTE_L2_MEAS. */
1557 CMCHKUNPK(SUnpkU8, ¶m->qci, mBuf);
1564 /***********************************************************
1569 * Desc : Basic configuration info for MAC
1578 **********************************************************/
1580 PUBLIC S16 cmPkCrgCfg
1586 PUBLIC S16 cmPkCrgCfg(param, mBuf)
1594 switch(param->cfgType) {
1596 CMCHKPK(cmPkCrgLchCfg, ¶m->u.lchCfg, mBuf);
1599 CMCHKPK(cmPkCrgUeCfg, ¶m->u.ueCfg, mBuf);
1602 CMCHKPK(cmPkCrgCellCfg, ¶m->u.cellCfg, mBuf);
1607 CMCHKPK(SPkU8, param->cfgType, mBuf);
1613 /***********************************************************
1615 * Func : cmUnpkCrgCfg
1618 * Desc : Basic configuration info for MAC
1627 **********************************************************/
1629 PUBLIC S16 cmUnpkCrgCfg
1635 PUBLIC S16 cmUnpkCrgCfg(param, mBuf)
1643 CMCHKUNPK(SUnpkU8, ¶m->cfgType, mBuf);
1644 switch(param->cfgType) {
1646 CMCHKUNPK(cmUnpkCrgCellCfg, ¶m->u.cellCfg, mBuf);
1649 CMCHKUNPK(cmUnpkCrgUeCfg, ¶m->u.ueCfg, mBuf);
1652 CMCHKUNPK(cmUnpkCrgLchCfg, ¶m->u.lchCfg, mBuf);
1662 /***********************************************************
1664 * Func : cmPkCrgCellRecfg
1667 * Desc : Cell reconfiguration info
1676 **********************************************************/
1678 PUBLIC S16 cmPkCrgCellRecfg
1680 CrgCellRecfg *param,
1684 PUBLIC S16 cmPkCrgCellRecfg(param, mBuf)
1685 CrgCellRecfg *param;
1690 TRC3(cmPkCrgCellRecfg)
1692 CMCHKPK(cmPkCrgRachCfg, ¶m->rachRecfg, mBuf);
1693 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1699 /***********************************************************
1701 * Func : cmUnpkCrgCellRecfg
1704 * Desc : Cell reconfiguration info
1713 **********************************************************/
1715 PUBLIC S16 cmUnpkCrgCellRecfg
1717 CrgCellRecfg *param,
1721 PUBLIC S16 cmUnpkCrgCellRecfg(param, mBuf)
1722 CrgCellRecfg *param;
1727 TRC3(cmUnpkCrgCellRecfg)
1729 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1730 CMCHKUNPK(cmUnpkCrgRachCfg, ¶m->rachRecfg, mBuf);
1736 /***********************************************************
1738 * Func : cmPkCrgUeRecfg
1741 * Desc : UE reconfiguration info
1750 **********************************************************/
1752 PUBLIC S16 cmPkCrgUeRecfg
1758 PUBLIC S16 cmPkCrgUeRecfg(param, mBuf)
1764 TRC3(cmPkCrgUeRecfg)
1766 if(TRUE == param->crgSCellCfg.isSCellCfgPres)
1768 CMCHKPK(cmPkCrgUeSecCellInfo, ¶m->crgSCellCfg, mBuf);
1772 CMCHKPK(SPkU8, param->crgSCellCfg.isSCellCfgPres, mBuf);
1774 #endif /* LTE_ADV */
1775 CMCHKPK(SPkU32, param->txMode.tm, mBuf);
1776 CMCHKPK(SPkU8, param->txMode.pres, mBuf);
1777 CMCHKPK(cmPkCrgUeUlHqCfg, ¶m->ueUlHqRecfg, mBuf);
1778 CMCHKPK(cmPkLteRnti, param->newCrnti, mBuf);
1779 CMCHKPK(cmPkLteRnti, param->oldCrnti, mBuf);
1780 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1786 /***********************************************************
1788 * Func : cmUnpkCrgUeRecfg
1791 * Desc : UE reconfiguration info
1800 **********************************************************/
1802 PUBLIC S16 cmUnpkCrgUeRecfg
1808 PUBLIC S16 cmUnpkCrgUeRecfg(param, mBuf)
1814 TRC3(cmUnpkCrgUeRecfg)
1816 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1817 CMCHKUNPK(cmUnpkLteRnti, ¶m->oldCrnti, mBuf);
1818 CMCHKUNPK(cmUnpkLteRnti, ¶m->newCrnti, mBuf);
1819 CMCHKUNPK(cmUnpkCrgUeUlHqCfg, ¶m->ueUlHqRecfg, mBuf);
1820 CMCHKUNPK(SUnpkU8, ¶m->txMode.pres, mBuf);
1821 CMCHKUNPK(SUnpkU32, (U32 *)¶m->txMode.tm, mBuf);
1823 CMCHKUNPK(cmUnpkCrgUeSecCellInfo, ¶m->crgSCellCfg, mBuf);
1824 #endif /* LTE_ADV */
1830 /***********************************************************
1832 * Func : cmPkCrgLchRecfg
1835 * Desc : Logical channel reconfiguration info for dedicated channels only
1844 **********************************************************/
1846 PUBLIC S16 cmPkCrgLchRecfg
1852 PUBLIC S16 cmPkCrgLchRecfg(param, mBuf)
1858 TRC3(cmPkCrgLchRecfg)
1860 CMCHKPK(SPkU8, param->ulRecfg.lcgId, mBuf);
1861 CMCHKPK(cmPkLteLcId, param->lcId, mBuf);
1862 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1863 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1869 /***********************************************************
1871 * Func : cmUnpkCrgLchRecfg
1874 * Desc : Logical channel reconfiguration info for dedicated channels only
1883 **********************************************************/
1885 PUBLIC S16 cmUnpkCrgLchRecfg
1891 PUBLIC S16 cmUnpkCrgLchRecfg(param, mBuf)
1897 TRC3(cmUnpkCrgLchRecfg)
1899 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1900 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1901 CMCHKUNPK(cmUnpkLteLcId, ¶m->lcId, mBuf);
1902 CMCHKUNPK(SUnpkU8, ¶m->ulRecfg.lcgId, mBuf);
1908 /***********************************************************
1910 * Func : cmPkCrgRecfg
1913 * Desc : Basic reconfiguration info for MAC
1922 **********************************************************/
1924 PUBLIC S16 cmPkCrgRecfg
1930 PUBLIC S16 cmPkCrgRecfg(param, mBuf)
1938 switch(param->recfgType) {
1940 CMCHKPK(cmPkCrgLchRecfg, ¶m->u.lchRecfg, mBuf);
1943 CMCHKPK(cmPkCrgUeRecfg, ¶m->u.ueRecfg, mBuf);
1946 CMCHKPK(cmPkCrgCellRecfg, ¶m->u.cellRecfg, mBuf);
1951 CMCHKPK(SPkU8, param->recfgType, mBuf);
1957 /***********************************************************
1959 * Func : cmUnpkCrgRecfg
1962 * Desc : Basic reconfiguration info for MAC
1971 **********************************************************/
1973 PUBLIC S16 cmUnpkCrgRecfg
1979 PUBLIC S16 cmUnpkCrgRecfg(param, mBuf)
1985 TRC3(cmUnpkCrgRecfg)
1987 CMCHKUNPK(SUnpkU8, ¶m->recfgType, mBuf);
1988 switch(param->recfgType) {
1990 CMCHKUNPK(cmUnpkCrgCellRecfg, ¶m->u.cellRecfg, mBuf);
1993 CMCHKUNPK(cmUnpkCrgUeRecfg, ¶m->u.ueRecfg, mBuf);
1996 CMCHKUNPK(cmUnpkCrgLchRecfg, ¶m->u.lchRecfg, mBuf);
2006 /***********************************************************
2011 * Desc : Basic Delete info for MAC
2020 **********************************************************/
2022 PUBLIC S16 cmPkCrgDel
2028 PUBLIC S16 cmPkCrgDel(param, mBuf)
2036 switch(param->delType) {
2038 CMCHKPK(SPkU8, param->u.lchDel.dir, mBuf);
2039 CMCHKPK(cmPkLteLcId, param->u.lchDel.lcId, mBuf);
2040 CMCHKPK(cmPkLteRnti, param->u.lchDel.crnti, mBuf);
2041 CMCHKPK(cmPkLteCellId, param->u.lchDel.cellId, mBuf);
2044 CMCHKPK(cmPkLteRnti, param->u.ueDel.crnti, mBuf);
2045 CMCHKPK(cmPkLteCellId, param->u.ueDel.cellId, mBuf);
2048 CMCHKPK(cmPkLteCellId, param->u.cellDel.cellId, mBuf);
2053 CMCHKPK(SPkU8, param->delType, mBuf);
2059 /***********************************************************
2061 * Func : cmUnpkCrgDel
2064 * Desc : Basic Delete info for MAC
2073 **********************************************************/
2075 PUBLIC S16 cmUnpkCrgDel
2081 PUBLIC S16 cmUnpkCrgDel(param, mBuf)
2089 CMCHKUNPK(SUnpkU8, ¶m->delType, mBuf);
2090 switch(param->delType) {
2092 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.cellDel.cellId, mBuf);
2095 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.ueDel.cellId, mBuf);
2096 CMCHKUNPK(cmUnpkLteRnti, ¶m->u.ueDel.crnti, mBuf);
2099 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.lchDel.cellId, mBuf);
2100 CMCHKUNPK(cmUnpkLteRnti, ¶m->u.lchDel.crnti, mBuf);
2101 CMCHKUNPK(cmUnpkLteLcId, ¶m->u.lchDel.lcId, mBuf);
2102 CMCHKUNPK(SUnpkU8, ¶m->u.lchDel.dir, mBuf);
2112 /***********************************************************
2117 * Desc : UE RESET info for MAC
2126 **********************************************************/
2128 PUBLIC S16 cmPkCrgRst
2134 PUBLIC S16 cmPkCrgRst(param, mBuf)
2142 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
2143 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
2149 /***********************************************************
2151 * Func : cmUnpkCrgRst
2154 * Desc : UE RESET info for MAC
2163 **********************************************************/
2165 PUBLIC S16 cmUnpkCrgRst
2171 PUBLIC S16 cmUnpkCrgRst(param, mBuf)
2179 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
2180 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
2186 /***********************************************************
2188 * Func : cmPkCrgCfgReqInfo
2191 * Desc : Config/Reconfig/Delete info for MAC
2200 **********************************************************/
2202 PUBLIC S16 cmPkCrgCfgReqInfo
2204 CrgCfgReqInfo *param,
2208 PUBLIC S16 cmPkCrgCfgReqInfo(param, mBuf)
2209 CrgCfgReqInfo *param;
2214 TRC3(cmPkCrgCfgReqInfo)
2216 switch(param->action) {
2218 CMCHKPK(cmPkCrgRst, ¶m->u.rstInfo, mBuf);
2221 CMCHKPK(cmPkCrgDel, ¶m->u.delInfo, mBuf);
2224 CMCHKPK(cmPkCrgRecfg, ¶m->u.recfgInfo, mBuf);
2227 CMCHKPK(cmPkCrgCfg, ¶m->u.cfgInfo, mBuf);
2232 CMCHKPK(SPkU8, param->action, mBuf);
2238 /***********************************************************
2240 * Func : cmUnpkCrgCfgReqInfo
2243 * Desc : Config/Reconfig/Delete info for MAC
2252 **********************************************************/
2254 PUBLIC S16 cmUnpkCrgCfgReqInfo
2256 CrgCfgReqInfo *param,
2260 PUBLIC S16 cmUnpkCrgCfgReqInfo(param, mBuf)
2261 CrgCfgReqInfo *param;
2266 TRC3(cmUnpkCrgCfgReqInfo)
2268 CMCHKUNPK(SUnpkU8, ¶m->action, mBuf);
2269 switch(param->action) {
2271 CMCHKUNPK(cmUnpkCrgCfg, ¶m->u.cfgInfo, mBuf);
2274 CMCHKUNPK(cmUnpkCrgRecfg, ¶m->u.recfgInfo, mBuf);
2277 CMCHKUNPK(cmUnpkCrgDel, ¶m->u.delInfo, mBuf);
2280 CMCHKUNPK(cmUnpkCrgRst, ¶m->u.rstInfo, mBuf);
2289 /**********************************************************************
2291 **********************************************************************/