[SEBA-434] Replacing omci-sim with omci-lib-go

Change-Id: I499afc9ec49bb483467ea93bd6ce3077dd0ccc6e
diff --git a/internal/bbsim/alarmsim/alarmsim.go b/internal/bbsim/alarmsim/alarmsim.go
index cbb51da..6c6a290 100644
--- a/internal/bbsim/alarmsim/alarmsim.go
+++ b/internal/bbsim/alarmsim/alarmsim.go
@@ -17,17 +17,14 @@
 package alarmsim
 
 import (
-	"context"
 	"fmt"
+	"github.com/opencord/bbsim/internal/bbsim/types"
 	"strconv"
 
 	"github.com/opencord/bbsim/internal/common"
 
 	"github.com/opencord/bbsim/api/bbsim"
-	"github.com/opencord/bbsim/internal/bbsim/devices"
 	"github.com/opencord/voltha-protos/v4/go/openolt"
-	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/status"
 )
 
 func AlarmNameToEnum(name string) (bbsim.AlarmType_Types, error) {
@@ -54,9 +51,8 @@
 }
 
 // BuildOnuAlarmIndication function forms openolt alarmIndication as per ONUAlarmRequest
-func BuildOnuAlarmIndication(req *bbsim.ONUAlarmRequest, o *devices.OltDevice) (*openolt.AlarmIndication, error) {
+func BuildOnuAlarmIndication(req *bbsim.ONUAlarmRequest, onuID uint32, ponPortID uint32) (*openolt.AlarmIndication, error) {
 	var alarm *openolt.AlarmIndication
-	var onu *devices.Onu
 	var err error
 
 	alarmType, err := AlarmNameToEnum(req.AlarmType)
@@ -64,37 +60,29 @@
 		return nil, err
 	}
 
-	if alarmType != bbsim.AlarmType_LOS {
-		// No ONU Id for LOS
-		onu, err = o.FindOnuBySn(req.SerialNumber)
-		if err != nil {
-			return nil, err
-		}
-	}
-
 	switch alarmType {
 	case bbsim.AlarmType_DYING_GASP:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_DyingGaspInd{DyingGaspInd: &openolt.DyingGaspIndication{
 				Status: req.Status,
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_STARTUP_FAILURE:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuStartupFailInd{OnuStartupFailInd: &openolt.OnuStartupFailureIndication{
 				Status: req.Status,
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_SIGNAL_DEGRADE:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuSignalDegradeInd{OnuSignalDegradeInd: &openolt.OnuSignalDegradeIndication{
 				Status:              req.Status,
-				OnuId:               onu.ID,
-				IntfId:              onu.PonPortID,
+				OnuId:               onuID,
+				IntfId:              ponPortID,
 				InverseBitErrorRate: uint32(extractInt(req.Parameters, "InverseBitErrorRate", 0)),
 			}},
 		}
@@ -102,8 +90,8 @@
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuSignalsFailInd{OnuSignalsFailInd: &openolt.OnuSignalsFailureIndication{
 				Status:              req.Status,
-				OnuId:               onu.ID,
-				IntfId:              onu.PonPortID,
+				OnuId:               onuID,
+				IntfId:              ponPortID,
 				InverseBitErrorRate: uint32(extractInt(req.Parameters, "InverseBitErrorRate", 0)),
 			}},
 		}
@@ -111,8 +99,8 @@
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuDriftOfWindowInd{OnuDriftOfWindowInd: &openolt.OnuDriftOfWindowIndication{
 				Status: req.Status,
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 				Drift:  uint32(extractInt(req.Parameters, "Drift", 0)),
 				NewEqd: uint32(extractInt(req.Parameters, "NewEqd", 0)),
 			}},
@@ -121,47 +109,47 @@
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuLossOmciInd{OnuLossOmciInd: &openolt.OnuLossOfOmciChannelIndication{
 				Status: req.Status,
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_TRANSMISSION_INTERFERENCE_WARNING:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuTiwiInd{OnuTiwiInd: &openolt.OnuTransmissionInterferenceWarning{
 				Status: req.Status,
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 				Drift:  uint32(extractInt(req.Parameters, "Drift", 0)),
 			}},
 		}
 	case bbsim.AlarmType_ONU_ACTIVATION_FAILURE:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuActivationFailInd{OnuActivationFailInd: &openolt.OnuActivationFailureIndication{
-				OnuId:      onu.ID,
-				IntfId:     onu.PonPortID,
+				OnuId:      onuID,
+				IntfId:     ponPortID,
 				FailReason: uint32(extractInt(req.Parameters, "FailReason", 0)),
 			}},
 		}
 	case bbsim.AlarmType_ONU_PROCESSING_ERROR:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuProcessingErrorInd{OnuProcessingErrorInd: &openolt.OnuProcessingErrorIndication{
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_LOSS_OF_KEY_SYNC_FAILURE:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuLossOfSyncFailInd{OnuLossOfSyncFailInd: &openolt.OnuLossOfKeySyncFailureIndication{
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 				Status: req.Status,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ITU_PON_STATS:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuItuPonStatsInd{OnuItuPonStatsInd: &openolt.OnuItuPonStatsIndication{
-				OnuId:  onu.ID,
-				IntfId: onu.PonPortID,
+				OnuId:  onuID,
+				IntfId: ponPortID,
 				Stats: &openolt.OnuItuPonStatsIndication_RdiErrorInd{
 					RdiErrorInd: &openolt.RdiErrorIndication{
 						RdiErrorCount: uint64(extractInt(req.Parameters, "RdiErrors", 0)),
@@ -174,48 +162,48 @@
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LosStatus: req.Status,
-				OnuId:     onu.ID,
-				IntfId:    onu.PonPortID,
+				OnuId:     onuID,
+				IntfId:    ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOB:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LobStatus: req.Status,
-				OnuId:     onu.ID,
-				IntfId:    onu.PonPortID,
+				OnuId:     onuID,
+				IntfId:    ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOPC_MISS:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LopcMissStatus: req.Status,
-				OnuId:          onu.ID,
-				IntfId:         onu.PonPortID,
+				OnuId:          onuID,
+				IntfId:         ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOPC_MIC_ERROR:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LopcMicErrorStatus: req.Status,
-				OnuId:              onu.ID,
-				IntfId:             onu.PonPortID,
+				OnuId:              onuID,
+				IntfId:             ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOFI:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LofiStatus: req.Status,
-				OnuId:      onu.ID,
-				IntfId:     onu.PonPortID,
+				OnuId:      onuID,
+				IntfId:     ponPortID,
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOAMI:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuAlarmInd{OnuAlarmInd: &openolt.OnuAlarmIndication{
 				LoamiStatus: req.Status,
-				OnuId:       onu.ID,
-				IntfId:      onu.PonPortID,
+				OnuId:       onuID,
+				IntfId:      ponPortID,
 			}},
 		}
 	default:
@@ -226,70 +214,18 @@
 }
 
 // SimulateOnuAlarm accept request for Onu alarms and send proper alarmIndication to openolt stream
-func SimulateOnuAlarm(ctx context.Context, req *bbsim.ONUAlarmRequest, o *devices.OltDevice) error {
-	alarmIndication, err := BuildOnuAlarmIndication(req, o)
+func SimulateOnuAlarm(req *bbsim.ONUAlarmRequest, onuID uint32, ponPortID uint32, channel chan types.Message) error {
+	alarmIndication, err := BuildOnuAlarmIndication(req, onuID, ponPortID)
 	if err != nil {
 		return err
 	}
 
-	err = o.SendAlarmIndication(ctx, alarmIndication)
-	if err != nil {
-		return err
+	msg := types.Message{
+		Type: types.AlarmIndication,
+		Data: alarmIndication,
 	}
 
-	return nil
-}
-
-// IsPonPortPresentInOlt verifies if given Pon port is present in olt
-func IsPonPortPresentInOlt(PonPort uint32) bool {
-	o := devices.GetOLT()
-	for _, intf := range o.Pons {
-		if intf.ID == PonPort {
-			return true
-		}
-	}
-	return false
-}
-
-// IsNniPortPresentInOlt verifies if given nni port is present in olt
-func IsNniPortPresentInOlt(nniPort uint32) bool {
-	o := devices.GetOLT()
-	for _, intf := range o.Nnis {
-		if intf.ID == nniPort {
-			return true
-		}
-	}
-	return false
-}
-
-// SimulateOltAlarm accept request for Olt alarms and send proper alarmIndication to openolt stream
-func SimulateOltAlarm(ctx context.Context, req *bbsim.OLTAlarmRequest, o *devices.OltDevice) error {
-	var alarmIndication *openolt.AlarmIndication
-	var err error
-
-	//check if its a valid port id
-	switch req.InterfaceType {
-	case "nni":
-		if !IsNniPortPresentInOlt(uint32(req.InterfaceID)) {
-			return status.Errorf(codes.NotFound, strconv.Itoa(int(req.InterfaceID))+" NNI not present in olt")
-		}
-
-	case "pon":
-		if !IsPonPortPresentInOlt(uint32(req.InterfaceID)) {
-			return status.Errorf(codes.NotFound, strconv.Itoa(int(req.InterfaceID))+" PON not present in olt")
-		}
-	}
-	alarmIndication = &openolt.AlarmIndication{
-		Data: &openolt.AlarmIndication_LosInd{LosInd: &openolt.LosIndication{
-			Status: req.Status,
-			IntfId: devices.InterfaceIDToPortNo(req.InterfaceID, req.InterfaceType),
-		}},
-	}
-
-	err = o.SendAlarmIndication(ctx, alarmIndication)
-	if err != nil {
-		return err
-	}
+	channel <- msg
 
 	return nil
 }