etherlab/CommonEtherCATFunction.py
changeset 2437 105c20fdeb19
parent 2434 07f48018b6f5
child 2446 922f0d84f869
equal deleted inserted replaced
2436:82bfc75bcd9d 2437:105c20fdeb19
     7 # Copyright (C) 2013: Real-Time & Embedded Systems (RTES) Lab. University of Seoul, Korea
     7 # Copyright (C) 2013: Real-Time & Embedded Systems (RTES) Lab. University of Seoul, Korea
     8 #
     8 #
     9 # See COPYING file for copyrights details.
     9 # See COPYING file for copyrights details.
    10 
    10 
    11 from __future__ import absolute_import
    11 from __future__ import absolute_import
       
    12 from __future__ import division
    12 from builtins import str as text
    13 from builtins import str as text
    13 import wx
    14 import wx
    14 
    15 
    15 
    16 
    16 mailbox_protocols = ["AoE", "EoE", "CoE", "FoE", "SoE", "VoE"]
    17 mailbox_protocols = ["AoE", "EoE", "CoE", "FoE", "SoE", "VoE"]
   549         value = "%x" % decnum
   550         value = "%x" % decnum
   550         value_len = len(value)
   551         value_len = len(value)
   551         if (value_len % 2) == 0:
   552         if (value_len % 2) == 0:
   552             hex_len = value_len
   553             hex_len = value_len
   553         else:
   554         else:
   554             hex_len = (value_len / 2) * 2 + 2
   555             hex_len = (value_len // 2) * 2 + 2
   555 
   556 
   556         hex_data = ("{:0>"+str(hex_len)+"x}").format(decnum)
   557         hex_data = ("{:0>"+str(hex_len)+"x}").format(decnum)
   557 
   558 
   558         return hex_data
   559         return hex_data
   559 
   560 
   648         @return eeprom_list : reconstructed list data structure
   649         @return eeprom_list : reconstructed list data structure
   649         """
   650         """
   650         eeprom_list = []
   651         eeprom_list = []
   651 
   652 
   652         if direction is 0 or 1:
   653         if direction is 0 or 1:
   653             for dummy in range(length/2):
   654             for dummy in range(length//2):
   654                 if data == "":
   655                 if data == "":
   655                     eeprom_list.append("00")
   656                     eeprom_list.append("00")
   656                 else:
   657                 else:
   657                     eeprom_list.append(data[direction*(length-2):direction*(length-2)+2])
   658                     eeprom_list.append(data[direction*(length-2):direction*(length-2)+2])
   658                 data = data[(1-direction)*2:length-direction*2]
   659                 data = data[(1-direction)*2:length-direction*2]
   808             # get EEPROM size for EEPROM offset 0x007c-0x007d;
   809             # get EEPROM size for EEPROM offset 0x007c-0x007d;
   809             data = ""
   810             data = ""
   810             for eeprom_element in device.getEeprom().getcontent():
   811             for eeprom_element in device.getEeprom().getcontent():
   811                 if eeprom_element["name"] == "ByteSize":
   812                 if eeprom_element["name"] == "ByteSize":
   812                     eeprom_size = int(str(eeprom_element))
   813                     eeprom_size = int(str(eeprom_element))
   813                     data = "{:0>4x}".format(int(eeprom_element)/1024*8-1)
   814                     data = "{:0>4x}".format(int(eeprom_element)//1024*8-1)
   814 
   815 
   815             if data == "":
   816             if data == "":
   816                 eeprom.append("00")
   817                 eeprom.append("00")
   817                 eeprom.append("00")
   818                 eeprom.append("00")
   818             else:
   819             else:
  1132         if length % 4 == 0:
  1133         if length % 4 == 0:
  1133             pass
  1134             pass
  1134         else:
  1135         else:
  1135             length += length % 4
  1136             length += length % 4
  1136             padflag = True
  1137             padflag = True
  1137         eeprom.append("{:0>4x}".format(length/4)[2:4])
  1138         eeprom.append("{:0>4x}".format(length//4)[2:4])
  1138         eeprom.append("{:0>4x}".format(length/4)[0:2])
  1139         eeprom.append("{:0>4x}".format(length//4)[0:2])
  1139         #  total numbers of strings
  1140         #  total numbers of strings
  1140         eeprom.append("{:0>2x}".format(count))
  1141         eeprom.append("{:0>2x}".format(count))
  1141         for element in [vendor_specific_data,
  1142         for element in [vendor_specific_data,
  1142                         dc_related_elements,
  1143                         dc_related_elements,
  1143                         input_elements,
  1144                         input_elements,
  1144                         output_elements]:
  1145                         output_elements]:
  1145             for dummy in range(len(element)/2):
  1146             for dummy in range(len(element)//2):
  1146                 if element == "":
  1147                 if element == "":
  1147                     eeprom.append("00")
  1148                     eeprom.append("00")
  1148                 else:
  1149                 else:
  1149                     eeprom.append(element[0:2])
  1150                     eeprom.append(element[0:2])
  1150                 element = element[2:len(element)]
  1151                 element = element[2:len(element)]
  1285             eeprom.append("28")
  1286             eeprom.append("28")
  1286             eeprom.append("00")
  1287             eeprom.append("00")
  1287             #  category length
  1288             #  category length
  1288             if count % 2 == 1:
  1289             if count % 2 == 1:
  1289                 padflag = True
  1290                 padflag = True
  1290                 eeprom.append("{:0>4x}".format((count+1)/2)[2:4])
  1291                 eeprom.append("{:0>4x}".format((count+1)//2)[2:4])
  1291                 eeprom.append("{:0>4x}".format((count+1)/2)[0:2])
  1292                 eeprom.append("{:0>4x}".format((count+1)//2)[0:2])
  1292             else:
  1293             else:
  1293                 eeprom.append("{:0>4x}".format((count)/2)[2:4])
  1294                 eeprom.append("{:0>4x}".format((count)//2)[2:4])
  1294                 eeprom.append("{:0>4x}".format((count)/2)[0:2])
  1295                 eeprom.append("{:0>4x}".format((count)//2)[0:2])
  1295             for dummy in range(count):
  1296             for dummy in range(count):
  1296                 if data == "":
  1297                 if data == "":
  1297                     eeprom.append("00")
  1298                     eeprom.append("00")
  1298                 else:
  1299                 else:
  1299                     eeprom.append(data[0:2])
  1300                     eeprom.append(data[0:2])
  1332         if data != "":
  1333         if data != "":
  1333             #  category header
  1334             #  category header
  1334             eeprom.append("29")
  1335             eeprom.append("29")
  1335             eeprom.append("00")
  1336             eeprom.append("00")
  1336             #  category length
  1337             #  category length
  1337             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1338             eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
  1338             eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
  1339             eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
  1339             for dummy in range(len(data)/2):
  1340             for dummy in range(len(data)//2):
  1340                 if data == "":
  1341                 if data == "":
  1341                     eeprom.append("00")
  1342                     eeprom.append("00")
  1342                 else:
  1343                 else:
  1343                     eeprom.append(data[0:2])
  1344                     eeprom.append(data[0:2])
  1344                 data = data[2:len(data)]
  1345                 data = data[2:len(data)]
  1440                 eeprom.append("33")
  1441                 eeprom.append("33")
  1441             else:
  1442             else:
  1442                 eeprom.append("00")
  1443                 eeprom.append("00")
  1443             eeprom.append("00")
  1444             eeprom.append("00")
  1444             #  category length
  1445             #  category length
  1445             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1446             eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
  1446             eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
  1447             eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
  1447             data = str(data.lower())
  1448             data = str(data.lower())
  1448             for dummy in range(len(data)/2):
  1449             for dummy in range(len(data)//2):
  1449                 if data == "":
  1450                 if data == "":
  1450                     eeprom.append("00")
  1451                     eeprom.append("00")
  1451                 else:
  1452                 else:
  1452                     eeprom.append(data[0:2])
  1453                     eeprom.append(data[0:2])
  1453                 data = data[2:len(data)]
  1454                 data = data[2:len(data)]
  1514         if data != "":
  1515         if data != "":
  1515             #  category header
  1516             #  category header
  1516             eeprom.append("3c")
  1517             eeprom.append("3c")
  1517             eeprom.append("00")
  1518             eeprom.append("00")
  1518             #  category length
  1519             #  category length
  1519             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1520             eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
  1520             eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
  1521             eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
  1521             data = str(data.lower())
  1522             data = str(data.lower())
  1522             for dummy in range(len(data)/2):
  1523             for dummy in range(len(data)//2):
  1523                 if data == "":
  1524                 if data == "":
  1524                     eeprom.append("00")
  1525                     eeprom.append("00")
  1525                 else:
  1526                 else:
  1526                     eeprom.append(data[0:2])
  1527                     eeprom.append(data[0:2])
  1527                 data = data[2:len(data)]
  1528                 data = data[2:len(data)]