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
66 S16 cmPkCrgBndReq(pst, suId, spId)
74 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
75 #if (ERRCLASS & ERRCLS_ADD_RES)
76 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
77 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
78 (ErrVal)ECRG001, (ErrVal)0, "Packing failed");
82 if (SPkS16(spId, mBuf) != ROK) {
83 #if (ERRCLASS & ERRCLS_ADD_RES)
84 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
85 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
86 (ErrVal)ECRG002, (ErrVal)0, "Packing failed");
91 if (SPkS16(suId, mBuf) != ROK) {
92 #if (ERRCLASS & ERRCLS_ADD_RES)
93 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
94 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
95 (ErrVal)ECRG003, (ErrVal)0, "Packing failed");
100 pst->event = (Event) EVTCRGBNDREQ;
101 return (SPstTsk(pst,mBuf));
106 * @brief Request from RRC to MAC to bind the interface saps
110 * Function : cmUnpkCrgBndReq
112 * @param[in] Pst* pst
113 * @param[in] SuId suId
114 * @param[in] SpId spId
126 S16 cmUnpkCrgBndReq(func, pst, mBuf)
136 if (SUnpkS16(&suId, mBuf) != ROK) {
138 #if (ERRCLASS & ERRCLS_ADD_RES)
139 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
140 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
141 (ErrVal)ECRG004, (ErrVal)0, "Packing failed");
145 if (SUnpkS16(&spId, mBuf) != ROK) {
147 #if (ERRCLASS & ERRCLS_ADD_RES)
148 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
149 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
150 (ErrVal)ECRG005, (ErrVal)0, "Packing failed");
155 return ((*func)(pst, suId, spId));
160 * @brief Confirmation from MAC to RRC for the bind/Unbind
161 * request for the interface saps
165 * Function : cmPkCrgBndCfm
167 * @param[in] Pst* pst
168 * @param[in] SuId suId
169 * @param[in] U8 status
181 S16 cmPkCrgBndCfm(pst, suId, status)
187 Buffer *mBuf = NULLP;
189 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
190 #if (ERRCLASS & ERRCLS_ADD_RES)
191 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
192 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
193 (ErrVal)ECRG006, (ErrVal)0, "Packing failed");
197 if (oduUnpackUInt8(status, mBuf) != ROK) {
198 #if (ERRCLASS & ERRCLS_ADD_RES)
199 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
200 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
201 (ErrVal)ECRG007, (ErrVal)0, "Packing failed");
206 if (SPkS16(suId, mBuf) != ROK) {
207 #if (ERRCLASS & ERRCLS_ADD_RES)
208 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
209 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
210 (ErrVal)ECRG008, (ErrVal)0, "Packing failed");
215 pst->event = (Event) EVTCRGBNDCFM;
216 return (SPstTsk(pst,mBuf));
221 * @brief Confirmation from MAC to RRC for the bind/Unbind
222 * request for the interface saps
226 * Function : cmUnpkCrgBndCfm
228 * @param[in] Pst* pst
229 * @param[in] SuId suId
230 * @param[in] U8 status
242 S16 cmUnpkCrgBndCfm(func, pst, mBuf)
252 if (SUnpkS16(&suId, mBuf) != ROK) {
254 #if (ERRCLASS & ERRCLS_ADD_RES)
255 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
256 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
257 (ErrVal)ECRG009, (ErrVal)0, "Packing failed");
261 if (oduPackUInt8(&status, mBuf) != ROK) {
263 #if (ERRCLASS & ERRCLS_ADD_RES)
264 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
265 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
266 (ErrVal)ECRG010, (ErrVal)0, "Packing failed");
271 return ((*func)(pst, suId, status));
276 * @brief Request from RRC to MAC to Unbind the interface saps
280 * Function : cmPkCrgUbndReq
282 * @param[in] Pst* pst
283 * @param[in] SpId spId
284 * @param[in] Reason reason
296 S16 cmPkCrgUbndReq(pst, spId, reason)
302 Buffer *mBuf = NULLP;
304 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
305 #if (ERRCLASS & ERRCLS_ADD_RES)
306 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
307 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
308 (ErrVal)ECRG011, (ErrVal)0, "Packing failed");
312 if (SPkS16(reason, mBuf) != ROK) {
313 #if (ERRCLASS & ERRCLS_ADD_RES)
314 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
315 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
316 (ErrVal)ECRG012, (ErrVal)0, "Packing failed");
321 if (SPkS16(spId, mBuf) != ROK) {
322 #if (ERRCLASS & ERRCLS_ADD_RES)
323 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
324 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
325 (ErrVal)ECRG013, (ErrVal)0, "Packing failed");
330 pst->event = (Event) EVTCRGUBNDREQ;
331 return (SPstTsk(pst,mBuf));
336 * @brief Request from RRC to MAC to Unbind the interface saps
340 * Function : cmUnpkCrgUbndReq
342 * @param[in] Pst* pst
343 * @param[in] SpId spId
344 * @param[in] Reason reason
356 S16 cmUnpkCrgUbndReq(func, pst, mBuf)
366 if (SUnpkS16(&spId, mBuf) != ROK) {
368 #if (ERRCLASS & ERRCLS_ADD_RES)
369 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
370 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
371 (ErrVal)ECRG014, (ErrVal)0, "Packing failed");
375 if (SUnpkS16(&reason, mBuf) != ROK) {
377 #if (ERRCLASS & ERRCLS_ADD_RES)
378 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
379 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
380 (ErrVal)ECRG015, (ErrVal)0, "Packing failed");
385 return ((*func)(pst, spId, reason));
390 * @brief Configuration Request from RRC to MAC for
391 * configuring Cell/Ue/Lc
395 * Function : cmPkCrgCfgReq
397 * @param[in] Pst* pst
398 * @param[in] SpId spId
399 * @param[in] CrgCfgTransId transId
400 * @param[in] CrgCfgReqInfo * cfgReqInfo
409 CrgCfgTransId transId,
410 CrgCfgReqInfo * cfgReqInfo
413 S16 cmPkCrgCfgReq(pst, spId, transId, cfgReqInfo)
416 CrgCfgTransId transId;
417 CrgCfgReqInfo * cfgReqInfo;
420 Buffer *mBuf = NULLP;
422 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
423 #if (ERRCLASS & ERRCLS_ADD_RES)
424 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
425 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
426 (ErrVal)ECRG016, (ErrVal)0, "Packing failed");
428 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
431 if (cmPkCrgCfgReqInfo(cfgReqInfo, mBuf) != ROK) {
432 #if (ERRCLASS & ERRCLS_ADD_RES)
433 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
434 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
435 (ErrVal)ECRG017, (ErrVal)0, "Packing failed");
437 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
441 /* crg_c_001.main_5: MOD - Updating ERR code */
442 if (cmPkCrgCfgTransId(&transId, mBuf) != ROK) {
443 #if (ERRCLASS & ERRCLS_ADD_RES)
444 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
445 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
446 (ErrVal)ECRG018, (ErrVal)0, "Packing failed");
448 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
452 if (SPkS16(spId, mBuf) != ROK) {
453 #if (ERRCLASS & ERRCLS_ADD_RES)
454 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
455 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
456 (ErrVal)ECRG019, (ErrVal)0, "Packing failed");
458 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
462 if (SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo)) != ROK) {
463 #if (ERRCLASS & ERRCLS_ADD_RES)
464 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
465 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
466 (ErrVal)ECRG020, (ErrVal)0, "Packing failed");
471 pst->event = (Event) EVTCRGCFGREQ;
472 return (SPstTsk(pst,mBuf));
477 * @brief Configuration Request from RRC to MAC for
478 * configuring Cell/Ue/Lc
482 * Function : cmUnpkCrgCfgReq
484 * @param[in] Pst* pst
485 * @param[in] SpId spId
486 * @param[in] CrgCfgTransId transId
487 * @param[in] CrgCfgReqInfo * cfgReqInfo
499 S16 cmUnpkCrgCfgReq(func, pst, mBuf)
506 CrgCfgTransId transId;
507 CrgCfgReqInfo *cfgReqInfo;
510 if (SUnpkS16(&spId, mBuf) != ROK) {
512 #if (ERRCLASS & ERRCLS_ADD_RES)
513 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
514 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
515 (ErrVal)ECRG021, (ErrVal)0, "Packing failed");
519 if (cmUnpkCrgCfgTransId(&transId, mBuf) != ROK) {
521 #if (ERRCLASS & ERRCLS_ADD_RES)
522 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
523 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
524 (ErrVal)ECRG022, (ErrVal)0, "Packing failed");
528 if ((SGetSBuf(pst->region, pst->pool, (Data **)&cfgReqInfo, sizeof(CrgCfgReqInfo))) != ROK) {
529 #if (ERRCLASS & ERRCLS_ADD_RES)
530 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
531 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
532 (ErrVal)ECRG023, (ErrVal)0, "Packing failed");
538 if (cmUnpkCrgCfgReqInfo(cfgReqInfo, mBuf) != ROK) {
539 SPutSBuf(pst->region, pst->pool, (Data *)cfgReqInfo, sizeof(CrgCfgReqInfo));
541 #if (ERRCLASS & ERRCLS_ADD_RES)
542 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
543 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
544 (ErrVal)ECRG024, (ErrVal)0, "Packing failed");
549 return ((*func)(pst, spId, transId, cfgReqInfo));
554 * @brief Configuration Confirm from MAC to RRC
558 * Function : cmPkCrgCfgCfm
560 * @param[in] Pst* pst
561 * @param[in] SuId suId
562 * @param[in] CrgCfgTransId transId
563 * @param[in] U8 status
572 CrgCfgTransId transId,
576 S16 cmPkCrgCfgCfm(pst, suId, transId, status)
579 CrgCfgTransId transId;
583 Buffer *mBuf = NULLP;
585 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
586 #if (ERRCLASS & ERRCLS_ADD_RES)
587 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
588 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
589 (ErrVal)ECRG025, (ErrVal)0, "Packing failed");
593 /* crg_c_001.main_5 - ADD - Added the packing for status. */
594 if (oduUnpackUInt8(status, 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)ECRG026, (ErrVal)0, "Packing failed");
603 if (cmPkCrgCfgTransId(&transId, 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)ECRG027, (ErrVal)0, "Packing failed");
612 if (SPkS16(suId, 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)ECRG028, (ErrVal)0, "Packing failed");
621 pst->event = (Event) EVTCRGCFGCFM;
622 return (SPstTsk(pst,mBuf));
627 * @brief Configuration Confirm from MAC to RRC
631 * Function : cmUnpkCrgCfgCfm
633 * @param[in] Pst* pst
634 * @param[in] SuId suId
635 * @param[in] CrgCfgTransId transId
636 * @param[in] U8 status
648 S16 cmUnpkCrgCfgCfm(func, pst, mBuf)
655 CrgCfgTransId transId;
659 if (SUnpkS16(&suId, mBuf) != ROK) {
661 #if (ERRCLASS & ERRCLS_ADD_RES)
662 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
663 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
664 (ErrVal)ECRG029, (ErrVal)0, "Packing failed");
668 if (cmUnpkCrgCfgTransId(&transId, mBuf) != ROK) {
670 #if (ERRCLASS & ERRCLS_ADD_RES)
671 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
672 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
673 (ErrVal)ECRG030, (ErrVal)0, "Packing failed");
677 if (oduPackUInt8(&status, mBuf) != ROK) {
679 #if (ERRCLASS & ERRCLS_ADD_RES)
680 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
681 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
682 (ErrVal)ECRG031, (ErrVal)0, "Packing failed");
687 return ((*func)(pst, suId, transId, status));
691 /***********************************************************
693 * Func : cmPkCrgCfgTransId
696 * Desc : Transaction ID between MAC and RRC
705 **********************************************************/
707 S16 cmPkCrgCfgTransId
709 CrgCfgTransId *param,
713 S16 cmPkCrgCfgTransId(param, mBuf)
714 CrgCfgTransId *param;
721 for (i=CRG_CFG_TRANSID_SIZE-1; i >= 0; i--) {
722 CMCHKPK(oduUnpackUInt8, param->trans[i], mBuf);
729 /***********************************************************
731 * Func : cmUnpkCrgCfgTransId
734 * Desc : Transaction ID between MAC and RRC
743 **********************************************************/
745 S16 cmUnpkCrgCfgTransId
747 CrgCfgTransId *param,
751 S16 cmUnpkCrgCfgTransId(param, mBuf)
752 CrgCfgTransId *param;
759 for (i=0; i<CRG_CFG_TRANSID_SIZE; i++) {
760 CMCHKUNPK(oduPackUInt8, ¶m->trans[i], mBuf);
767 /***********************************************************
769 * Func : cmPkCrgBwCfg
772 * Desc : Bandwidth configuration per cell
781 **********************************************************/
789 S16 cmPkCrgBwCfg(param, mBuf)
796 CMCHKPK(oduUnpackUInt8, param->ulTotalBw, mBuf);
797 CMCHKPK(oduUnpackUInt8, param->dlTotalBw, mBuf);
803 /***********************************************************
805 * Func : cmUnpkCrgBwCfg
808 * Desc : Bandwidth configuration per cell
817 **********************************************************/
825 S16 cmUnpkCrgBwCfg(param, mBuf)
832 CMCHKUNPK(oduPackUInt8, ¶m->dlTotalBw, mBuf);
833 CMCHKUNPK(oduPackUInt8, ¶m->ulTotalBw, mBuf);
839 /***********************************************************
841 * Func : cmPkCrgRachCfg
844 * Desc : RACH configuration per cell
853 **********************************************************/
861 S16 cmPkCrgRachCfg(param, mBuf)
868 CMCHKPK(oduUnpackUInt8, param->maxMsg3Tx, mBuf);
874 /***********************************************************
876 * Func : cmUnpkCrgRachCfg
879 * Desc : RACH configuration per cell
888 **********************************************************/
896 S16 cmUnpkCrgRachCfg(param, mBuf)
903 CMCHKUNPK(oduPackUInt8, ¶m->maxMsg3Tx, mBuf);
909 /***********************************************************
911 * Func : cmPkCrgCellCfg
914 * Desc : Cell configuration
923 **********************************************************/
931 S16 cmPkCrgCellCfg(param, mBuf)
939 CMCHKPK(oduUnpackUInt8, param->emtcEnable, mBuf);
941 #ifdef TENB_MULT_CELL_SUPPRT
942 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
943 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
945 CMCHKPK(cmPkCrgBwCfg, ¶m->bwCfg, mBuf);
946 CMCHKPK(cmPkCrgRachCfg, ¶m->rachCfg, mBuf);
947 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
953 /***********************************************************
955 * Func : cmUnpkCrgCellCfg
958 * Desc : Cell configuration
967 **********************************************************/
975 S16 cmUnpkCrgCellCfg(param, mBuf)
982 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
983 CMCHKUNPK(cmUnpkCrgRachCfg, ¶m->rachCfg, mBuf);
984 CMCHKUNPK(cmUnpkCrgBwCfg, ¶m->bwCfg, mBuf);
985 #ifdef TENB_MULT_CELL_SUPPRT
986 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
987 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
990 CMCHKUNPK(oduPackUInt8, ¶m->emtcEnable, mBuf);
997 /***********************************************************
999 * Func : cmPkCrgUeUlHqCfg
1002 * Desc : Uplink HARQ configuration per UE
1011 **********************************************************/
1013 S16 cmPkCrgUeUlHqCfg
1015 CrgUeUlHqCfg *param,
1019 S16 cmPkCrgUeUlHqCfg(param, mBuf)
1020 CrgUeUlHqCfg *param;
1026 CMCHKPK(oduUnpackUInt8, param->maxUlHqTx, mBuf);
1031 /***********************************************************
1033 * Func : cmPkCrgUeSCellCfg
1036 * Desc : Secondary Cell information of the UE
1045 **********************************************************/
1047 PRIVATE S16 cmPkCrgUeSCellCfg
1049 CrgUeSCellInfo *param,
1053 PRIVATE S16 cmPkCrgUeSCellCfg(param, mBuf)
1054 CrgUeSCellInfo *param;
1058 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
1059 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
1060 CMCHKPK(oduUnpackUInt8, param->macInst, mBuf);
1061 CMCHKPK(oduUnpackUInt16, param->sCellId, mBuf);
1065 /***********************************************************
1067 * Func : cmUnpkCrgUeSCellCfg
1070 * Desc : Secondary Cell information of the UE
1079 **********************************************************/
1081 PRIVATE S16 cmUnpkCrgUeSCellCfg
1083 CrgUeSCellInfo *param,
1087 PRIVATE S16 cmUnpkCrgUeSCellCfg(param, mBuf)
1088 CrgUeSCellInfo *param;
1092 CMCHKUNPK(oduPackUInt16, ¶m->sCellId, mBuf);
1093 CMCHKUNPK(oduPackUInt8, ¶m->macInst, mBuf);
1094 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
1095 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
1098 /***********************************************************
1100 * Func : cmPkCrgUeSecCellInfo
1103 * Desc : Secondary Cell information of the UE
1112 **********************************************************/
1114 S16 cmPkCrgUeSecCellInfo
1116 CrgUeSecCellInfo *param,
1120 S16 cmPkCrgUeSecCellInfo(param, mBuf)
1121 CrgUeSecCellInfo *param;
1126 for(idx = param->numSCells - 1; idx >= 0; idx--)
1128 CMCHKPK(cmPkCrgUeSCellCfg, ¶m->ueSCellCfg[(U8)idx], mBuf);
1131 CMCHKPK(oduUnpackUInt8, param->numSCells, mBuf);
1132 CMCHKPK(oduUnpackUInt8, param->isSCellCfgPres, mBuf);
1137 /***********************************************************
1139 * Func : cmUnpkCrgUeSecCellInfo
1142 * Desc : Secondary Cell information of the UE
1151 **********************************************************/
1153 S16 cmUnpkCrgUeSecCellInfo
1155 CrgUeSecCellInfo *param,
1159 S16 cmUnpkCrgUeSecCellInfo(param, mBuf)
1160 CrgUeSecCellInfo *param;
1166 CMCHKUNPK(oduPackUInt8, ¶m->isSCellCfgPres, mBuf);
1167 if(TRUE == param->isSCellCfgPres)
1169 CMCHKUNPK(oduPackUInt8, ¶m->numSCells, mBuf);
1171 for(idx = 0; idx < param->numSCells; idx++)
1173 CMCHKUNPK(cmUnpkCrgUeSCellCfg, ¶m->ueSCellCfg[idx],mBuf);
1180 #endif /* LTE_ADV */
1183 /***********************************************************
1185 * Func : cmUnpkCrgUeUlHqCfg
1188 * Desc : Uplink HARQ configuration per UE
1197 **********************************************************/
1199 S16 cmUnpkCrgUeUlHqCfg
1201 CrgUeUlHqCfg *param,
1205 S16 cmUnpkCrgUeUlHqCfg(param, mBuf)
1206 CrgUeUlHqCfg *param;
1212 CMCHKUNPK(oduPackUInt8, ¶m->maxUlHqTx, mBuf);
1218 /***********************************************************
1220 * Func : cmPkCrgUeCfg
1223 * Desc : UE configuration
1232 **********************************************************/
1240 S16 cmPkCrgUeCfg(param, mBuf)
1246 #ifdef TENB_MULT_CELL_SUPPRT
1247 CMCHKPK(SPkS16, param->rguDlSapId, mBuf);
1248 CMCHKPK(SPkS16, param->rguUlSapId, mBuf);
1250 CMCHKPK(oduUnpackUInt32, param->txMode.tm, mBuf);
1251 CMCHKPK(oduUnpackUInt8, param->txMode.pres, mBuf);
1252 CMCHKPK(cmPkCrgUeUlHqCfg, ¶m->ueUlHqCfg, mBuf);
1253 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1254 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1260 /***********************************************************
1262 * Func : cmUnpkCrgUeCfg
1265 * Desc : UE configuration
1274 **********************************************************/
1282 S16 cmUnpkCrgUeCfg(param, mBuf)
1290 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1291 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1292 CMCHKUNPK(cmUnpkCrgUeUlHqCfg, ¶m->ueUlHqCfg, mBuf);
1293 CMCHKUNPK(oduPackUInt8, ¶m->txMode.pres, mBuf);
1294 CMCHKUNPK(oduPackUInt32, (U32 *)&tmpEnum, mBuf);
1295 param->txMode.tm = (CrgTxMode) tmpEnum;
1296 #ifdef TENB_MULT_CELL_SUPPRT
1297 CMCHKUNPK(SUnpkS16, ¶m->rguUlSapId, mBuf);
1298 CMCHKUNPK(SUnpkS16, ¶m->rguDlSapId, mBuf);
1305 /***********************************************************
1307 * Func : cmPkCrgDlLchCfg
1310 * Desc : Logical channel configuration info for downlink logical channels
1319 **********************************************************/
1327 S16 cmPkCrgDlLchCfg(param, mBuf)
1334 CMCHKPK(oduUnpackUInt8, param->dlTrchType, mBuf);
1340 /***********************************************************
1342 * Func : cmUnpkCrgDlLchCfg
1345 * Desc : Logical channel configuration info for downlink logical channels
1354 **********************************************************/
1356 S16 cmUnpkCrgDlLchCfg
1362 S16 cmUnpkCrgDlLchCfg(param, mBuf)
1369 CMCHKUNPK(oduPackUInt8, ¶m->dlTrchType, mBuf);
1375 /***********************************************************
1377 * Func : cmPkCrgUlLchCfg
1380 * Desc : Logical channel configuration info for uplink logical channels
1389 **********************************************************/
1397 S16 cmPkCrgUlLchCfg(param, mBuf)
1404 CMCHKPK(oduUnpackUInt8, param->lcgId, mBuf);
1405 CMCHKPK(oduUnpackUInt8, param->ulTrchType, mBuf);
1411 /***********************************************************
1413 * Func : cmUnpkCrgUlLchCfg
1416 * Desc : Logical channel configuration info for uplink logical channels
1425 **********************************************************/
1427 S16 cmUnpkCrgUlLchCfg
1433 S16 cmUnpkCrgUlLchCfg(param, mBuf)
1440 CMCHKUNPK(oduPackUInt8, ¶m->ulTrchType, mBuf);
1441 CMCHKUNPK(oduPackUInt8, ¶m->lcgId, mBuf);
1447 /***********************************************************
1449 * Func : cmPkCrgLchCfg
1452 * Desc : Logical channel configuration info for common and dedicated channels
1461 **********************************************************/
1469 S16 cmPkCrgLchCfg(param, mBuf)
1475 /* crg_c_001.main_5 - ADD - Added the packing for LTE_L2_MEAS. */
1477 CMCHKPK(oduUnpackUInt8, param->qci, mBuf);
1479 CMCHKPK(cmPkCrgUlLchCfg, ¶m->ulInfo, mBuf);
1480 CMCHKPK(cmPkCrgDlLchCfg, ¶m->dlInfo, mBuf);
1481 CMCHKPK(oduUnpackUInt8, param->dir, mBuf);
1482 CMCHKPK(cmPkLteLcType, param->lcType, mBuf);
1483 CMCHKPK(cmPkLteLcId, param->lcId, mBuf);
1484 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1485 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1491 /***********************************************************
1493 * Func : cmUnpkCrgLchCfg
1496 * Desc : Logical channel configuration info for common and dedicated channels
1505 **********************************************************/
1513 S16 cmUnpkCrgLchCfg(param, mBuf)
1520 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1521 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1522 CMCHKUNPK(cmUnpkLteLcId, ¶m->lcId, mBuf);
1523 CMCHKUNPK(cmUnpkLteLcType, ¶m->lcType, mBuf);
1524 CMCHKUNPK(oduPackUInt8, ¶m->dir, mBuf);
1525 CMCHKUNPK(cmUnpkCrgDlLchCfg, ¶m->dlInfo, mBuf);
1526 CMCHKUNPK(cmUnpkCrgUlLchCfg, ¶m->ulInfo, mBuf);
1527 /* crg_c_001.main_5 - ADD - Added the unpacking for LTE_L2_MEAS. */
1529 CMCHKUNPK(oduPackUInt8, ¶m->qci, mBuf);
1536 /***********************************************************
1541 * Desc : Basic configuration info for MAC
1550 **********************************************************/
1558 S16 cmPkCrgCfg(param, mBuf)
1565 switch(param->cfgType) {
1567 CMCHKPK(cmPkCrgLchCfg, ¶m->u.lchCfg, mBuf);
1570 CMCHKPK(cmPkCrgUeCfg, ¶m->u.ueCfg, mBuf);
1573 CMCHKPK(cmPkCrgCellCfg, ¶m->u.cellCfg, mBuf);
1578 CMCHKPK(oduUnpackUInt8, param->cfgType, mBuf);
1584 /***********************************************************
1586 * Func : cmUnpkCrgCfg
1589 * Desc : Basic configuration info for MAC
1598 **********************************************************/
1606 S16 cmUnpkCrgCfg(param, mBuf)
1613 CMCHKUNPK(oduPackUInt8, ¶m->cfgType, mBuf);
1614 switch(param->cfgType) {
1616 CMCHKUNPK(cmUnpkCrgCellCfg, ¶m->u.cellCfg, mBuf);
1619 CMCHKUNPK(cmUnpkCrgUeCfg, ¶m->u.ueCfg, mBuf);
1622 CMCHKUNPK(cmUnpkCrgLchCfg, ¶m->u.lchCfg, mBuf);
1632 /***********************************************************
1634 * Func : cmPkCrgCellRecfg
1637 * Desc : Cell reconfiguration info
1646 **********************************************************/
1648 S16 cmPkCrgCellRecfg
1650 CrgCellRecfg *param,
1654 S16 cmPkCrgCellRecfg(param, mBuf)
1655 CrgCellRecfg *param;
1661 CMCHKPK(cmPkCrgRachCfg, ¶m->rachRecfg, mBuf);
1662 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1668 /***********************************************************
1670 * Func : cmUnpkCrgCellRecfg
1673 * Desc : Cell reconfiguration info
1682 **********************************************************/
1684 S16 cmUnpkCrgCellRecfg
1686 CrgCellRecfg *param,
1690 S16 cmUnpkCrgCellRecfg(param, mBuf)
1691 CrgCellRecfg *param;
1697 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1698 CMCHKUNPK(cmUnpkCrgRachCfg, ¶m->rachRecfg, mBuf);
1704 /***********************************************************
1706 * Func : cmPkCrgUeRecfg
1709 * Desc : UE reconfiguration info
1718 **********************************************************/
1726 S16 cmPkCrgUeRecfg(param, mBuf)
1733 if(TRUE == param->crgSCellCfg.isSCellCfgPres)
1735 CMCHKPK(cmPkCrgUeSecCellInfo, ¶m->crgSCellCfg, mBuf);
1739 CMCHKPK(oduUnpackUInt8, param->crgSCellCfg.isSCellCfgPres, mBuf);
1741 #endif /* LTE_ADV */
1742 CMCHKPK(oduUnpackUInt32, param->txMode.tm, mBuf);
1743 CMCHKPK(oduUnpackUInt8, param->txMode.pres, mBuf);
1744 CMCHKPK(cmPkCrgUeUlHqCfg, ¶m->ueUlHqRecfg, mBuf);
1745 CMCHKPK(cmPkLteRnti, param->newCrnti, mBuf);
1746 CMCHKPK(cmPkLteRnti, param->oldCrnti, mBuf);
1747 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1753 /***********************************************************
1755 * Func : cmUnpkCrgUeRecfg
1758 * Desc : UE reconfiguration info
1767 **********************************************************/
1769 S16 cmUnpkCrgUeRecfg
1775 S16 cmUnpkCrgUeRecfg(param, mBuf)
1782 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1783 CMCHKUNPK(cmUnpkLteRnti, ¶m->oldCrnti, mBuf);
1784 CMCHKUNPK(cmUnpkLteRnti, ¶m->newCrnti, mBuf);
1785 CMCHKUNPK(cmUnpkCrgUeUlHqCfg, ¶m->ueUlHqRecfg, mBuf);
1786 CMCHKUNPK(oduPackUInt8, ¶m->txMode.pres, mBuf);
1787 CMCHKUNPK(oduPackUInt32, (U32 *)¶m->txMode.tm, mBuf);
1789 CMCHKUNPK(cmUnpkCrgUeSecCellInfo, ¶m->crgSCellCfg, mBuf);
1790 #endif /* LTE_ADV */
1796 /***********************************************************
1798 * Func : cmPkCrgLchRecfg
1801 * Desc : Logical channel reconfiguration info for dedicated channels only
1810 **********************************************************/
1818 S16 cmPkCrgLchRecfg(param, mBuf)
1825 CMCHKPK(oduUnpackUInt8, param->ulRecfg.lcgId, mBuf);
1826 CMCHKPK(cmPkLteLcId, param->lcId, mBuf);
1827 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
1828 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1834 /***********************************************************
1836 * Func : cmUnpkCrgLchRecfg
1839 * Desc : Logical channel reconfiguration info for dedicated channels only
1848 **********************************************************/
1850 S16 cmUnpkCrgLchRecfg
1856 S16 cmUnpkCrgLchRecfg(param, mBuf)
1863 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1864 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
1865 CMCHKUNPK(cmUnpkLteLcId, ¶m->lcId, mBuf);
1866 CMCHKUNPK(oduPackUInt8, ¶m->ulRecfg.lcgId, mBuf);
1872 /***********************************************************
1874 * Func : cmPkCrgRecfg
1877 * Desc : Basic reconfiguration info for MAC
1886 **********************************************************/
1894 S16 cmPkCrgRecfg(param, mBuf)
1901 switch(param->recfgType) {
1903 CMCHKPK(cmPkCrgLchRecfg, ¶m->u.lchRecfg, mBuf);
1906 CMCHKPK(cmPkCrgUeRecfg, ¶m->u.ueRecfg, mBuf);
1909 CMCHKPK(cmPkCrgCellRecfg, ¶m->u.cellRecfg, mBuf);
1914 CMCHKPK(oduUnpackUInt8, param->recfgType, mBuf);
1920 /***********************************************************
1922 * Func : cmUnpkCrgRecfg
1925 * Desc : Basic reconfiguration info for MAC
1934 **********************************************************/
1942 S16 cmUnpkCrgRecfg(param, mBuf)
1949 CMCHKUNPK(oduPackUInt8, ¶m->recfgType, mBuf);
1950 switch(param->recfgType) {
1952 CMCHKUNPK(cmUnpkCrgCellRecfg, ¶m->u.cellRecfg, mBuf);
1955 CMCHKUNPK(cmUnpkCrgUeRecfg, ¶m->u.ueRecfg, mBuf);
1958 CMCHKUNPK(cmUnpkCrgLchRecfg, ¶m->u.lchRecfg, mBuf);
1968 /***********************************************************
1973 * Desc : Basic Delete info for MAC
1982 **********************************************************/
1990 S16 cmPkCrgDel(param, mBuf)
1997 switch(param->delType) {
1999 CMCHKPK(oduUnpackUInt8, param->u.lchDel.dir, mBuf);
2000 CMCHKPK(cmPkLteLcId, param->u.lchDel.lcId, mBuf);
2001 CMCHKPK(cmPkLteRnti, param->u.lchDel.crnti, mBuf);
2002 CMCHKPK(cmPkLteCellId, param->u.lchDel.cellId, mBuf);
2005 CMCHKPK(cmPkLteRnti, param->u.ueDel.crnti, mBuf);
2006 CMCHKPK(cmPkLteCellId, param->u.ueDel.cellId, mBuf);
2009 CMCHKPK(cmPkLteCellId, param->u.cellDel.cellId, mBuf);
2014 CMCHKPK(oduUnpackUInt8, param->delType, mBuf);
2020 /***********************************************************
2022 * Func : cmUnpkCrgDel
2025 * Desc : Basic Delete info for MAC
2034 **********************************************************/
2042 S16 cmUnpkCrgDel(param, mBuf)
2049 CMCHKUNPK(oduPackUInt8, ¶m->delType, mBuf);
2050 switch(param->delType) {
2052 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.cellDel.cellId, mBuf);
2055 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.ueDel.cellId, mBuf);
2056 CMCHKUNPK(cmUnpkLteRnti, ¶m->u.ueDel.crnti, mBuf);
2059 CMCHKUNPK(cmUnpkLteCellId, ¶m->u.lchDel.cellId, mBuf);
2060 CMCHKUNPK(cmUnpkLteRnti, ¶m->u.lchDel.crnti, mBuf);
2061 CMCHKUNPK(cmUnpkLteLcId, ¶m->u.lchDel.lcId, mBuf);
2062 CMCHKUNPK(oduPackUInt8, ¶m->u.lchDel.dir, mBuf);
2072 /***********************************************************
2077 * Desc : UE RESET info for MAC
2086 **********************************************************/
2094 S16 cmPkCrgRst(param, mBuf)
2101 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
2102 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
2108 /***********************************************************
2110 * Func : cmUnpkCrgRst
2113 * Desc : UE RESET info for MAC
2122 **********************************************************/
2130 S16 cmUnpkCrgRst(param, mBuf)
2137 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
2138 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
2144 /***********************************************************
2146 * Func : cmPkCrgCfgReqInfo
2149 * Desc : Config/Reconfig/Delete info for MAC
2158 **********************************************************/
2160 S16 cmPkCrgCfgReqInfo
2162 CrgCfgReqInfo *param,
2166 S16 cmPkCrgCfgReqInfo(param, mBuf)
2167 CrgCfgReqInfo *param;
2173 switch(param->action) {
2175 CMCHKPK(cmPkCrgRst, ¶m->u.rstInfo, mBuf);
2178 CMCHKPK(cmPkCrgDel, ¶m->u.delInfo, mBuf);
2181 CMCHKPK(cmPkCrgRecfg, ¶m->u.recfgInfo, mBuf);
2184 CMCHKPK(cmPkCrgCfg, ¶m->u.cfgInfo, mBuf);
2189 CMCHKPK(oduUnpackUInt8, param->action, mBuf);
2195 /***********************************************************
2197 * Func : cmUnpkCrgCfgReqInfo
2200 * Desc : Config/Reconfig/Delete info for MAC
2209 **********************************************************/
2211 S16 cmUnpkCrgCfgReqInfo
2213 CrgCfgReqInfo *param,
2217 S16 cmUnpkCrgCfgReqInfo(param, mBuf)
2218 CrgCfgReqInfo *param;
2224 CMCHKUNPK(oduPackUInt8, ¶m->action, mBuf);
2225 switch(param->action) {
2227 CMCHKUNPK(cmUnpkCrgCfg, ¶m->u.cfgInfo, mBuf);
2230 CMCHKUNPK(cmUnpkCrgRecfg, ¶m->u.recfgInfo, mBuf);
2233 CMCHKUNPK(cmUnpkCrgDel, ¶m->u.delInfo, mBuf);
2236 CMCHKUNPK(cmUnpkCrgRst, ¶m->u.rstInfo, mBuf);
2245 /**********************************************************************
2247 **********************************************************************/