From a1571dcacd0d238f4884dbc227b025760f9fe0c4 Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Tue, 23 Apr 2024 21:43:31 -0700 Subject: [PATCH] patch: getVersionNumber function to construct version number with major, minor, and patch from each individual bytes in Ausbg fields --- modules/siemens/s7.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/siemens/s7.go b/modules/siemens/s7.go index d0b8b011..a08194c4 100644 --- a/modules/siemens/s7.go +++ b/modules/siemens/s7.go @@ -295,8 +295,13 @@ func parseModuleIDDataRecord(data []byte) (*moduleIDData, error) { // Constructs the version number from a moduleIDData record. func getVersionNumber(record *moduleIDData) string { - lastByteAusbg1 := record.Ausbg1 & 0xFF - return fmt.Sprintf("V%d.%d", lastByteAusbg1, record.Ausbg2) + // The major, minor, and patch versions are stored in the lower 8 bits of Ausbg1, + // the upper 8 bits of Ausbg2, and the lower 8 bits of Ausbg2, respectively. + major := record.Ausbg1 & 0xFF + minor := record.Ausbg2 >> 8 + patch := record.Ausbg2 & 0xFF + + return fmt.Sprintf("%d.%d.%d", major, minor, patch) } func parseModuleIdentificationRequest(logStruct *S7Log, s7Packet *S7Packet) error {