Committing in PDCP code
[o-du/l2.git] / src / 5gnrpdcp / pj_ptmi.c
diff --git a/src/5gnrpdcp/pj_ptmi.c b/src/5gnrpdcp/pj_ptmi.c
new file mode 100755 (executable)
index 0000000..9ec0be9
--- /dev/null
@@ -0,0 +1,607 @@
+/*******************************************************************************
+################################################################################
+#   Copyright (c) [2017-2019] [Radisys]                                        #
+#                                                                              #
+#   Licensed under the Apache License, Version 2.0 (the "License");            #
+#   you may not use this file except in compliance with the License.           #
+#   You may obtain a copy of the License at                                    #
+#                                                                              #
+#       http://www.apache.org/licenses/LICENSE-2.0                             #
+#                                                                              #
+#   Unless required by applicable law or agreed to in writing, software        #
+#   distributed under the License is distributed on an "AS IS" BASIS,          #
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
+#   See the License for the specific language governing permissions and        #
+#   limitations under the License.                                             #
+################################################################################
+*******************************************************************************/
+
+/********************************************************************20**
+
+        Name:     PDCP Layer Management interface
+
+        Type:     C source file
+
+        Desc:     This file contains source code for RLC layer management
+                  interface primitives. It includes the definition of the
+                  following functions and their portable function
+                  definitions.
+                     -- PjMiLpjCfgCfm
+                     -- PjMiLpjCntrlCfm
+                     -- PjMiLpjStaInd
+
+
+        File:     pj_ptmi.c
+
+*********************************************************************21*/
+
+\f
+/* header (.h) include files */
+#include "envopt.h"        /* environment options */
+#include "envdep.h"        /* environment dependent */
+#include "envind.h"        /* environment independent */
+
+#include "gen.h"           /* general */
+#include "ssi.h"           /* system services */
+#include "cm5.h"           /* common timer defines */
+#include "cm_tkns.h"       /* common tokens defines */
+#include "cm_mblk.h"       /* common memory allocation library defines */
+#include "cm_llist.h"      /* common link list  defines  */
+#include "cm_hash.h"       /* common hash list  defines */
+#include "cm_lte.h"        /* common LTE defines */
+#include "lpj.h"           /* LPJ defines */
+
+
+/* extern (.x) include files */
+#include "gen.x"           /* general */
+#include "ssi.x"           /* system services */
+
+#include "cm5.x"           /* common timer library */
+#include "cm_tkns.x"       /* common tokens */
+#include "cm_mblk.x"       /* common memory allocation */
+#include "cm_llist.x"      /* common link list */
+#include "cm_hash.x"       /* common hash list */
+#include "cm_lte.x"        /* common LTE includes */
+#include "cm_lib.x"        /* common memory allocation library */
+#include "lpj.x"           /* LPJ */
+
+
+/* local defines */
+#ifndef LCPJMILPJ
+#define PTPJLPJ
+#endif
+
+#ifndef SM
+#define PTPJLPJ
+#endif
+
+
+#ifdef PTPJLPJ
+
+EXTERN S16 PtMiLpjCfgCfm ARGS((Pst * pst, PjMngmt * cfgCfm));
+
+EXTERN S16 PtMiLpjCntrlCfm ARGS((Pst * pst, PjMngmt * cntlCfm));
+
+EXTERN S16 PtMiLpjStaInd ARGS((Pst * pst, PjMngmt * staInd));
+
+EXTERN S16 PtMiLpjStaCfm ARGS((Pst * pst, PjMngmt * staCfm));
+
+EXTERN S16 PtMiLpjStsCfm ARGS((Pst * pst, Action actn, PjMngmt * stsCfm));
+
+EXTERN S16 PtMiLpjTrcInd ARGS((Pst * pst, PjMngmt * trc, Buffer * mBuf));
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+EXTERN S16 PtMiLpjL2MeasCfm   ARGS((Pst *pst, PjL2MeasCfmEvt *measEvt));
+PRIVATE S16 PtMiLpjL2MeasStopCfm   ARGS((Pst *pst, U16 measType,U8 status));
+#endif /*  LTE_L2_MEAS */
+
+#endif /*--#ifdef PTPJLPJ--*/
+
+/*********************************************************************
+ *             Primitives for LPJ interface 
+ ********************************************************************/
+PRIVATE CONSTANT LpjCfgCfm PjMiLpjCfgCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjCfgCfm,
+#else
+   PtMiLpjCfgCfm,
+#endif
+#ifdef SM
+   SmMiLpjCfgCfm,
+#else
+   PtMiLpjCfgCfm,
+#endif
+};
+
+
+PRIVATE CONSTANT LpjCntrlCfm PjMiLpjCntrlCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjCntrlCfm,
+#else
+   PtMiLpjCntrlCfm,
+#endif
+#ifdef SM
+   SmMiLpjCntrlCfm,
+#else
+   PtMiLpjCntrlCfm,
+#endif
+};
+
+
+PRIVATE CONSTANT LpjStaInd PjMiLpjStaIndMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjStaInd,
+#else
+   PtMiLpjStaInd,
+#endif
+#ifdef SM
+   SmMiLpjStaInd,
+#else
+   PtMiLpjStaInd,
+#endif
+};
+
+
+PRIVATE CONSTANT LpjStaCfm PjMiLpjStaCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjStaCfm,
+#else
+   PtMiLpjStaCfm,
+#endif
+#ifdef SM
+   SmMiLpjStaCfm,
+#else
+   PtMiLpjStaCfm,
+#endif
+};
+
+
+PRIVATE CONSTANT LpjStsCfm PjMiLpjStsCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjStsCfm,
+#else
+   PtMiLpjStsCfm,
+#endif
+#ifdef SM
+   SmMiLpjStsCfm,
+#else
+   PtMiLpjStsCfm,
+#endif
+};
+
+
+PRIVATE CONSTANT LpjTrcInd PjMiLpjTrcIndMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjTrcInd,
+#else
+   PtMiLpjTrcInd,
+#endif
+#ifdef SM
+   SmMiLpjTrcInd,
+#else
+   PtMiLpjTrcInd,
+#endif
+};
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+PRIVATE CONSTANT LpjL2MeasCfm PjMiLpjL2MeasCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjL2MeasCfm,
+#else
+   PtMiLpjL2MeasCfm,
+#endif
+#ifdef SM
+   SmMiLpjL2MeasCfm,
+#else
+   PtMiLpjL2MeasCfm,
+#endif
+};
+PRIVATE CONSTANT LpjL2MeasStopCfm PjMiLpjL2MeasStopCfmMt[] =
+{
+#ifdef LCPJMILPJ
+   cmPkLpjL2MeasStopCfm,
+#else
+   PtMiLpjL2MeasStopCfm,
+#endif
+#ifdef SM
+   SmMiLpjL2MeasStopCfm,
+#else
+   PtMiLpjL2MeasStopCfm,
+#endif
+};
+#endif /*  LTE_L2_MEAS */
+
+/****************************************************************************
+ *                         LPJ Interface Mt functions
+ ***************************************************************************/
+#ifdef ANSI
+PUBLIC S16 PjMiLpjCfgCfm
+(
+Pst * pst,
+PjMngmt * cfgCfm
+)
+#else
+PUBLIC S16 PjMiLpjCfgCfm(pst, cfgCfm)
+Pst * pst;
+PjMngmt * cfgCfm;
+#endif
+{
+
+   TRC3(PjMiLpjCfgCfm)
+
+   (*PjMiLpjCfgCfmMt[pst->selector])(pst, cfgCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PjMiLpjCntrlCfm
+(
+Pst * pst,
+PjMngmt * cntlCfm
+)
+#else
+PUBLIC S16 PjMiLpjCntrlCfm(pst, cntlCfm)
+Pst * pst;
+PjMngmt * cntlCfm;
+#endif
+{
+
+   TRC3(PjMiLpjCntrlCfm)
+
+   (*PjMiLpjCntrlCfmMt[pst->selector])(pst, cntlCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PjMiLpjStaInd
+(
+Pst * pst,
+PjMngmt * staInd
+)
+#else
+PUBLIC S16 PjMiLpjStaInd(pst, staInd)
+Pst * pst;
+PjMngmt * staInd;
+#endif
+{
+
+   TRC3(PjMiLpjStaInd)
+
+   (*PjMiLpjStaIndMt[pst->selector])(pst, staInd);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PjMiLpjStaCfm
+(
+Pst * pst,
+PjMngmt * staCfm
+)
+#else
+PUBLIC S16 PjMiLpjStaCfm(pst, staCfm)
+Pst * pst;
+PjMngmt * staCfm;
+#endif
+{
+
+   TRC3(PjMiLpjStaCfm)
+
+   (*PjMiLpjStaCfmMt[pst->selector])(pst, staCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PjMiLpjStsCfm
+(
+Pst * pst,
+Action actn,
+PjMngmt * stsCfm
+)
+#else
+PUBLIC S16 PjMiLpjStsCfm(pst, actn, stsCfm)
+Pst * pst;
+Action actn;
+PjMngmt * stsCfm;
+#endif
+{
+
+   TRC3(PjMiLpjStsCfm)
+
+   (*PjMiLpjStsCfmMt[pst->selector])(pst, actn, stsCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PjMiLpjTrcInd
+(
+Pst * pst,
+PjMngmt * trc,
+Buffer * mBuf
+)
+#else
+PUBLIC S16 PjMiLpjTrcInd(pst, trc, mBuf)
+Pst * pst;
+PjMngmt * trc;
+Buffer * mBuf;
+#endif
+{
+
+   TRC3(PjMiLpjTrcInd)
+
+   (*PjMiLpjTrcIndMt[pst->selector])(pst, trc, mBuf);
+
+   RETVALUE(ROK);
+
+}
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+#ifdef ANSI
+PUBLIC S16 PjMiLpjL2MeasCfm
+(
+Pst * pst,
+PjL2MeasCfmEvt *measEvt
+)
+#else
+PUBLIC S16 PjMiLpjL2MeasCfm(pst, trc, mBuf)
+Pst * pst;
+PjL2MeasCfmEvt *measEvt;
+#endif
+{
+
+   TRC3(PjMiLpjL2MeasCfm)
+
+   (*PjMiLpjL2MeasCfmMt[pst->selector])(pst, measEvt);
+
+   RETVALUE(ROK);
+
+}
+#ifdef ANSI
+PUBLIC S16 PjMiLpjL2MeasStopCfm
+(  
+Pst *pst,
+U16  measType,
+U8  status
+)
+#else
+PUBLIC S16 PjMiLpjL2MeasStopCfm(pst, measType,status)
+Pst *pst;
+U16  measType;
+U8  status;
+#endif
+{
+
+   TRC3(PjMiLpjL2MeasStopCfm)
+
+   (*PjMiLpjL2MeasStopCfmMt[pst->selector])(pst, measType,status);
+
+   RETVALUE(ROK);
+
+}
+#endif /*  LTE_L2_MEAS */
+
+
+#ifdef PTPJLPJ
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjCfgCfm
+(
+Pst * pst,
+PjMngmt * cfgCfm
+)
+#else
+PUBLIC S16 PtMiLpjCfgCfm(pst, cfgCfm)
+Pst * pst;
+PjMngmt * cfgCfm;
+#endif
+{
+
+   TRC3(PtMiLpjCfgCfm)
+
+   UNUSED(pst);
+   UNUSED(cfgCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjCntrlCfm
+(
+Pst * pst,
+PjMngmt * cntlCfm
+)
+#else
+PUBLIC S16 PtMiLpjCntrlCfm(pst, cntlCfm)
+Pst * pst;
+PjMngmt * cntlCfm;
+#endif
+{
+
+   TRC3(PtMiLpjCntrlCfm)
+
+   UNUSED(pst);
+   UNUSED(cntlCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjStaInd
+(
+Pst * pst,
+PjMngmt * staInd
+)
+#else
+PUBLIC S16 PtMiLpjStaInd(pst, staInd)
+Pst * pst;
+PjMngmt * staInd;
+#endif
+{
+
+   TRC3(PtMiLpjStaInd)
+
+   UNUSED(pst);
+   UNUSED(staInd);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjStaCfm
+(
+Pst * pst,
+PjMngmt * staCfm
+)
+#else
+PUBLIC S16 PtMiLpjStaCfm(pst, staCfm)
+Pst * pst;
+PjMngmt * staCfm;
+#endif
+{
+
+   TRC3(PtMiLpjStaCfm)
+
+   UNUSED(pst);
+   UNUSED(staCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjStsCfm
+(
+Pst * pst,
+Action actn,
+PjMngmt * stsCfm
+)
+#else
+PUBLIC S16 PtMiLpjStsCfm(pst, actn, stsCfm)
+Pst * pst;
+Action actn;
+PjMngmt * stsCfm;
+#endif
+{
+
+   TRC3(PtMiLpjStsCfm)
+
+   UNUSED(pst);
+   UNUSED(actn);
+   UNUSED(stsCfm);
+
+   RETVALUE(ROK);
+
+}
+
+
+#ifdef ANSI
+PUBLIC S16 PtMiLpjTrcInd
+(
+Pst * pst,
+PjMngmt * trc,
+Buffer * mBuf
+)
+#else
+PUBLIC S16 PtMiLpjTrcInd(pst, trc, mBuf)
+Pst * pst;
+PjMngmt * trc;
+Buffer * mBuf;
+#endif
+{
+
+   TRC3(PtMiLpjTrcInd)
+
+   UNUSED(pst);
+   UNUSED(trc);
+   UNUSED(mBuf);
+
+   RETVALUE(ROK);
+
+}
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+#ifdef ANSI
+PUBLIC S16 PtMiLpjL2MeasCfm
+(
+Pst * pst,
+PjL2MeasCfmEvt * measEvt
+)
+#else
+PUBLIC S16 PtMiLpjL2MeasCfm(pst, measEvt)
+Pst * pst;
+PjL2MeasCfmEvt * measEvt;
+#endif
+{
+
+   TRC3(PtMiLpjL2MeasCfm)
+
+   UNUSED(pst);
+   UNUSED(measEvt);
+
+   RETVALUE(ROK);
+
+}
+#ifdef ANSI
+PRIVATE S16 PtMiLpjL2MeasStopCfm
+(
+Pst * pst,
+U16 measType,
+U8 status
+)
+#else
+PRIVATE S16 PtMiLpjL2MeasStopCfm(pst, measType,status)
+Pst * pst;
+U16  measType;
+U8  status;
+#endif
+{
+
+   TRC3(PtMiLpjL2MeasStopCfm)
+
+   UNUSED(pst);
+   UNUSED(measType);
+   UNUSED(status);
+
+   RETVALUE(ROK);
+
+}
+#endif /*  LTE_L2_MEAS */
+#endif /*--ifdef PTPJLPJ--*/
+
+/********************************************************************30**
+
+         End of file
+**********************************************************************/