VOL-4200 suport reset of extended pm counters VOL-4270 fetching counters per uni
Change-Id: Icd1c507368e4097b03a34231d47f62218a790a16
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index d643a9b..9224d61 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -4609,3 +4609,53 @@
func (oo *OmciCC) SetChMonitoredRequest(omciTransID uint16, chVal bool) {
oo.monitoredRequests[omciTransID].chSuccess <- chVal
}
+
+// SendSetEthernetFrameExtendedPMME sends the set request for ethernet frame extended type me
+func (oo *OmciCC) SendSetEthernetFrameExtendedPMME(ctx context.Context, timeout int, highPrio bool,
+ rxChan chan Message, entityID uint16, classID me.ClassID, controlBlock []uint16) (*me.ManagedEntity, error) {
+ tid := oo.GetNextTid(highPrio)
+ logger.Debugw(ctx, "send-set-ethernet-frame-extended-pm-me-control-block:", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16), "InstId": strconv.FormatInt(int64(entityID), 16)})
+
+ meParams := me.ParamData{EntityID: entityID,
+ Attributes: me.AttributeValueMap{"ControlBlock": controlBlock},
+ }
+ var meInstance *me.ManagedEntity
+ var omciErr me.OmciErrors
+ if classID == me.EthernetFrameExtendedPmClassID {
+ meInstance, omciErr = me.NewEthernetFrameExtendedPm(meParams)
+ } else {
+ meInstance, omciErr = me.NewEthernetFrameExtendedPm64Bit(meParams)
+ }
+
+ if omciErr.GetError() == nil {
+ omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+ if err != nil {
+ logger.Errorw(ctx, "cannot-encode-ethernet-frame-extended-pm-me",
+ log.Fields{"err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
+ return nil, err
+ }
+ pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+ if err != nil {
+ logger.Errorw(ctx, "cannot-serialize-ethernet-frame-extended-pm-me-set-msg",
+ log.Fields{"err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
+ return nil, err
+ }
+ omciRxCallbackPair := CallbackPair{
+ CbKey: tid,
+ CbEntry: CallbackPairEntry{rxChan, oo.receiveOmciResponse, true},
+ }
+ err = oo.Send(ctx, pkt, timeout, CDefaultRetries, highPrio, omciRxCallbackPair)
+ if err != nil {
+ logger.Errorw(ctx, "Cannot send ethernet-frame-extended-pm-me",
+ log.Fields{"Err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
+ return nil, err
+ }
+ logger.Debugw(ctx, "send-ethernet-frame-extended-pm-me-set-msg-done",
+ log.Fields{"device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
+ return meInstance, nil
+ }
+ logger.Errorw(ctx, "cannot-generate-ethernet-frame-extended-pm-me-instance",
+ log.Fields{"Err": omciErr.GetError(), "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
+ return nil, omciErr.GetError()
+}