[VOL-3870] Support all the 5 tcont type

Change-Id: I55f88753d60f2b8f868331ea0b4c29bb11d57cd2
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 15c7e9c..eb35925 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -22,6 +22,7 @@
 	"encoding/hex"
 	"errors"
 	"fmt"
+	"github.com/opencord/voltha-lib-go/v4/pkg/meters"
 	"strconv"
 	"strings"
 	"sync"
@@ -511,25 +512,15 @@
 			"flow-metadata": sq.flowMetadata,
 			"meter-id":      sq.meterID,
 			"device-id":     f.deviceHandler.device.Id}, nil)
-	} else if len(meterInfo.MeterConfig.Bands) < MaxMeterBand {
-		logger.Errorw(ctx, "invalid-number-of-bands-in-meter",
-			log.Fields{"Bands": meterInfo.MeterConfig.Bands,
-				"meter-id":  sq.meterID,
-				"device-id": f.deviceHandler.device.Id})
-		return olterrors.NewErrInvalidValue(log.Fields{
-			"reason":          "Invalid-number-of-bands-in-meter",
-			"meterband-count": len(meterInfo.MeterConfig.Bands),
-			"metabands":       meterInfo.MeterConfig.Bands,
-			"meter-id":        sq.meterID,
-			"device-id":       f.deviceHandler.device.Id}, nil)
 	}
-	cir := meterInfo.MeterConfig.Bands[0].Rate
-	cbs := meterInfo.MeterConfig.Bands[0].BurstSize
-	eir := meterInfo.MeterConfig.Bands[1].Rate
-	ebs := meterInfo.MeterConfig.Bands[1].BurstSize
-	pir := cir + eir
-	pbs := cbs + ebs
-	TrafficShaping := &tp_pb.TrafficShapingInfo{Cir: cir, Cbs: cbs, Pir: pir, Pbs: pbs}
+
+	var TrafficShaping *tp_pb.TrafficShapingInfo
+	if TrafficShaping, err = meters.GetTrafficShapingInfo(ctx, &meterInfo.MeterConfig); err != nil {
+		return olterrors.NewErrInvalidValue(log.Fields{
+			"reason":    "invalid-meter-config",
+			"meter-id":  sq.meterID,
+			"device-id": f.deviceHandler.device.Id}, nil)
+	}
 
 	TrafficSched := []*tp_pb.TrafficScheduler{f.techprofile[sq.intfID].GetTrafficScheduler(sq.tpInst.(*tp.TechProfile), SchedCfg, TrafficShaping)}
 	TrafficSched[0].TechProfileId = sq.tpID