VOL-3052 Onu Software upgrade extensions with http download
Signed-off-by: mpagenko <michael.pagenkopf@adtran.com>
Change-Id: Iebcbdc0fc01c83d8293862486acb12fd9f7f8f61
diff --git a/internal/pkg/onuadaptercore/omci_cc.go b/internal/pkg/onuadaptercore/omci_cc.go
index 1f32be0..24d6ea1 100644
--- a/internal/pkg/onuadaptercore/omci_cc.go
+++ b/internal/pkg/onuadaptercore/omci_cc.go
@@ -42,6 +42,9 @@
//"github.com/opencord/voltha-protos/v4/go/voltha"
)
+// ### global test related tag #####
+const cbSwUpgradeRespSim = false
+
// ### OMCI related definitions - retrieved from Python adapter code/trace ####
const galEthernetEID = uint16(1)
@@ -2673,44 +2676,46 @@
}
logger.Debug(ctx, "send StartSwDlRequest done")
- go func() {
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
- time.Sleep(time.Millisecond * 50) //give some response time
- respOmciLayer := &omci.OMCI{
- TransactionID: tid,
- MessageType: omci.StartSoftwareDownloadResponseType,
- // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
- // Length: 0x28, // Optional, defaults to 40 octets
- }
- response := &omci.StartSoftwareDownloadResponse{
- MeBasePacket: omci.MeBasePacket{
- EntityClass: me.SoftwareImageClassID,
- EntityInstance: aImageMeID, //inactive image
- },
- Result: 0,
- WindowSize: aDownloadWindowSize,
- NumberOfInstances: 0, //seems at the moment I can only generate 0 instances, using 1 here panics as MeResult can not be set below
- //MeResults: cannot set here: downloadResults type not exported from omci-lib!
- }
- var respOptions gopacket.SerializeOptions
- respOptions.FixLengths = true
- respBuffer := gopacket.NewSerializeBuffer()
- respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
- if respErr != nil {
- logger.Errorw(ctx, "Cannot serialize StartSwDlResponse", log.Fields{"Err": respErr,
- "device-id": oo.deviceID})
- return
- }
- respPacket := respBuffer.Bytes()
- logger.Debugw(ctx, "simulate StartSwDlResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16),
- "windowSize": aDownloadWindowSize})
- go func(oo *omciCC) {
- _ = oo.receiveMessage(ctx, respPacket)
- }(oo)
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
- }()
+ if cbSwUpgradeRespSim == true {
+ go func() {
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
+ time.Sleep(time.Millisecond * 50) //give some response time
+ respOmciLayer := &omci.OMCI{
+ TransactionID: tid,
+ MessageType: omci.StartSoftwareDownloadResponseType,
+ // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
+ // Length: 0x28, // Optional, defaults to 40 octets
+ }
+ response := &omci.StartSoftwareDownloadResponse{
+ MeBasePacket: omci.MeBasePacket{
+ EntityClass: me.SoftwareImageClassID,
+ EntityInstance: aImageMeID, //inactive image
+ },
+ Result: 0,
+ WindowSize: aDownloadWindowSize,
+ NumberOfInstances: 0, //seems at the moment I can only generate 0 instances, using 1 here panics as MeResult can not be set below
+ //MeResults: cannot set here: downloadResults type not exported from omci-lib!
+ }
+ var respOptions gopacket.SerializeOptions
+ respOptions.FixLengths = true
+ respBuffer := gopacket.NewSerializeBuffer()
+ respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
+ if respErr != nil {
+ logger.Errorw(ctx, "Cannot serialize StartSwDlResponse", log.Fields{"Err": respErr,
+ "device-id": oo.deviceID})
+ return
+ }
+ respPacket := respBuffer.Bytes()
+ logger.Debugw(ctx, "simulate StartSwDlResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16),
+ "windowSize": aDownloadWindowSize})
+ go func(oo *omciCC) {
+ _ = oo.receiveMessage(ctx, respPacket)
+ }(oo)
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
+ }()
+ }
return nil
}
@@ -2772,50 +2777,52 @@
}
logger.Debug(ctx, "send DlSectionRequest done")
- go func() {
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
- if aAckRequest > 0 {
- time.Sleep(time.Millisecond * 50) //give some response time
- respOmciLayer := &omci.OMCI{
- TransactionID: tid,
- MessageType: omci.DownloadSectionResponseType,
- // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
- // Length: 0x28, // Optional, defaults to 40 octets
+ if cbSwUpgradeRespSim == true {
+ go func() {
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
+ if aAckRequest > 0 {
+ time.Sleep(time.Millisecond * 50) //give some response time
+ respOmciLayer := &omci.OMCI{
+ TransactionID: tid,
+ MessageType: omci.DownloadSectionResponseType,
+ // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
+ // Length: 0x28, // Optional, defaults to 40 octets
+ }
+ response := &omci.DownloadSectionResponse{
+ MeBasePacket: omci.MeBasePacket{
+ EntityClass: me.SoftwareImageClassID,
+ EntityInstance: aImageMeID, //inactive image
+ },
+ Result: 0,
+ SectionNumber: aDownloadSectionNo,
+ }
+ var respOptions gopacket.SerializeOptions
+ respOptions.FixLengths = true
+ respBuffer := gopacket.NewSerializeBuffer()
+ respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
+ if respErr != nil {
+ logger.Errorw(ctx, "Cannot serialize DlSectionResponse", log.Fields{"Err": respErr,
+ "device-id": oo.deviceID})
+ return
+ }
+ respPacket := respBuffer.Bytes()
+ if aPrint {
+ logger.Debugw(ctx, "simulate DlSectionResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16),
+ "packet": hex.EncodeToString(respPacket)})
+ } else {
+ logger.Debugw(ctx, "simulate DlSectionResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16)})
+ }
+ go func(oo *omciCC) {
+ _ = oo.receiveMessage(ctx, respPacket)
+ }(oo)
}
- response := &omci.DownloadSectionResponse{
- MeBasePacket: omci.MeBasePacket{
- EntityClass: me.SoftwareImageClassID,
- EntityInstance: aImageMeID, //inactive image
- },
- Result: 0,
- SectionNumber: aDownloadSectionNo,
- }
- var respOptions gopacket.SerializeOptions
- respOptions.FixLengths = true
- respBuffer := gopacket.NewSerializeBuffer()
- respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
- if respErr != nil {
- logger.Errorw(ctx, "Cannot serialize DlSectionResponse", log.Fields{"Err": respErr,
- "device-id": oo.deviceID})
- return
- }
- respPacket := respBuffer.Bytes()
- if aPrint {
- logger.Debugw(ctx, "simulate DlSectionResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16),
- "packet": hex.EncodeToString(respPacket)})
- } else {
- logger.Debugw(ctx, "simulate DlSectionResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16)})
- }
- go func(oo *omciCC) {
- _ = oo.receiveMessage(ctx, respPacket)
- }(oo)
- }
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
- }()
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
+ }()
+ }
return nil
}
@@ -2865,42 +2872,44 @@
}
logger.Debug(ctx, "send EndSwDlRequest done")
- go func() {
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
- time.Sleep(time.Millisecond * 50) //give some response time
- respOmciLayer := &omci.OMCI{
- TransactionID: tid,
- MessageType: omci.EndSoftwareDownloadResponseType,
- // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
- // Length: 0x28, // Optional, defaults to 40 octets
- }
- response := &omci.EndSoftwareDownloadResponse{
- MeBasePacket: omci.MeBasePacket{
- EntityClass: me.SoftwareImageClassID,
- EntityInstance: aImageMeID, //inactive image
- },
- Result: 0, //simulate done, option would be busy
- NumberOfInstances: 0, //basic ONU-G instance
- }
- var respOptions gopacket.SerializeOptions
- respOptions.FixLengths = true
- respBuffer := gopacket.NewSerializeBuffer()
- respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
- if respErr != nil {
- logger.Errorw(ctx, "Cannot serialize EndSwDlResponse", log.Fields{"Err": respErr,
- "device-id": oo.deviceID})
- return
- }
- respPacket := respBuffer.Bytes()
- logger.Debugw(ctx, "simulate EndSwDlResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16),
- "result": 0})
- go func(oo *omciCC) {
- _ = oo.receiveMessage(ctx, respPacket)
- }(oo)
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
- }()
+ if cbSwUpgradeRespSim == true {
+ go func() {
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
+ time.Sleep(time.Millisecond * 50) //give some response time
+ respOmciLayer := &omci.OMCI{
+ TransactionID: tid,
+ MessageType: omci.EndSoftwareDownloadResponseType,
+ // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
+ // Length: 0x28, // Optional, defaults to 40 octets
+ }
+ response := &omci.EndSoftwareDownloadResponse{
+ MeBasePacket: omci.MeBasePacket{
+ EntityClass: me.SoftwareImageClassID,
+ EntityInstance: aImageMeID, //inactive image
+ },
+ Result: 0, //simulate done, option would be busy
+ NumberOfInstances: 0, //basic ONU-G instance
+ }
+ var respOptions gopacket.SerializeOptions
+ respOptions.FixLengths = true
+ respBuffer := gopacket.NewSerializeBuffer()
+ respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
+ if respErr != nil {
+ logger.Errorw(ctx, "Cannot serialize EndSwDlResponse", log.Fields{"Err": respErr,
+ "device-id": oo.deviceID})
+ return
+ }
+ respPacket := respBuffer.Bytes()
+ logger.Debugw(ctx, "simulate EndSwDlResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16),
+ "result": 0})
+ go func(oo *omciCC) {
+ _ = oo.receiveMessage(ctx, respPacket)
+ }(oo)
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
+ }()
+ }
return nil
}
@@ -2947,42 +2956,44 @@
}
logger.Debug(ctx, "send ActivateSwRequest done")
- go func() {
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
- time.Sleep(time.Millisecond * 50) //give some response time
+ if cbSwUpgradeRespSim == true {
+ go func() {
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
+ time.Sleep(time.Millisecond * 50) //give some response time
- respOmciLayer := &omci.OMCI{
- TransactionID: tid,
- MessageType: omci.ActivateSoftwareResponseType,
- // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
- // Length: 0x28, // Optional, defaults to 40 octets
- }
- response := &omci.ActivateSoftwareResponse{
- MeBasePacket: omci.MeBasePacket{
- EntityClass: me.SoftwareImageClassID,
- EntityInstance: aImageMeID, //inactive image
- },
- Result: 0, //simulate done, option would be busy
- }
- var respOptions gopacket.SerializeOptions
- respOptions.FixLengths = true
- respBuffer := gopacket.NewSerializeBuffer()
- respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
- if respErr != nil {
- logger.Errorw(ctx, "Cannot serialize ActivateSwResponse", log.Fields{"Err": respErr,
- "device-id": oo.deviceID})
- return
- }
- respPacket := respBuffer.Bytes()
- logger.Debugw(ctx, "simulate ActivateSwResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16),
- "result": 0})
- go func(oo *omciCC) {
- _ = oo.receiveMessage(ctx, respPacket)
- }(oo)
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
- }()
+ respOmciLayer := &omci.OMCI{
+ TransactionID: tid,
+ MessageType: omci.ActivateSoftwareResponseType,
+ // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
+ // Length: 0x28, // Optional, defaults to 40 octets
+ }
+ response := &omci.ActivateSoftwareResponse{
+ MeBasePacket: omci.MeBasePacket{
+ EntityClass: me.SoftwareImageClassID,
+ EntityInstance: aImageMeID, //inactive image
+ },
+ Result: 0, //simulate done, option would be busy
+ }
+ var respOptions gopacket.SerializeOptions
+ respOptions.FixLengths = true
+ respBuffer := gopacket.NewSerializeBuffer()
+ respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
+ if respErr != nil {
+ logger.Errorw(ctx, "Cannot serialize ActivateSwResponse", log.Fields{"Err": respErr,
+ "device-id": oo.deviceID})
+ return
+ }
+ respPacket := respBuffer.Bytes()
+ logger.Debugw(ctx, "simulate ActivateSwResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16),
+ "result": 0})
+ go func(oo *omciCC) {
+ _ = oo.receiveMessage(ctx, respPacket)
+ }(oo)
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
+ }()
+ }
return nil
}
@@ -3028,41 +3039,43 @@
}
logger.Debug(ctx, "send CommitSwRequest done")
- go func() {
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
- time.Sleep(time.Millisecond * 50) //give some response time
- respOmciLayer := &omci.OMCI{
- TransactionID: tid,
- MessageType: omci.CommitSoftwareResponseType,
- // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
- // Length: 0x28, // Optional, defaults to 40 octets
- }
- response := &omci.CommitSoftwareResponse{
- MeBasePacket: omci.MeBasePacket{
- EntityClass: me.SoftwareImageClassID,
- EntityInstance: aImageMeID, //inactive image
- },
- //TODO: Not yet supported by omci-lib Result: 0, //simulate done
- }
- var respOptions gopacket.SerializeOptions
- respOptions.FixLengths = true
- respBuffer := gopacket.NewSerializeBuffer()
- respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
- if respErr != nil {
- logger.Errorw(ctx, "Cannot serialize CommitSwResponse", log.Fields{"Err": respErr,
- "device-id": oo.deviceID})
- return
- }
- respPacket := respBuffer.Bytes()
- logger.Debugw(ctx, "simulate CommitSwResponse", log.Fields{"device-id": oo.deviceID,
- "SequNo": strconv.FormatInt(int64(tid), 16),
- "InstId": strconv.FormatInt(int64(aImageMeID), 16),
- "result": 0})
- go func(oo *omciCC) {
- _ = oo.receiveMessage(ctx, respPacket)
- }(oo)
- //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
- }()
+ if cbSwUpgradeRespSim == true {
+ go func() {
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** start *****
+ time.Sleep(time.Millisecond * 50) //give some response time
+ respOmciLayer := &omci.OMCI{
+ TransactionID: tid,
+ MessageType: omci.CommitSoftwareResponseType,
+ // DeviceIdentifier: omci.BaselineIdent, // Optional, defaults to Baseline
+ // Length: 0x28, // Optional, defaults to 40 octets
+ }
+ response := &omci.CommitSoftwareResponse{
+ MeBasePacket: omci.MeBasePacket{
+ EntityClass: me.SoftwareImageClassID,
+ EntityInstance: aImageMeID, //inactive image
+ },
+ //TODO: Not yet supported by omci-lib Result: 0, //simulate done
+ }
+ var respOptions gopacket.SerializeOptions
+ respOptions.FixLengths = true
+ respBuffer := gopacket.NewSerializeBuffer()
+ respErr := gopacket.SerializeLayers(respBuffer, respOptions, respOmciLayer, response)
+ if respErr != nil {
+ logger.Errorw(ctx, "Cannot serialize CommitSwResponse", log.Fields{"Err": respErr,
+ "device-id": oo.deviceID})
+ return
+ }
+ respPacket := respBuffer.Bytes()
+ logger.Debugw(ctx, "simulate CommitSwResponse", log.Fields{"device-id": oo.deviceID,
+ "SequNo": strconv.FormatInt(int64(tid), 16),
+ "InstId": strconv.FormatInt(int64(aImageMeID), 16),
+ "result": 0})
+ go func(oo *omciCC) {
+ _ = oo.receiveMessage(ctx, respPacket)
+ }(oo)
+ //**** test simulation - as long as BBSIM does not support ONU SW upgrade *** stop *****
+ }()
+ }
return nil
}