Initial commit
[o-du/l2.git] / src / 5gnrrlc / kw_ptmi.c
diff --git a/src/5gnrrlc/kw_ptmi.c b/src/5gnrrlc/kw_ptmi.c
new file mode 100755 (executable)
index 0000000..b01d918
--- /dev/null
@@ -0,0 +1,802 @@
+/*******************************************************************************
+################################################################################
+#   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:     RLC 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:     kw_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 "lkw.h"           /* LKW defines */
+#include "ckw.h"           /* CKW defines */
+#include "kwu.h"           /* KWU defines */
+#include "rgu.h"           /* RGU defines */
+
+#include "kw_env.h"        /* RLC environment options */
+#include "kw.h"            /* RLC 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 "lkw.x"           /* LKW */
+#include "ckw.x"           /* CKW */
+#include "kwu.x"           /* KWU */
+#include "rgu.x"           /* RGU */
+
+#include "kw.x"
+
+/* local defines */
+#define MAXKWMI 2               /* max. layer management interfaces */
+
+#ifndef LCKWMILKW
+#define PTKWLKW
+#endif
+
+
+#ifndef SM
+#define PTKWLKW
+#endif
+
+
+\f
+#ifdef PTKWLKW
+/* portable functions */
+
+PRIVATE S16 PtMiLkwCfgCfm    ARGS((Pst *pst, KwMngmt *cfm));
+PRIVATE S16 PtMiLkwCntrlCfm  ARGS((Pst *pst, KwMngmt *cfm));
+PRIVATE S16 PtMiLkwStaInd    ARGS((Pst *pst, KwMngmt *usta));
+
+PRIVATE S16 PtMiLkwStaCfm    ARGS((Pst *pst, KwMngmt *cfm));
+PRIVATE S16 PtMiLkwStsCfm    ARGS((Pst *pst, Action action,
+                                KwMngmt *cfm));
+PRIVATE S16 PtMiLkwTrcInd    ARGS((Pst *pst, KwMngmt *trc,
+                                Buffer *mBuf));
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+PRIVATE S16 PtMiLkwL2MeasCfm   ARGS((Pst *pst, KwL2MeasCfmEvt *measEvt));
+PRIVATE S16 PtMiLkwL2MeasStopCfm   ARGS((Pst *pst, U8 measType,U8 status));
+#endif /*  LTE_L2_MEAS */
+#endif /* PTKWLKW */
+
+\f
+/*********************************************************************
+ *             Primitives for LKW interface 
+ ********************************************************************/
+/* Configuration confirmation primitive */
+
+PRIVATE LkwCfgCfm kwMiLkwCfgCfmMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW
+   cmPkLkwCfgCfm,            /* 0 - loosely coupled - fc */
+#else
+   PtMiLkwCfgCfm,            /* 0 - tightly coupled portable */
+#endif /* LCRLMILKW */
+#ifdef SM
+   SmMiLkwCfgCfm,            /* 1 - tightly coupled layer management*/
+#else
+   PtMiLkwCfgCfm,            /* 1 - tightly coupled portable */
+#endif /* SM */
+};
+
+/* control confirmation primitives */
+
+PRIVATE LkwCntrlCfm kwMiLkwCntrlCfmMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW 
+   cmPkLkwCntrlCfm,          /* 0 - loosely coupled - fc */
+#else
+   PtMiLkwCntrlCfm,          /* 0 - tightly coupled portable */
+#endif /* LCRLMILKW */
+#ifdef SM
+   SmMiLkwCntrlCfm,          /* 1 - tightly coupled layer management*/
+#else
+   PtMiLkwCntrlCfm,          /* 1 - tightly coupled portable */
+#endif /* SM */
+};
+
+/* Status Indication primitive */
+
+PRIVATE LkwStaInd kwMiLkwStaIndMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW 
+   cmPkLkwStaInd,            /* 0 - loosely coupled  */
+#else
+   PtMiLkwStaInd,            /* 0 - tightly coupled, portable */
+#endif /* LCKWMILKW */
+#ifdef SM
+   SmMiLkwStaInd,            /* 1 - tightly coupled, layer management */
+#else
+   PtMiLkwStaInd,            /* 1 - tightly coupled, portable */
+#endif /* SM */
+};
+
+/* Status confirm primitive */
+
+PRIVATE LkwStaCfm kwMiLkwStaCfmMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW 
+   cmPkLkwStaCfm,            /* 0 - loosely coupled  */
+#else
+   PtMiLkwStaCfm,            /* 0 - tightly coupled, portable */
+#endif /* LCKWMILKW */
+#ifdef SM
+   SmMiLkwStaCfm,            /* 1 - tightly coupled, layer management */
+#else
+   PtMiLkwStaCfm,            /* 1 - tightly coupled, portable */
+#endif /* SM */
+};
+
+/* Statistics confirm primitive */
+
+PRIVATE LkwStsCfm kwMiLkwStsCfmMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW
+   cmPkLkwStsCfm,            /* 0 - loosely coupled  */
+#else
+   PtMiLkwStsCfm,            /* 0 - tightly coupled, portable */
+#endif /* LCRLMILKW */
+#ifdef SM
+   SmMiLkwStsCfm,            /* 1 - tightly coupled, layer management */
+#else
+   PtMiLkwStsCfm,            /* 1 - tightly coupled, portable */
+#endif /* SM */
+};
+
+/* Trace indication primitive */
+
+PRIVATE LkwTrcInd kwMiLkwTrcIndMt[MAXKWMI] =
+{
+#ifdef LCKWMILKW
+   cmPkLkwTrcInd,            /* 0 - loosely coupled  */
+#else
+   PtMiLkwTrcInd,            /* 0 - tightly coupled, portable */
+#endif /* LCKWMILKW */
+#ifdef SM
+   SmMiLkwTrcInd,            /* 1 - tightly coupled, layer management */
+#else
+   PtMiLkwTrcInd,            /* 1 - tightly coupled, portable */
+#endif /* SM */
+};
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+PRIVATE CONSTANT LkwL2MeasCfm KwMiLkwL2MeasCfmMt[] =
+{
+#ifdef LCKWMILKW
+   cmPkLkwL2MeasCfm,
+#else
+   PtMiLkwL2MeasCfm,
+#endif
+#ifdef SM
+   SmMiLkwL2MeasCfm,
+#else
+   PtMiLkwL2MeasCfm,
+#endif
+};
+PRIVATE CONSTANT LkwL2MeasStopCfm KwMiLkwL2MeasStopCfmMt[] =
+{
+#ifdef LCKWMILKW
+   cmPkLkwL2MeasStopCfm,
+#else
+   PtMiLkwL2MeasStopCfm,
+#endif
+#ifdef SM
+   SmMiLkwL2MeasStopCfm,
+#else
+   PtMiLkwL2MeasStopCfm,
+#endif
+};
+#endif /*  LTE_L2_MEAS */
+\f  
+/****************************************************************************
+ *                         LKW Interface Mt functions
+ ***************************************************************************/
+/**
+   @brief
+   This function is called by the KwMiLkwCfgReq function for responding
+   to configuration requests.The cfm field in the KwMngmt  structure contains
+ the response value.
+
+   - This function calls the mapping matrix for sending the configuration
+     confirmation.
+   - The actual function called depends on the coupling at the LKW interface.
+   - For a loosely coupled interface, a common packing function is called.
+   - The packing function packs the parameter in a message buffer and posts
+     the message to the target task.
+   - For a tightly coupled interface, the actual function called depends on
+     the layer manager API provided.
+
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwCfgCfm
+(
+Pst        *pst,                /* post structure */
+KwMngmt    *cfm                 /* Layer Management structure */
+)
+#else
+PUBLIC S16 KwMiLkwCfgCfm(pst, cfm)
+Pst        *pst;                /* post structure */
+KwMngmt    *cfm;                /* Layer Management structure */
+#endif
+{
+   TRC3(KwMiLkwCfgCfm);
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwCfgCfmMt[pst->selector])(pst, cfm);
+   
+   RETVALUE(ROK);
+}
+
+
+/**
+   @brief
+   This function is called by the KwMiLkwCntrlReq function to send a control confirm to the layer management module.
+
+   - This function calls the mapping matrix for sending the control confirmation.
+   - Actual function called depends on the coupling of the LKW interface.
+   - For a loosely coupled interface, a common packing function is called.
+   - The packing function packs the parameter in a message buffer and posts the
+     message to the target task.
+   - For a tightly coupled interface, the actual function called depends on the
+     layer manager API provided.
+
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwCntrlCfm
+(
+Pst *pst,                    /* post structure */
+KwMngmt *cfm                 /* configure */
+)
+#else
+PUBLIC S16 KwMiLkwCntrlCfm(pst, cfm)
+Pst *pst;                    /* post structure */
+KwMngmt *cfm;                /* confirm */
+#endif
+{
+   TRC3(KwMiLkwCntrlCfm)
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwCntrlCfmMt[pst->selector])(pst, cfm);
+
+   RETVALUE(ROK);
+
+} /* end of KwMiLkwCntrlCfm */
+
+/**
+   @brief
+   Description:
+   - This function can be used by RLC to send unsolicited status information
+     to the layer manager, when the unsolicited status flag is enabled by the
+     layer manager through a previous control request.
+
+   - This function calls the mapping matrix for sending the unsolicited status
+     indication.The actual function called depends on the coupling of the
+     LKW interface.
+
+   - For a loosely coupled interface, a common packing function is called. The
+     packing function packs the parameter in a message buffer and posts the
+     message to the target task.
+
+   - For a tightly coupled interface, the actual function called depends on
+     the layer manager API provided.
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwStaInd
+(
+Pst     *pst,                /* post structure */
+KwMngmt *usta                /* unsolicited status */
+)
+#else
+PUBLIC S16 KwMiLkwStaInd(pst, usta)
+Pst     *pst;                /* post structure */
+KwMngmt *usta;               /* unsolicited status */
+#endif
+{
+   TRC3(KwMiLkwStaInd);
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwStaIndMt[pst->selector])(pst, usta);
+
+   RETVALUE(ROK);
+} /* end of KwMiLkwStaInd */
+
+
+/**
+   @brief
+   - This function is called by the KwMiLkwStaReq function to send
+      the requested status information to the layer manager.
+
+   - This function calls the mapping matrix for sending the status
+      confirmation. The actual function called depends on the coupling
+      of the LKW interface.
+
+   - For a loosely coupled interface, a common packing function is called.
+      The packing function packs the parameter in a message buffer and
+      posts the message to the target task.
+
+   - For a tightly coupled interface, the actual function called depends
+      on the layer manager API provided.
+
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwStaCfm
+(
+Pst *pst,                    /* post structure */
+KwMngmt *cfm                 /* solicited status confirmation */
+)
+#else
+PUBLIC S16 KwMiLkwStaCfm(pst, cfm)
+Pst *pst;                    /* post structure */
+KwMngmt *cfm;                /* solicited status confirmation */
+#endif
+{
+   TRC3(KwMiLkwStaCfm);
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwStaCfmMt[pst->selector])(pst, cfm);
+
+   RETVALUE(ROK);
+
+} /* end of KwMiLkwStaCfm */
+
+
+/**
+   @brief
+   - This function is called by the KwMiLkwStsReq function for responding
+      to statistics requests.
+
+   - This function calls the mapping matrix for sending the statistics
+      confirmation. The actual function called depends on the coupling
+      of the LKW interface.
+
+   - For a loosely coupled interface, a common packing function is called.
+      The packing function packs the parameter in a message buffer and
+      posts the message to the target task.
+
+   - For a tightly coupled interface, the actual function called depends
+      on the layer manager API provided.
+
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwStsCfm
+(
+Pst *pst,                    /* post structure */
+Action action,               /* action */
+KwMngmt *cfm                 /* statistics confirmation */
+)
+#else
+PUBLIC S16 KwMiLkwStsCfm(pst, action, cfm)
+Pst *pst;                    /* post structure */
+Action action;               /* action */
+KwMngmt *cfm;                /* statistics confirmation */
+#endif
+{
+   TRC3(KwMiLkwStsCfm);
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwStsCfmMt[pst->selector])(pst, action, cfm);
+
+   RETVALUE(ROK);
+
+} /* end of KwMiLkwStsCfm */
+
+/**
+   @brief
+   - This function can be used by RLC module to send unsolicited trace
+      indications to the layer manager, when tracing is enabled by the
+      layer manager through a previous control request.
+
+   - This function calls the mapping matrix for sending the trace indication.
+      The actual function called depends on the coupling of the LKW interface.
+
+   - For a loosely coupled interface, a common packing function is called.
+      The packing function packs the parameter in a message buffer and posts
+      the message to the target task.
+
+   - For a tightly coupled interface, the actual function called depends on
+      the layer manager API provided.
+
+*/
+#ifdef ANSI
+PUBLIC S16 KwMiLkwTrcInd
+(
+Pst *pst,                    /* post structure */
+KwMngmt *trc,                /* trace indication */
+Buffer *mBuf                 /* message buffer */
+)
+#else
+PUBLIC S16 KwMiLkwTrcInd(pst, trc, mBuf)
+Pst *pst;                    /* post structure */
+KwMngmt *trc;                /* trace indication */
+Buffer *mBuf;                /* message buffer */
+#endif
+{
+   TRC3(KwMiLkwTrcInd);
+
+   /* jump to specific primitive depending on configured selector */
+   (*kwMiLkwTrcIndMt[pst->selector])(pst, trc, mBuf);
+
+   RETVALUE(ROK);
+
+} /* end of KwMiLkwTrcInd */
+
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+#ifdef ANSI
+PUBLIC S16 KwMiLkwL2MeasCfm
+(
+Pst * pst,
+KwL2MeasCfmEvt *measEvt
+)
+#else
+PUBLIC S16 KwMiLkwL2MeasCfm(pst, measEvt)
+Pst * pst;
+KwL2MeasCfmEvt *measEvt;
+#endif
+{
+
+   TRC3(KwMiLkwL2MeasCfm)
+
+   (*KwMiLkwL2MeasCfmMt[pst->selector])(pst, measEvt);
+
+   RETVALUE(ROK);
+
+}
+#ifdef ANSI
+PUBLIC S16 KwMiLkwL2MeasStopCfm
+(  
+Pst *pst,
+U8  measType,
+U8  status
+)
+#else
+PUBLIC S16 KwMiLkwL2MeasStopCfm(pst, measType,status)
+Pst *pst;
+U8  measType;
+U8  status;
+#endif
+{
+
+   TRC3(KwMiLkwL2MeasStopCfm)
+
+   (*KwMiLkwL2MeasStopCfmMt[pst->selector])(pst, measType,status);
+
+   RETVALUE(ROK);
+
+}
+#endif /*  LTE_L2_MEAS */
+#ifdef PTKWLKW
+
+\f
+/*************************************************************************
+ *                         Porting Functions
+ ************************************************************************/
+/*
+ *
+ *       Fun:   configuration  Confirm
+ *
+ *       Desc:  This function is used to confirm the receipt of configuration
+ *              request from layer management.
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+
+#ifdef ANSI
+PUBLIC S16 PtMiLkwCfgCfm
+(
+Pst *pst,                    /* post structure */
+KwMngmt *cfm                 /* Layer Management structure */
+)
+#else
+PUBLIC S16 PtMiLkwCfgCfm(pst, cfm)
+Pst *pst;                    /* post structure */
+KwMngmt *cfm;                /* Layer Management structure */
+#endif
+{
+   TRC3(PtMiLkwCfgCfm)
+
+   UNUSED(pst);
+   UNUSED(cfm);
+
+   TRC2(PtMiLkwCfgCfm() : function is not implemented)
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwCfgCfm */
+
+/*
+ *
+ *       Fun:   Control Confirmation
+ *
+ *       Desc:  This function is the portable version of used to
+ *              confirm the receipt of configuration request from
+ *              layer management.
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+
+#ifdef ANSI
+PRIVATE S16 PtMiLkwCntrlCfm
+(
+Pst *pst,                 /* Post structure */
+KwMngmt *cfm              /* Layer Management structure */
+)
+#else
+PRIVATE S16 PtMiLkwCntrlCfm(pst, cfm)
+Pst *pst;                 /* Post structure */
+KwMngmt *cfm;             /* Layer Management structure */
+#endif
+{
+   TRC3(PtMiLkwCntrlCfm);
+
+   UNUSED(pst);
+   UNUSED(cfm);
+
+   TRC2(PtMiLkwCntrlCfm() :  function is not implemented)
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwCntrlCfm */
+
+
+/*
+ *
+ *       Fun:   unsolicited status indication
+ *
+ *       Desc:  This function is the portable version  used to
+ *              send the status indication to the layer manager
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+#ifdef ANSI
+PRIVATE S16 PtMiLkwStaInd
+(
+Pst *pst,                    /* post structure */
+KwMngmt *usta                /* unsolicited status */
+)
+#else
+PRIVATE S16 PtMiLkwStaInd(pst, usta)
+Pst *pst;                    /* post structure */
+KwMngmt *usta;               /* unsolicited status */
+#endif
+{
+   TRC3(PtMiLkwStaInd)
+
+   UNUSED(pst);
+   UNUSED(usta);
+
+   TRC2(PtMiLkwStaInd() : function is not implemented)
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwStaInd */
+
+
+/*
+ *
+ *       Fun:   portable function for solicited status confirmation
+ *
+ *       Desc:  This function is the portable version  used to
+ *              send the status confirmation to the layer manager
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+#ifdef ANSI
+PRIVATE S16 PtMiLkwStaCfm
+(
+Pst *pst,                    /* post structure */
+KwMngmt *cfm                 /* solicited status confirmation */
+)
+#else
+PRIVATE S16 PtMiLkwStaCfm(pst, cfm)
+Pst *pst;                    /* post structure */
+KwMngmt *cfm;                /* solicited status confirmation */
+#endif
+{
+   TRC3(PtMiLkwStaCfm)
+
+   UNUSED(pst);
+   UNUSED(cfm);
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwStaCfm */
+
+
+/*
+ *
+ *       Fun:   portable function for statistics confirmation
+ *
+ *       Desc:  This function is the portable version  used to
+ *              send the statistics confirmation to the layer manager
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+#ifdef ANSI
+PRIVATE S16 PtMiLkwStsCfm
+(
+Pst *pst,                    /* post structure */
+Action action,               /* action */
+KwMngmt *cfm                 /* statistics confirmation */
+)
+#else
+PRIVATE S16 PtMiLkwStsCfm(pst, action, cfm)
+Pst *pst;                    /* post structure */
+Action action;               /* action */
+KwMngmt *cfm;                /* statistics confirmation */
+#endif
+{
+   TRC3(PtMiLkwStsCfm)
+
+   UNUSED(pst);
+   UNUSED(action);
+   UNUSED(cfm);
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwStsCfm */
+
+
+/*
+ *
+ *       Fun:   portable function for trace indication
+ *
+ *       Desc:  This function is the portable version  used to
+ *              send trace indication to the layer manager
+ *
+ *       Ret:   ROK      - ok
+ *
+ *       Notes: None
+ *
+ *       File:  kw_ptmi.c
+ *
+ */
+#ifdef ANSI
+PRIVATE S16 PtMiLkwTrcInd
+(
+Pst *pst,                    /* post structure */
+KwMngmt *trc,                /* trace indication */
+Buffer *mBuf                 /* message buffer */
+)
+#else
+PRIVATE S16 PtMiLkwTrcInd(pst, trc, mBuf)
+Pst *pst;                    /* post structure */
+KwMngmt *trc;                /* trace indication */
+Buffer *mBuf;                /* message buffer */
+#endif
+{
+   TRC3(PtMiLkwTrcInd)
+
+   UNUSED(pst);
+   UNUSED(trc);
+   UNUSED(mBuf);
+
+   RETVALUE(ROK);
+} /* end of PtMiLkwTrcInd */
+
+/* kw005.201 added support for L2 Measurement */
+#ifdef LTE_L2_MEAS
+#ifdef ANSI
+PRIVATE S16 PtMiLkwL2MeasCfm
+(
+Pst * pst,
+KwL2MeasCfmEvt * measEvt
+)
+#else
+PRIVATE S16 PtMiLkwL2MeasCfm(pst, measEvt)
+Pst * pst;
+KwL2MeasCfmEvt * measEvt;
+#endif
+{
+
+   TRC3(PtMiLkwL2MeasCfm)
+
+   UNUSED(pst);
+   UNUSED(measEvt);
+
+   RETVALUE(ROK);
+
+}
+#ifdef ANSI
+PRIVATE S16 PtMiLkwL2MeasStopCfm
+(
+Pst * pst,
+U8 measType,
+U8 status
+)
+#else
+PRIVATE S16 PtMiLkwL2MeasStopCfm(pst, measType,status)
+Pst * pst;
+U8  measType;
+U8  status;
+#endif
+{
+
+   TRC3(PtMiLkwL2MeasStopCfm)
+
+   UNUSED(pst);
+   UNUSED(measType);
+   UNUSED(status);
+
+   RETVALUE(ROK);
+
+}
+#endif /*  LTE_L2_MEAS */
+#endif /* PTKWLKW */
+
+
+/********************************************************************30**
+
+         End of file
+**********************************************************************/