VOL-4013: Delivery of correct ONU pm-data for UNI_Status

Change-Id: I286c10ef08f8dfd1273aef094cbce60ecc4ab879
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index a8d67d6..466f383 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -749,7 +749,8 @@
 	case omci.MibUploadNextRequestType:
 		responsePkt, _ = omcilib.CreateMibUploadNextResponse(msg.OmciPkt, msg.OmciMsg, o.MibDataSync)
 	case omci.GetRequestType:
-		responsePkt, _ = omcilib.CreateGetResponse(msg.OmciPkt, msg.OmciMsg, o.SerialNumber, o.MibDataSync, o.ActiveImageEntityId, o.CommittedImageEntityId)
+		onuDown := o.OperState.Current() == "down"
+		responsePkt, _ = omcilib.CreateGetResponse(msg.OmciPkt, msg.OmciMsg, o.SerialNumber, o.MibDataSync, o.ActiveImageEntityId, o.CommittedImageEntityId, onuDown)
 	case omci.SetRequestType:
 		success := true
 		msgObj, _ := omcilib.ParseSetRequest(msg.OmciPkt)
@@ -767,6 +768,23 @@
 				raiseOMCIAlarm := false
 				if adminState == 1 {
 					raiseOMCIAlarm = true
+					// set the OperState to disabled
+					if err := o.OperState.Event(OnuTxDisable); err != nil {
+						onuLogger.WithFields(log.Fields{
+							"OnuId":  o.ID,
+							"IntfId": o.PonPortID,
+							"OnuSn":  o.Sn(),
+						}).Errorf("Cannot change ONU OperState to down: %s", err.Error())
+					}
+				} else {
+					// set the OperState to enabled
+					if err := o.OperState.Event(OnuTxEnable); err != nil {
+						onuLogger.WithFields(log.Fields{
+							"OnuId":  o.ID,
+							"IntfId": o.PonPortID,
+							"OnuSn":  o.Sn(),
+						}).Errorf("Cannot change ONU OperState to up: %s", err.Error())
+					}
 				}
 				msg := bbsim.Message{
 					Type: bbsim.UniStatusAlarm,