+
+/*******************************************************************************
+ *
+ * @brief fill slice configuration response
+ *
+ * @details
+ *
+ * Function : fillSliceRecfgRsp
+ *
+ * Functionality: fill slice reconfiguration response
+ *
+ * @params[in] SchCellCb, SchSliceCfgReq, SchSliceCfgRsp,uint8_t count
+ *
+ * @return
+ * ROK - Success
+ * RFAILED - Failure
+ *
+ * ********************************************************************************/
+
+uint8_t fillSliceRecfgRsp(Inst inst, CmLListCp *storedSliceCfg, SchSliceRecfgReq *schSliceRecfgReq)
+{
+ SchMacRsp sliceFound;
+ uint8_t cfgIdx = 0;
+ SchRrmPolicyOfSlice *rrmPolicyOfSlices;
+ SchSliceRecfgRsp schSliceRecfgRsp;
+
+ for(cfgIdx = 0; cfgIdx<schSliceRecfgReq->numOfConfiguredSlice; cfgIdx++)
+ {
+ sliceFound = RSP_NOK;
+ /* Here comparing the slice recfg request with the StoredSliceCfg */
+ CmLList *sliceCfg = storedSliceCfg->first;
+
+ while(sliceCfg)
+ {
+ rrmPolicyOfSlices = (SchRrmPolicyOfSlice*)sliceCfg->node;
+
+ if(rrmPolicyOfSlices && (memcmp(&schSliceRecfgReq->listOfSlices[cfgIdx]->snssai, &(rrmPolicyOfSlices->snssai), sizeof(Snssai)) == 0))
+ {
+ memcpy(&rrmPolicyOfSlices->rrmPolicyRatioInfo, &schSliceRecfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
+ sliceFound = RSP_OK;
+ break;
+ }
+ sliceCfg = sliceCfg->next;
+ }
+
+ schSliceRecfgRsp.snssai = schSliceRecfgReq->listOfSlices[cfgIdx]->snssai;
+ schSliceRecfgRsp.rsp = sliceFound;
+ if(schSliceRecfgRsp.rsp == RSP_OK)
+ schSliceRecfgRsp.cause = SLICE_RECONFIGURED;
+ else
+ schSliceRecfgRsp.cause = SLICE_NOT_FOUND;
+ SchSendSliceRecfgRspToMac(inst, schSliceRecfgRsp);
+ }
+ return ROK;
+}