+\r
+\r
+ //Decode the RIC Control Ack message\r
+ controlAck, err := e2ap.GetControlAckMsg(params.Payload)\r
+ if err != nil {\r
+ xapp.Logger.Error("Failed to decode RIC Control Ack: %v", err)\r
+ log.Println("Failed to decode RIC Control Ack: %v", err)\r
+ return\r
+ }\r
+ log.Println("E2ap RIC RIC Control Ack message decoded \n")\r
+ xapp.Logger.Info("E2ap RIC RIC Control Ack message decoded \n")\r
+ gControlData.eventRicControlReqExpiredMu.Lock()\r
+ _,ok := gControlData.eventRicControlReqExpiredMap[int(controlAck.InstanceId)]\r
+ if !ok {\r
+ gControlData.eventRicControlReqExpiredMu.Unlock()\r
+ xapp.Logger.Debug("RIC_CONTROL_REQ has been deleted!")\r
+ log.Printf("RIC_CONTROL_REQ has been deleted!")\r
+ return nil\r
+ } else {\r
+ gControlData.eventRicControlReqExpiredMap[int(controlAck.InstanceId)] = true\r
+ gControlData.eventRicControlReqExpiredMu.Unlock()\r
+ }\r
+\r
+ controlOutcome, err := e2sm.GetControlOutcome(controlAck.ControlOutcome)\r
+ if err != nil {\r
+ xapp.Logger.Error("Failed to decode RIC Control Outcome: %v", err)\r
+ log.Println("Failed to decode RIC Control Outcome: %v", err)\r
+ return\r
+ }\r
+ log.Println("E2SM-RC RIC Control Outcome decoded \n",controlOutcome)\r
+ xapp.Logger.Info("E2SM-RC RIC Control Outcome decoded \n",controlOutcome)\r
+\r
+\r
+\r