blob: 52342b07ce4cdbc9d8bbd8448984d517a2fd5bd5 [file] [log] [blame]
subhash kumar singhe63192f2020-12-11 14:25:11 +05301/*
2==================================================================================
3 Copyright (c) 2020 Samsung
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 This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 platform project (RICP).
19==================================================================================
20*/
21package main
22
23import (
24 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
25)
26
27type HWApp struct {
28}
29
subhash kumar singh83b75672021-06-01 19:38:57 +053030var (
31 A1_POLICY_QUERY = 20013
32 POLICY_QUERY_PAYLOAD = "{\"policy_type_id\":20000}"
33)
34
35func (e *HWApp) sendPolicyQuery() {
36 xapp.Logger.Info("Invoked method to send policy query message")
37
38 // prepare and send policy query message over RMR
39 rmrParams := new(xapp.RMRParams)
40 rmrParams.Mtype = A1_POLICY_QUERY // A1_POLICY_QUERY
41 rmrParams.Payload = []byte(POLICY_QUERY_PAYLOAD)
42
43 // send rmr message
44 flg := xapp.Rmr.SendMsg(rmrParams)
45
46 if flg {
47 xapp.Logger.Info("Successfully sent policy query message over RMR")
48 } else {
49 xapp.Logger.Info("Failed to send policy query message over RMR")
50 }
51}
52
subhash kumar singhe63192f2020-12-11 14:25:11 +053053func (e *HWApp) ConfigChangeHandler(f string) {
54 xapp.Logger.Info("Config file changed")
55}
56
subhash kumar singh3c8e1c52021-08-11 00:57:39 +053057func (e *HWApp) getEnbList() ([]*xapp.RNIBNbIdentity, error){
58 enbs, err := xapp.Rnib.GetListEnbIds()
59
60 if err != nil {
61 xapp.Logger.Error("err: %s", err)
62 return nil, err
63 }
64
65 xapp.Logger.Info("List for connected eNBs :")
66 for index, enb := range enbs {
67 xapp.Logger.Info("%d. enbid: %s", index+1, enb.InventoryName)
68 }
69 return enbs, nil
70}
71
72func (e *HWApp) getGnbList() ([]*xapp.RNIBNbIdentity, error) {
73 gnbs, err := xapp.Rnib.GetListGnbIds()
74
75 if err != nil {
76 xapp.Logger.Error("err: %s", err)
77 return nil, err
78 }
79
80 xapp.Logger.Info("List of connected gNBs :")
81 for index, gnb := range gnbs {
82 xapp.Logger.Info("%d. gnbid : %s", index+1, gnb.InventoryName)
83 }
84 return gnbs, nil
85}
86
87func (e *HWApp) getnbList() ([]*xapp.RNIBNbIdentity) {
88 nbs := []*xapp.RNIBNbIdentity{}
89
90 if enbs , err := e.getEnbList(); err == nil {
91 nbs = append(nbs, enbs...)
92 }
93
94 if gnbs, err := e.getGnbList(); err == nil {
95 nbs = append(nbs, gnbs...)
96 }
97 return nbs
98}
99
subhash kumar singh02ac5602021-06-01 18:31:07 +0530100func (e *HWApp) xAppStartCB(d interface{}) {
101 xapp.Logger.Info("xApp ready call back received")
subhash kumar singh3c8e1c52021-08-11 00:57:39 +0530102
103 // get the list of all NBs
104 e.getnbList()
subhash kumar singh02ac5602021-06-01 18:31:07 +0530105}
106
subhash kumar singh2ba8bc22021-06-01 19:22:39 +0530107func (e *HWApp) Consume(msg *xapp.RMRParams) (err error) {
108 id := xapp.Rmr.GetRicMessageName(msg.Mtype)
109
110 xapp.Logger.Info("Message received: name=%s meid=%s subId=%d txid=%s len=%d", id, msg.Meid.RanName, msg.SubId, msg.Xid, msg.PayloadLen)
111
112 switch id {
113 // policy request handler
114 case "A1_POLICY_REQUEST":
115 xapp.Logger.Info("Recived policy instance list")
116
117 // health check request
118 case "RIC_HEALTH_CHECK_REQ":
119 xapp.Logger.Info("Received health check request")
120
121 default:
122 xapp.Logger.Info("Unknown message type '%d', discarding", msg.Mtype)
123 }
124
125 defer func() {
126 xapp.Rmr.Free(msg.Mbuf)
127 msg.Mbuf = nil
128 }()
subhash kumar singhe63192f2020-12-11 14:25:11 +0530129 return
130}
131
132func (e *HWApp) Run() {
133
134 // set MDC
135 xapp.Logger.SetMdc("HWApp", "0.0.1")
136
137 // set config change listener
138 xapp.AddConfigChangeListener(e.ConfigChangeHandler)
139
subhash kumar singh02ac5602021-06-01 18:31:07 +0530140 // register callback after xapp ready
141 xapp.SetReadyCB(e.xAppStartCB, true)
142
subhash kumar singheb2fc4f2021-06-01 18:43:32 +0530143 // reading configuration from config file
144 waitForSdl := xapp.Config.GetBool("db.waitForSdl")
145
146 // start xapp
147 xapp.RunWithParams(e, waitForSdl)
subhash kumar singhe63192f2020-12-11 14:25:11 +0530148
149}
150
151func main() {
152 hw := HWApp{}
153 hw.Run()
154}