Merge "Restructure O1 module to run as a thread in O-DU High binary [Issue-Id: ODUHIG...
[o-du/l2.git] / src / 5gnrrlc / rlc_mgr.c
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
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                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
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 *******************************************************************************/
18 /* This file defines API towards RLC interface */
19 #include "common_def.h"
20 #include "rgu.h"           /* RGU interface includes*/
21 #include "lkw.h"           /* LKW defines */
22 #include "ckw.h"           /* CKW defines */
23 #include "kwu.h"           /* KWU defines */
24 #include "kw_env.h"        /* RLC environment options */
25 #include "kw.h"            /* RLC defines */
26
27
28 /* header/extern include files (.x) */
29 #include "rgu.x"           
30 #include "lkw.x"           /* LKW */
31 #include "ckw.x"           /* CKW */
32 #include "kwu.x"           /* KWU */
33 #include "kw_err.h"
34 #include "kw.x"
35
36 #include "du_app_rlc_inf.h"
37 #include "rlc_mgr.h"
38
39 RlcDuUeCfgRsp rlcUeCfgRspOpts[] =
40 {
41    packRlcDuUeCfgRsp,     /* 0 - loosely coupled */
42    DuProcRlcUeCfgRsp,     /* 1 - tightly coupled */
43    packRlcDuUeCfgRsp     /* 2 - LWLC loosely coupled */
44 };
45
46
47 /***********************************************************
48  *
49  * @brief  
50  *
51  *        Handler for the ue create response to DUAPP
52  *
53  * @b Description:
54  *
55  *        This function reports  ue create response to DUAPP
56  *
57  *  @param[in] post         Post structure  
58  *  @param[in] cfgRsp       ue create Config Response
59  *
60  *  @return  uint16_t
61  *      -# ROK 
62  *      -# RFAILED
63  *
64  *************************************************************/
65 uint8_t SendRlcUeCfgRspToDu(Pst *pst, RlcCfgCfmInfo *cfgRsp)
66 {
67    /* jump to specific primitive depending on configured selector */
68    uint8_t ret = ROK;
69    RlcUeCfgRsp *ueRsp = NULLP;
70
71    RLC_ALLOC_SHRABL_BUF(pst->region, pst->pool, ueRsp, sizeof(RlcUeCfgRsp));
72    if(!ueRsp)
73    {  
74       DU_LOG("\nERROR  -->  RLC: Memory allocation failed for ueRsp at SendRlcUeCreateRspToDu()");
75       ret = RFAILED;
76    }
77    else
78    {
79       /* Mapping Old api to New Api */
80       ret = fillRlcUeCfgRsp(ueRsp, cfgRsp);
81       if(!ret)
82       {
83          ret = (*rlcUeCfgRspOpts[pst->selector])(pst, ueRsp);
84          if(ret)
85          {
86             DU_LOG("\nERROR  -->  RLC: Failed at SendRlcUeCfgRspToDu()");
87             RLC_FREE_SHRABL_BUF(pst->region, pst->pool, ueRsp, sizeof(RlcUeCfgRsp));
88          }
89       }
90       else
91       {
92          DU_LOG("\nERROR  -->  RLC: Failed at fillRlcUeCfgRsp() for event %d", pst->event);
93          RLC_FREE_SHRABL_BUF(pst->region, pst->pool, ueRsp, sizeof(RlcUeCfgRsp));
94       }
95    }
96    return ret;
97 } /* end of SendRlcUeCfgRspToDu */
98
99 /**********************************************************************
100          End of file
101 **********************************************************************/