[VOL-3380] Functional area specific logging
Change-Id: I67414da013d8fc82827fcdb69d4f8a34040625d3
diff --git a/internal/pkg/common/defines.go b/internal/pkg/common/defines.go
new file mode 100755
index 0000000..2c597c1
--- /dev/null
+++ b/internal/pkg/common/defines.go
@@ -0,0 +1,329 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//Package common provides global definitions
+package common
+
+import (
+ "context"
+ "time"
+
+ gp "github.com/google/gopacket"
+ "github.com/looplab/fsm"
+ "github.com/opencord/omci-lib-go"
+ vc "github.com/opencord/voltha-protos/v5/go/common"
+ "github.com/opencord/voltha-protos/v5/go/voltha"
+)
+
+// MessageType - Message Protocol Type
+type MessageType uint8
+
+const (
+ // TestMsg - Message type for non OMCI messages
+ TestMsg MessageType = iota
+ //OMCI - OMCI protocol type msg
+ OMCI
+)
+
+// String - Return the text representation of the message type based on integer
+func (m MessageType) String() string {
+ names := [...]string{
+ "TestMsg",
+ "OMCI",
+ }
+ return names[m]
+}
+
+// Message - message type and data(OMCI)
+type Message struct {
+ Type MessageType
+ Data interface{}
+}
+
+//TestMessageType - message data for various events
+type TestMessageType uint8
+
+const (
+ // LoadMibTemplateOk - message data for getting mib template successfully
+ LoadMibTemplateOk TestMessageType = iota + 1
+ // LoadMibTemplateFailed - message data for failure for getting mib template
+ LoadMibTemplateFailed
+ // TimeOutOccurred - message data for timeout
+ TimeOutOccurred
+ // AbortMessageProcessing - message data for aborting running message
+ AbortMessageProcessing
+)
+
+//TestMessage - Struct to hold the message data
+//TODO: place holder to have a second interface variant - to be replaced by real variant later on
+type TestMessage struct {
+ TestMessageVal TestMessageType
+}
+
+//OmciMessage - OMCI protocol messages for managing and monitoring ONUs
+type OmciMessage struct {
+ //OnuSN *openolt.SerialNumber
+ //OnuID uint32
+ OmciMsg *omci.OMCI
+ OmciPacket *gp.Packet
+}
+
+///////////////////////////////////////////////////////////
+
+// device reasons
+const (
+ DrUnset = 0
+ DrActivatingOnu = 1
+ DrStartingOpenomci = 2
+ DrDiscoveryMibsyncComplete = 3
+ DrInitialMibDownloaded = 4
+ DrTechProfileConfigDownloadSuccess = 5
+ DrOmciFlowsPushed = 6
+ DrOmciAdminLock = 7
+ DrOnuReenabled = 8
+ DrStoppingOpenomci = 9
+ DrRebooting = 10
+ DrOmciFlowsDeleted = 11
+ DrTechProfileConfigDeleteSuccess = 12
+ DrReconcileFailed = 13
+ DrReconcileMaxTimeout = 14
+ DrReconcileCanceled = 15
+ DrTechProfileConfigDownloadFailed = 16
+)
+
+// DeviceReasonMap holds device reason strings
+var DeviceReasonMap = map[uint8]string{
+ DrUnset: "unset",
+ DrActivatingOnu: "activating-onu",
+ DrStartingOpenomci: "starting-openomci",
+ DrDiscoveryMibsyncComplete: "discovery-mibsync-complete",
+ DrInitialMibDownloaded: "initial-mib-downloaded",
+ DrTechProfileConfigDownloadSuccess: "tech-profile-config-download-success",
+ DrTechProfileConfigDownloadFailed: "tech-profile-config-download-failed",
+ DrOmciFlowsPushed: "omci-flows-pushed",
+ DrOmciAdminLock: "omci-admin-lock",
+ DrOnuReenabled: "onu-reenabled",
+ DrStoppingOpenomci: "stopping-openomci",
+ DrRebooting: "rebooting",
+ DrOmciFlowsDeleted: "omci-flows-deleted",
+ DrTechProfileConfigDeleteSuccess: "tech-profile-config-delete-success",
+ DrReconcileFailed: "reconcile-failed",
+ DrReconcileMaxTimeout: "reconcile-max-timeout",
+ DrReconcileCanceled: "reconciling-canceled",
+}
+
+// UsedOmciConfigFsms type for FSMs dealing with OMCI messages
+type UsedOmciConfigFsms int
+
+// FSMs dealing with OMCI messages
+const (
+ CUploadFsm UsedOmciConfigFsms = iota
+ CDownloadFsm
+ CUniLockFsm
+ CUniUnLockFsm
+ CAniConfigFsm
+ CUniVlanConfigFsm
+ CL2PmFsm
+ COnuUpgradeFsm
+)
+
+// OnuDeviceEvent - TODO: add comment
+type OnuDeviceEvent int
+
+// Events of interest to Device Adapters and OpenOMCI State Machines
+const (
+ // DeviceStatusInit - default start state
+ DeviceStatusInit OnuDeviceEvent = iota
+ // MibDatabaseSync - MIB database sync (upload done)
+ MibDatabaseSync
+ // OmciCapabilitiesDone - OMCI ME and message type capabilities known
+ OmciCapabilitiesDone
+ // MibDownloadDone - // MIB download done
+ MibDownloadDone
+ // UniLockStateDone - Uni ports admin set to lock
+ UniLockStateDone
+ // UniUnlockStateDone - Uni ports admin set to unlock
+ UniUnlockStateDone
+ // UniDisableStateDone - Uni ports admin set to lock based on device disable
+ UniDisableStateDone
+ // UniEnableStateDone - Uni ports admin set to unlock based on device re-enable
+ UniEnableStateDone
+ // PortLinkUp - Port link state change
+ PortLinkUp
+ // PortLinkDw - Port link state change
+ PortLinkDw
+ // OmciAniConfigDone - AniSide config according to TechProfile done
+ OmciAniConfigDone
+ // OmciAniResourceRemoved - AniSide TechProfile related resource (Gem/TCont) removed
+ OmciAniResourceRemoved // needs to be the successor of OmciAniConfigDone!
+ // OmciVlanFilterAddDone - Omci Vlan config done according to flow-add with request to write kvStore
+ OmciVlanFilterAddDone
+ // OmciVlanFilterAddDoneNoKvStore - Omci Vlan config done according to flow-add without writing kvStore
+ OmciVlanFilterAddDoneNoKvStore // needs to be the successor of OmciVlanFilterAddDone!
+ // OmciVlanFilterRemDone - Omci Vlan config done according to flow-remove with request to write kvStore
+ OmciVlanFilterRemDone // needs to be the successor of OmciVlanFilterAddDoneNoKvStore!
+ // OmciVlanFilterRemDoneNoKvStore - Omci Vlan config done according to flow-remove without writing kvStore
+ OmciVlanFilterRemDoneNoKvStore // needs to be the successor of OmciVlanFilterRemDone!
+ // OmciOnuSwUpgradeDone - SoftwareUpgrade to ONU finished
+ OmciOnuSwUpgradeDone
+ // Add other events here as needed (alarms separate???)
+)
+
+///////////////////////////////////////////////////////////
+
+//definitions as per G.988 softwareImage::valid ME IDs
+const (
+ FirstSwImageMeID = 0
+ SecondSwImageMeID = 1
+)
+
+//definitions as per G.988 softwareImage::IsCommitted
+const (
+ SwIsUncommitted = 0
+ SwIsCommitted = 1
+)
+
+//definitions as per G.988 softwareImage::IsActive
+const (
+ SwIsInactive = 0
+ SwIsActive = 1
+)
+
+//definitions as per G.988 softwareImage::IsValid
+const (
+ SwIsInvalid = 0
+ SwIsValid = 1
+)
+
+// SEntrySwImageIndication - TODO: add comment
+type SEntrySwImageIndication struct {
+ Valid bool
+ EntityID uint16
+ Version string
+ IsCommitted uint8
+}
+
+// SswImageIndications - TODO: add comment
+type SswImageIndications struct {
+ ActiveEntityEntry SEntrySwImageIndication
+ InActiveEntityEntry SEntrySwImageIndication
+}
+
+///////////////////////////////////////////////////////////
+
+type activityDescr struct {
+ DatabaseClass func(context.Context) error
+ //advertiseEvents bool
+ AuditInterval time.Duration
+ //tasks map[string]func() error
+}
+
+// OmciDeviceFsms - FSM event mapping to database class and time to wait between audits
+type OmciDeviceFsms map[string]activityDescr
+
+// AdapterFsm - Adapter FSM details including channel, event and device
+type AdapterFsm struct {
+ fsmName string
+ deviceID string
+ CommChan chan Message
+ PFsm *fsm.FSM
+}
+
+//CErrWaitAborted - AdapterFsm related error string
+//error string could be checked on waitforOmciResponse() e.g. to avoid misleading error log
+// but not used that way so far (permit error log even for wanted cancellation)
+const CErrWaitAborted = "waitResponse aborted"
+
+///////////////////////////////////////////////////////////
+
+// UniPortType holds possible UNI port types
+type UniPortType uint8
+
+// UniPPTP Interface type - re-use values from G.988 (Chapter 9.3.4) TP type definition (directly used in OMCI!)
+const (
+ // UniPPTP relates to PPTP
+ UniPPTP UniPortType = 1 // relates to PPTP
+ // UniVEIP relates to VEIP
+ UniVEIP UniPortType = 11 // relates to VEIP
+ // UniPPTPPots relates to PPTP POTS
+ UniPPTPPots UniPortType = 4 // relates to IP host config data (for Voice Services)
+)
+
+//OnuUniPort structure holds information about the ONU attached Uni Ports
+type OnuUniPort struct {
+ Enabled bool
+ Name string
+ PortNo uint32
+ PortType UniPortType
+ OfpPortNo string
+ UniID uint8
+ MacBpNo uint8
+ EntityID uint16
+ AdminState vc.AdminState_Types
+ OperState vc.OperStatus_Types
+ PPort *voltha.Port
+}
+
+// OnuUniPortMap - TODO: add comment
+type OnuUniPortMap map[uint32]*OnuUniPort
+
+///////////////////////////////////////////////////////////
+
+const (
+ tpIDStart = 64
+ tpIDEnd = 256
+ tpRange = tpIDEnd - tpIDStart
+ maxUni = 256
+)
+
+// TODO
+const (
+ IeeMaperServiceProfileBaseEID = uint16(0x1001)
+ MacBridgePortAniBaseEID = uint16(0x1001)
+ MacBridgePortUniBaseEID = uint16(0x201)
+ MacBridgePortAniMcastBaseEID = uint16(0xA01)
+ GalEthernetEID = uint16(1)
+ MacBridgeServiceProfileEID = uint16(0x201)
+)
+
+// UniVlanRuleParams - TODO: add comment
+type UniVlanRuleParams struct {
+ TpID uint8 `json:"tp_id"`
+ MatchVid uint32 `json:"match_vid"` //use uint32 types for allowing immediate bitshifting
+ MatchPcp uint32 `json:"match_pcp"`
+ TagsToRemove uint32 `json:"tags_to_remove"`
+ SetVid uint32 `json:"set_vid"`
+ SetPcp uint32 `json:"set_pcp"`
+}
+
+// UniVlanFlowParams - TODO: add comment
+type UniVlanFlowParams struct {
+ CookieSlice []uint64 `json:"cookie_slice"`
+ VlanRuleParams UniVlanRuleParams `json:"vlan_rule_params"`
+ Meter *voltha.OfpMeterConfig `json:"flow_meter"`
+}
+
+///////////////////////////////////////////////////////////
+
+//definitions as per G.988
+const (
+ OnuDataMeID = 0
+ Onu2gMeID = 0
+ OnugMeID = 0
+ IPHostConfigDataMeID = 1
+ OnugSerialNumberLen = 8
+ OmciMacAddressLen = 6
+)