[VOL-3144] verification of explicit device/port disable/enable config processing

Signed-off-by: mpagenko <michael.pagenkopf@adtran.com>
Change-Id: I34dc2bf54755a1dd948da7258bf269de0c76fb7b
diff --git a/internal/pkg/onuadaptercore/omci_cc.go b/internal/pkg/onuadaptercore/omci_cc.go
index 8a02b44..ad09d16 100644
--- a/internal/pkg/onuadaptercore/omci_cc.go
+++ b/internal/pkg/onuadaptercore/omci_cc.go
@@ -140,6 +140,37 @@
 	return &omciCC
 }
 
+//stop stops/resets the omciCC
+func (oo *omciCC) stop(ctx context.Context) error {
+	logger.Debugw("omciCC-stopping", log.Fields{"for device-id": oo.deviceID})
+	//reseting all internal data, which might also be helpful for discarding any lingering tx/rx requests
+	oo.mutexTxQueue.Lock()
+	oo.txQueue.Init() // clear the tx queue
+	oo.mutexTxQueue.Unlock()
+	oo.mutexRxSchedMap.Lock()
+	for k := range oo.rxSchedulerMap {
+		delete(oo.rxSchedulerMap, k) //clear the scheduler map
+	}
+	oo.mutexRxSchedMap.Unlock()
+	oo.mutexHpTid.Lock()
+	oo.hpTid = 0x8000 //reset the high prio transactionId
+	oo.mutexHpTid.Unlock()
+	oo.mutexTid.Lock()
+	oo.tid = 1 //reset the low prio transactionId
+	oo.mutexTid.Unlock()
+	//reset control values
+	oo.uploadSequNo = 0
+	oo.uploadNoOfCmds = 0
+	//reset the stats counter - which might be topic of discussion ...
+	oo.txFrames = 0
+	oo.txOnuFrames = 0
+	oo.rxFrames = 0
+	oo.rxOnuFrames = 0
+	oo.rxOnuDiscards = 0
+
+	return nil
+}
+
 // Rx handler for omci messages
 func (oo *omciCC) receiveOnuMessage(ctx context.Context, omciMsg *omci.OMCI) error {
 	logger.Debugw("rx-onu-autonomous-message", log.Fields{"omciMsgType": omciMsg.MessageType,
@@ -488,21 +519,21 @@
 func (oo *omciCC) getNextTid(highPriority bool) uint16 {
 	var next uint16
 	if highPriority {
-		oo.mutexTid.Lock()
+		oo.mutexHpTid.Lock()
 		next = oo.hpTid
 		oo.hpTid++
 		if oo.hpTid < 0x8000 {
 			oo.hpTid = 0x8000
 		}
-		oo.mutexTid.Unlock()
+		oo.mutexHpTid.Unlock()
 	} else {
-		oo.mutexHpTid.Lock()
+		oo.mutexTid.Lock()
 		next = oo.tid
 		oo.tid++
 		if oo.tid >= 0x8000 {
 			oo.tid = 1
 		}
-		oo.mutexHpTid.Unlock()
+		oo.mutexTid.Unlock()
 	}
 	return next
 }