etherlab/CommonEtherCATFunction.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Fri, 28 Sep 2018 19:02:49 +0300
changeset 2363 9c7da6ff6a34
parent 2361 5d6ce74f7835
child 2365 bc07b9910cdb
permissions -rw-r--r--
cleanup etherlab: pep8, E231 missing whitespace after ','
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     1
#!/usr/bin/env python
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     2
# -*- coding: utf-8 -*-
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     3
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     4
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     5
# This file is part of Beremiz
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     6
#
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     7
# Copyright (C) 2013: Real-Time & Embedded Systems (RTES) Lab. University of Seoul, Korea
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     8
#
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
     9
# See COPYING file for copyrights details.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    10
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    11
import os
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    12
import wx
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    13
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    14
mailbox_protocols =  ["AoE", "EoE", "CoE", "FoE", "SoE", "VoE"]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    15
2360
2a3d022a7dac cleanup etherlab: pep8, E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2358
diff changeset
    16
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    17
def ExtractHexDecValue(value):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    18
    """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    19
     convert numerical value in string format into decimal or hex format.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    20
     @param value : hex or decimal data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    21
     @return integer data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    22
    """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    23
    try:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    24
        return int(value)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    25
    except Exception:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    26
        pass
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    27
    try:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    28
        return int(value.replace("#", "0"), 16)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    29
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    30
    except Exception:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    31
        raise ValueError, "Invalid value for HexDecValue \"%s\"" % value
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    32
2360
2a3d022a7dac cleanup etherlab: pep8, E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2358
diff changeset
    33
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    34
def ExtractName(names, default=None):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    35
    """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    36
     Extract "name" field from XML entries.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    37
     @param names : XML entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    38
     @default : if it fails to extract from the designated XML entry, return the default value ("None").
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    39
     @return default or the name extracted
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    40
    """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    41
    if len(names) == 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    42
        return names[0].getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    43
    else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    44
        for name in names:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    45
            if name.getLcId() == 1033:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    46
                return name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    47
    return default
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    48
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
    49
# --------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    50
#         Remote Exec Etherlab Commands
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
    51
# --------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    52
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    53
# --------------------- for master ---------------------------
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    54
MASTER_STATE = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    55
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    56
result = commands.getoutput("ethercat master")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    57
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    58
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    59
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    60
# --------------------- for slave ----------------------------
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    61
# ethercat state -p (slave position) (state (INIT, PREOP, SAFEOP, OP))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    62
SLAVE_STATE = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    63
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    64
result = commands.getoutput("ethercat state -p %d %s")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    65
returnVal = result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    66
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    67
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    68
# ethercat slave
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    69
GET_SLAVE = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    70
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    71
result = commands.getoutput("ethercat slaves")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    72
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    73
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    74
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    75
# ethercat xml -p (slave position)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    76
SLAVE_XML = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    77
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    78
result = commands.getoutput("ethercat xml -p %d")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    79
returnVal = result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    80
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    81
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    82
# ethercat sdos -p (slave position)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    83
SLAVE_SDO = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    84
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    85
result = commands.getoutput("ethercat sdos -p %d")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    86
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    87
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    88
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    89
# ethercat upload -p (slave position) (main index) (sub index)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    90
GET_SLOW_SDO = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    91
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    92
result = commands.getoutput("ethercat upload -p %d %s %s")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
    93
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    94
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    95
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    96
# ethercat download -p (slave position) (main index) (sub index) (value)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    97
SDO_DOWNLOAD = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    98
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
    99
result = commands.getoutput("ethercat download --type %s -p %d %s %s %s")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   100
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   101
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   102
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   103
# ethercat sii_read -p (slave position)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   104
SII_READ = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   105
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   106
result = commands.getoutput("ethercat sii_read -p %d")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   107
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   108
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   109
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   110
# ethercat reg_read -p (slave position) (address) (size)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   111
REG_READ = """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   112
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   113
result = commands.getoutput("ethercat reg_read -p %d %s %s")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   114
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   115
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   116
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   117
# ethercat sii_write -p (slave position) - (contents)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   118
SII_WRITE = """
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   119
import subprocess
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   120
process = subprocess.Popen(
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   121
    ["ethercat", "-f", "sii_write", "-p", "%d", "-"],
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   122
    stdin=subprocess.PIPE)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   123
process.communicate(sii_data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   124
returnVal = process.returncode
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   125
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   126
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   127
# ethercat reg_write -p (slave position) -t (uinit16) (address) (data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   128
REG_WRITE = """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   129
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   130
result = commands.getoutput("ethercat reg_write -p %d -t uint16 %s %s")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   131
returnVal =result
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   132
"""
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   133
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   134
# ethercat rescan -p (slave position)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   135
RESCAN = """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   136
import commands
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   137
result = commands.getoutput("ethercat rescan -p %d")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   138
returnVal =result
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   139
"""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   140
2360
2a3d022a7dac cleanup etherlab: pep8, E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2358
diff changeset
   141
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   142
# --------------------------------------------------
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   143
#    Common Method For EtherCAT Management
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   144
# --------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   145
class _CommonSlave:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   146
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   147
    # ----- Data Structure for ethercat management ----
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   148
    SlaveState = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   149
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   150
    # category of SDO data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   151
    DatatypeDescription, CommunicationObject, ManufacturerSpecific, \
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   152
    ProfileSpecific, Reserved, AllSDOData = range(6)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   153
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   154
    # store the execution result of "ethercat sdos" command into SaveSDOData.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   155
    SaveSDOData = []
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   156
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   157
    # Flags for checking "write" permission of OD entries
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   158
    CheckPREOP = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   159
    CheckSAFEOP = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   160
    CheckOP = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   161
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   162
    # Save PDO Data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   163
    TxPDOInfo = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   164
    TxPDOCategory = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   165
    RxPDOInfo = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   166
    RxPDOCategory = []
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   167
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   168
    # Save EEPROM Data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   169
    SiiData = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   170
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   171
    # Save Register Data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   172
    RegData = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   173
    CrtRegSpec = {"ESCType": "",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   174
                  "FMMUNumber": "",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   175
                  "SMNumber": "",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   176
                  "PDIType": ""}
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   177
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   178
    def __init__(self, controler):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   179
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   180
        Constructor
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   181
        @param controler: _EthercatSlaveCTN class in EthercatSlave.py
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   182
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   183
        self.Controler = controler
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   184
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   185
        self.ClearSDODataSet()
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   186
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   187
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   188
    #                        Used Master State
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   189
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   190
    def GetMasterState(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   191
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   192
        Execute "ethercat master" command and parse the execution result
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   193
        @return MasterState
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   194
        """
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   195
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   196
        # exectute "ethercat master" command
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   197
        error, return_val = self.Controler.RemoteExec(MASTER_STATE, return_val = None)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   198
        master_state = {}
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   199
        # parse the reslut
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   200
        for each_line in return_val.splitlines():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   201
            if len(each_line) > 0 :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   202
                chunks = each_line.strip().split(':', 1)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   203
                key = chunks[0]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   204
                value = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   205
                if len(chunks) > 1 :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   206
                    value = chunks[1].split()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   207
                if '(attached)' in value:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   208
                    value.remove('(attached)')
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   209
                master_state[key] = value
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   210
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   211
        return master_state
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   212
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   213
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   214
    #                        Used Slave State
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   215
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   216
    def RequestSlaveState(self, command):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   217
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   218
        Set slave state to the specified one using "ethercat states -p %d %s" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   219
        Command example : "ethercat states -p 0 PREOP" (target slave position and target state are given.)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   220
        @param command : target slave state
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   221
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   222
        error, return_val = self.Controler.RemoteExec(SLAVE_STATE % (self.Controler.GetSlavePos(), command), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   223
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   224
    def GetSlaveStateFromSlave(self):
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   225
        """
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   226
        Get slave information using "ethercat slaves" command and store the information into internal data structure
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   227
        (self.SlaveState) for "Slave State"
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   228
        return_val example : 0  0:0  PREOP  +  EL9800 (V4.30) (PIC24, SPI, ET1100)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   229
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   230
        error, return_val = self.Controler.RemoteExec(GET_SLAVE, return_val = None)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   231
        self.SlaveState = return_val
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   232
        return return_val
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   233
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   234
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   235
    #                        Used SDO Management
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   236
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   237
    def GetSlaveSDOFromSlave(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   238
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   239
        Get SDO objects information of current slave using "ethercat sdos -p %d" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   240
        Command example : "ethercat sdos -p 0"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   241
        @return return_val : execution results of "ethercat sdos" command (need to be parsed later)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   242
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   243
        error, return_val = self.Controler.RemoteExec(SLAVE_SDO % (self.Controler.GetSlavePos()), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   244
        return return_val
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   245
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   246
    def SDODownload(self, data_type, idx, sub_idx, value):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   247
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   248
        Set an SDO object value to user-specified value using "ethercat download" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   249
        Command example : "ethercat download --type int32 -p 0 0x8020 0x12 0x00000000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   250
        @param data_type : data type of SDO entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   251
        @param idx : index of the SDO entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   252
        @param sub_idx : subindex of the SDO entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   253
        @param value : value of SDO entry
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   254
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   255
        error, return_val = self.Controler.RemoteExec(SDO_DOWNLOAD % (data_type, self.Controler.GetSlavePos(), idx, sub_idx, value), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   256
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   257
    def BackupSDODataSet(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   258
        """
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   259
        Back-up current SDO entry information to restore the SDO data
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   260
         in case that the user cancels SDO update operation.
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   261
    	"""
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   262
        self.BackupDatatypeDescription = self.SaveDatatypeDescription
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   263
        self.BackupCommunicationObject = self.SaveCommunicationObject
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   264
        self.BackupManufacturerSpecific = self.SaveManufacturerSpecific
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   265
        self.BackupProfileSpecific = self.SaveProfileSpecific
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   266
        self.BackupReserved = self.SaveReserved
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   267
        self.BackupAllSDOData = self.SaveAllSDOData
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   268
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   269
    def ClearSDODataSet(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   270
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   271
        Clear the specified SDO entry information.
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   272
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   273
        for count in range(6):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   274
            self.SaveSDOData.append([])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   275
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   276
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   277
    #                        Used PDO Monitoring
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   278
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   279
    def RequestPDOInfo(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   280
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   281
        Load slave information from RootClass (XML data) and parse the information (calling SlavePDOData() method).
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   282
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   283
        # Load slave information from ESI XML file (def EthercatMaster.py)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   284
        slave = self.Controler.CTNParent.GetSlave(self.Controler.GetSlavePos())
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   285
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   286
        type_infos = slave.getType()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   287
        device, alignment = self.Controler.CTNParent.GetModuleInfos(type_infos)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   288
        # Initialize PDO data set
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   289
        self.ClearDataSet()
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   290
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   291
        # if 'device' object is valid, call SavePDOData() to parse PDO data
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   292
        if device is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   293
            self.SavePDOData(device)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   294
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   295
    def SavePDOData(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   296
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   297
        Parse PDO data and store the results in TXPDOCategory and RXPDOCategory
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   298
        Tx(Rx)PDOCategory : index, name, entry number
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   299
        Tx(Rx)Info : entry index, sub index, name, length, type
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   300
        @param device : Slave information extracted from ESI XML file
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   301
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   302
        # Parsing TXPDO entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   303
        for pdo, pdo_info in ([(pdo, "Inputs") for pdo in device.getTxPdo()]):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   304
            # Save pdo_index, entry, and name of each entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   305
            pdo_index = ExtractHexDecValue(pdo.getIndex().getcontent())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   306
            entries = pdo.getEntry()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   307
            pdo_name = ExtractName(pdo.getName())
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   308
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   309
            # Initialize entry number count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   310
            count = 0
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   311
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   312
            # Parse entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   313
            for entry in entries:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   314
                # Save index and subindex
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   315
                index = ExtractHexDecValue(entry.getIndex().getcontent())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   316
                subindex = ExtractHexDecValue(entry.getSubIndex())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   317
                # if entry name exists, save entry data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   318
                if ExtractName(entry.getName()) is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   319
                    entry_infos = {
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   320
                                "entry_index" : index,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   321
                                "subindex" : subindex,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   322
                                "name" : ExtractName(entry.getName()),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   323
                                "bitlen" : entry.getBitLen(),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   324
                                "type" : entry.getDataType().getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   325
                                    }
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   326
                    self.TxPDOInfo.append(entry_infos)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   327
                    count += 1
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   328
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   329
            categorys = {"pdo_index" : pdo_index, "name" : pdo_name, "number_of_entry" : count}
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   330
            self.TxPDOCategory.append(categorys)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   331
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   332
        # Parsing RxPDO entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   333
        for pdo, pdo_info in ([(pdo, "Outputs") for pdo in device.getRxPdo()]):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   334
            # Save pdo_index, entry, and name of each entry
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   335
            pdo_index = ExtractHexDecValue(pdo.getIndex().getcontent())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   336
            entries = pdo.getEntry()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   337
            pdo_name = ExtractName(pdo.getName())
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   338
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   339
            # Initialize entry number count
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   340
            count = 0
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   341
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   342
            # Parse entries
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   343
            for entry in entries:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   344
                # Save index and subindex
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   345
                index = ExtractHexDecValue(entry.getIndex().getcontent())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   346
                subindex = ExtractHexDecValue(entry.getSubIndex())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   347
                # if entry name exists, save entry data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   348
                if ExtractName(entry.getName()) is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   349
                    entry_infos = {
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   350
                                "entry_index" : index,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   351
                                "subindex" : subindex,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   352
                                "name" : ExtractName(entry.getName()),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   353
                                "bitlen" : str(entry.getBitLen()),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   354
                                "type" : entry.getDataType().getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   355
                                    }
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   356
                    self.RxPDOInfo.append(entry_infos)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   357
                    count += 1
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   358
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   359
            categorys = {"pdo_index" : pdo_index, "name" : pdo_name, "number_of_entry" : count}
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   360
            self.RxPDOCategory.append(categorys)
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   361
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   362
    def GetTxPDOCategory(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   363
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   364
        Get TxPDOCategory data structure (Meta informaton of TxPDO).
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   365
        TxPDOCategorys : index, name, number of entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   366
        @return TxPDOCategorys
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   367
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   368
        return self.TxPDOCategory
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   369
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   370
    def GetRxPDOCategory(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   371
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   372
        Get RxPDOCategory data structure (Meta information of RxPDO).
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   373
        RxPDOCategorys : index, name, number of entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   374
        @return RxPDOCategorys
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   375
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   376
        return self.RxPDOCategory
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   377
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   378
    def GetTxPDOInfo(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   379
        """
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   380
        Get TxPDOInfo data structure (Detailed information on TxPDO entries).
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   381
        TxPDOInfos : entry index, sub index, name, length, type
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   382
        @return TxPDOInfos
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   383
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   384
        return self.TxPDOInfo
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   385
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   386
    def GetRxPDOInfo(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   387
        """
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   388
        Get RxPDOInfo data structure (Detailed information on RxPDO entries).
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   389
        RxPDOInfos : entry index, sub index, name, length, type
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   390
        @return RxPDOInfos
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   391
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   392
        return self.RxPDOInfo
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   393
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   394
    def ClearDataSet(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   395
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   396
        Initialize PDO management data structure.
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   397
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   398
        self.TxPDOInfos = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   399
        self.TxPDOCategorys = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   400
        self.RxPDOInfos = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   401
        self.RxPDOCategorys = []
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   402
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   403
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   404
    #                        Used EEPROM Management
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
   405
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   406
    # Base data types in ETG2000; format = {"Name": "BitSize"}
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   407
    BaseDataTypeDict = {"BOOL": "01",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   408
                        "SINT": "02",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   409
                        "INT": "03",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   410
                        "DINT": "04",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   411
                        "USINT": "05",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   412
                        "UINT": "06",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   413
                        "UDINT": "07",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   414
                        "REAL": "08",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   415
                        "INT24": "10",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   416
                        "LREAL": "11",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   417
                        "INT40": "12",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   418
                        "INT48": "13",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   419
                        "INT56": "14",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   420
                        "LINT": "15",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   421
                        "UINT24": "16",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   422
                        "UINT40": "18",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   423
                        "UINT48": "19",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   424
                        "UINT56": "1a",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   425
                        "ULINT": "1b",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   426
                        "USINT": "1e",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   427
                        "BITARR8": "2d",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   428
                        "BITARR16": "2e",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   429
                        "BITARR32": "2f",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   430
                        "BIT1": "30",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   431
                        "BIT2": "31",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   432
                        "BIT3": "32",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   433
                        "BIT4": "33",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   434
                        "BIT5": "34",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   435
                        "BIT6": "35",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   436
                        "BIT7": "36",
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   437
                        "BIT8": "37"}
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   438
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   439
    def GetSmartViewInfos(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   440
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   441
        Parse XML data for "Smart View" of EEPROM contents.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   442
        @return smartview_infos : EEPROM contents dictionary
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   443
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   444
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   445
        smartview_infos = {"eeprom_size": 128,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   446
                           "pdi_type": 0,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   447
                           "device_emulation": "False",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   448
                           "vendor_id": '0x00000000',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   449
                           "product_code": '0x00000000',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   450
                           "revision_no": '0x00000000',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   451
                           "serial_no": '0x00000000',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   452
                           "supported_mailbox": "",
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   453
                           "mailbox_bootstrapconf_outstart": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   454
                           "mailbox_bootstrapconf_outlength": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   455
                           "mailbox_bootstrapconf_instart": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   456
                           "mailbox_bootstrapconf_inlength": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   457
                           "mailbox_standardconf_outstart": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   458
                           "mailbox_standardconf_outlength": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   459
                           "mailbox_standardconf_instart": '0',
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   460
                           "mailbox_standardconf_inlength": '0'}
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   461
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   462
        slave = self.Controler.CTNParent.GetSlave(self.Controler.GetSlavePos())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   463
        type_infos = slave.getType()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   464
        device, alignment = self.Controler.CTNParent.GetModuleInfos(type_infos)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   465
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   466
        # 'device' represents current slave device selected by user
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   467
        if device is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   468
            for eeprom_element in device.getEeprom().getcontent():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   469
                # get EEPROM size; <Device>-<Eeprom>-<ByteSize>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   470
                if eeprom_element["name"] == "ByteSize":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   471
                    smartview_infos["eeprom_size"] = eeprom_element
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   472
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   473
                elif eeprom_element["name"] == "ConfigData":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   474
                    configData_data = self.DecimalToHex(eeprom_element)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   475
                    # get PDI type; <Device>-<Eeprom>-<ConfigData> address 0x00
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   476
                    smartview_infos["pdi_type"] = int(configData_data[0:2], 16)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   477
                    # get state of device emulation; <Device>-<Eeprom>-<ConfigData> address 0x01
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   478
                    if "{:0>8b}".format(int(configData_data[2:4], 16))[7] == '1':
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   479
                        smartview_infos["device_emulation"] = "True"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   480
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   481
                elif eeprom_element["name"] == "BootStrap":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   482
                    bootstrap_data = "{:0>16x}".format(eeprom_element)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   483
                    # get bootstrap configuration; <Device>-<Eeprom>-<BootStrap>
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   484
                    for cfg, iter in [("mailbox_bootstrapconf_outstart", 0),
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   485
                                      ("mailbox_bootstrapconf_outlength", 1),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   486
                                      ("mailbox_bootstrapconf_instart", 2),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   487
                                      ("mailbox_bootstrapconf_inlength", 3)]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   488
                        smartview_infos[cfg] = str(int(bootstrap_data[4*iter+2:4*(iter+1)]+bootstrap_data[4*iter:4*iter+2], 16))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   489
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   490
            # get protocol (profile) types supported by mailbox; <Device>-<Mailbox>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   491
            mb = device.getMailbox()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   492
            if mb is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   493
                for mailbox_protocol in mailbox_protocols:
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
   494
                    if getattr(mb, "get%s" % mailbox_protocol)() is not None:
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   495
                        smartview_infos["supported_mailbox"] += "%s,  " % mailbox_protocol
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   496
            smartview_infos["supported_mailbox"] = smartview_infos["supported_mailbox"].strip(",  ")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   497
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   498
            # get standard configuration of mailbox; <Device>-<Sm>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   499
            for sm_element in device.getSm():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   500
                if sm_element.getcontent() == "MBoxOut":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   501
                    smartview_infos["mailbox_standardconf_outstart"] = str(ExtractHexDecValue(sm_element.getStartAddress()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   502
                    smartview_infos["mailbox_standardconf_outlength"] = str(ExtractHexDecValue(sm_element.getDefaultSize()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   503
                elif sm_element.getcontent() == "MBoxIn":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   504
                    smartview_infos["mailbox_standardconf_instart"] = str(ExtractHexDecValue(sm_element.getStartAddress()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   505
                    smartview_infos["mailbox_standardconf_inlength"] = str(ExtractHexDecValue(sm_element.getDefaultSize()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   506
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   507
                    pass
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   508
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   509
            # get device identity from <Device>-<Type>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   510
            #  vendor ID; by default, pre-defined value in self.ModulesLibrary
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   511
            #             if device type in 'vendor' item equals to actual slave device type, set 'vendor_id' to vendor ID.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   512
            for vendor_id, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   513
                for available_device in vendor["groups"][vendor["groups"].keys()[0]]["devices"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   514
                    if available_device[0] == type_infos["device_type"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   515
                        smartview_infos["vendor_id"] = "0x" + "{:0>8x}".format(vendor_id)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   516
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   517
            #  product code;
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   518
            if device.getType().getProductCode() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   519
                product_code = device.getType().getProductCode()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   520
                smartview_infos["product_code"] = "0x"+"{:0>8x}".format(ExtractHexDecValue(product_code))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   521
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   522
            #  revision number;
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   523
            if device.getType().getRevisionNo() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   524
                revision_no = device.getType().getRevisionNo()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   525
                smartview_infos["revision_no"] = "0x"+"{:0>8x}".format(ExtractHexDecValue(revision_no))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   526
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   527
            #  serial number;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   528
            if device.getType().getSerialNo() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   529
                serial_no = device.getType().getSerialNo()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   530
                smartview_infos["serial_no"] = "0x"+"{:0>8x}".format(ExtractHexDecValue(serial_no))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   531
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   532
            return smartview_infos
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   533
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   534
        else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   535
            return None
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   536
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   537
    def DecimalToHex(self, decnum):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   538
        """
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   539
        Convert decimal value into hexadecimal representation.
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   540
        @param decnum : decimal value
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   541
        @return hex_data : hexadecimal representation of input value in decimal
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   542
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   543
        value = "%x" % decnum
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   544
        value_len = len(value)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   545
        if (value_len % 2) == 0:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   546
            hex_len = value_len
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   547
        else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   548
            hex_len = (value_len / 2) * 2 + 2
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   549
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   550
        hex_data = ("{:0>"+str(hex_len)+"x}").format(decnum)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   551
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   552
        return hex_data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   553
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   554
    def SiiRead(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   555
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   556
        Get slave EEPROM contents maintained by master device using "ethercat sii_read -p %d" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   557
        Command example : "ethercat sii_read -p 0"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   558
        @return return_val : result of "ethercat sii_read" (binary data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   559
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   560
        error, return_val = self.Controler.RemoteExec(SII_READ % (self.Controler.GetSlavePos()), return_val = None)
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   561
        self.SiiData = return_val
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   562
        return return_val
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   563
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   564
    def SiiWrite(self, binary):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   565
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   566
        Overwrite slave EEPROM contents using "ethercat sii_write -p %d" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   567
        Command example : "ethercat sii_write -p 0 - (binary contents)"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   568
        @param binary : EEPROM contents in binary data format
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   569
        @return return_val : result of "ethercat sii_write" (If it succeeds, the return value is NULL.)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   570
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
   571
        error, return_val = self.Controler.RemoteExec(SII_WRITE % (self.Controler.GetSlavePos()), return_val = None, sii_data = binary)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   572
        return return_val
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   573
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   574
    def LoadData(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   575
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   576
        Loading data from EEPROM use Sii_Read Method
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   577
        @return self.BinaryCode : slave EEPROM data in binary format (zero-padded)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   578
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   579
        return_val = self.Controler.CommonMethod.SiiRead()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   580
        self.BinaryCode = return_val
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   581
        self.Controler.SiiData = self.BinaryCode
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   582
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   583
        # append zero-filled padding data up to EEPROM size
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   584
        for index in range(self.SmartViewInfosFromXML["eeprom_size"] - len(self.BinaryCode)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   585
            self.BinaryCode = self.BinaryCode +'ff'.decode('hex')
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   586
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   587
        return self.BinaryCode
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   588
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   589
    def HexRead(self, binary):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   590
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   591
        Convert binary digit representation into hexadecimal representation for "Hex View" menu.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   592
        @param binary : binary digits
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   593
        @return hexCode : hexadecimal digits
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   594
        @return hexview_table_row, hexview_table_col : Grid size for "Hex View" UI
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   595
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   596
        row_code = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   597
        row_text = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   598
        row = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   599
        hex_code = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   600
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   601
        hexview_table_col = 17
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   602
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   603
        for index in range(0, len(binary)) :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   604
            if len(binary[index]) != 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   605
                break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   606
            else:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   607
                digithexstr = hex(ord(binary[index]))
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   608
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   609
                tempvar2 = digithexstr[2:4]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   610
                if len(tempvar2) == 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   611
                    tempvar2 = "0" + tempvar2
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   612
                row_code.append(tempvar2)
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   613
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   614
                if int(digithexstr, 16)>=32 and int(digithexstr, 16)<=126:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   615
                    row_text = row_text + chr(int(digithexstr, 16))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   616
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   617
                    row_text = row_text + "."
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   618
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   619
                if index != 0 :
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   620
                    if len(row_code) == (hexview_table_col - 1):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   621
                        row_code.append(row_text)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   622
                        hex_code.append(row_code)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   623
                        row_text = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   624
                        row_code = []
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   625
                        row = row + 1
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   626
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   627
        hexview_table_row = row
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   628
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   629
        return hex_code, hexview_table_row, hexview_table_col
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   630
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   631
    def GenerateEEPROMList(self, data, direction, length):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   632
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   633
        Generate EEPROM data list by reconstructing 'data' string.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   634
        example : data="12345678", direction=0, length=8 -> eeprom_list=['12', '34', '56', '78']
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   635
                  data="12345678", direction=1, length=8 -> eeprom_list=['78', '56', '34', '12']
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   636
        @param data : string to be reconstructed
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   637
        @param direction : endianness
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   638
        @param length : data length
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   639
        @return eeprom_list : reconstructed list data structure
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   640
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   641
        eeprom_list = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   642
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   643
        if direction is 0 or 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   644
            for i in range(length/2):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   645
                if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   646
                    eeprom_list.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   647
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   648
                    eeprom_list.append(data[direction*(length-2):direction*(length-2)+2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   649
                data = data[(1-direction)*2:length-direction*2]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   650
                length -= 2
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   651
        return eeprom_list
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   652
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   653
    def XmlToEeprom(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   654
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   655
        Extract slave EEPROM contents using slave ESI XML file.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   656
          - Mandatory parts
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   657
          - String category : ExtractEEPROMStringCategory()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   658
          - General category : ExtractEEPROMGeneralCategory()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   659
          - FMMU category : ExtractEEPROMFMMUCategory
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   660
          - SyncM category : ExtractEEPROMSyncMCategory()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   661
          - Tx/RxPDO category : ExtractEEPROMPDOCategory()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   662
          - DC category : ExtractEEPROMDCCategory()
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   663
        @return eeprom_binary
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   664
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   665
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   666
        data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   667
        eeprom_size = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   668
        eeprom_binary = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   669
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   670
        # 'device' is the slave device of the current EtherCAT slave plugin
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   671
        slave = self.Controler.CTNParent.GetSlave(self.Controler.GetSlavePos())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   672
        type_infos = slave.getType()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   673
        device, alignment = self.Controler.CTNParent.GetModuleInfos(type_infos)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   674
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   675
        if device is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   676
            # get ConfigData for EEPROM offset 0x0000-0x000d; <Device>-<Eeprom>-<ConfigData>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   677
            for eeprom_element in device.getEeprom().getcontent():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   678
                if eeprom_element["name"] == "ConfigData":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   679
                    data = self.DecimalToHex(eeprom_element)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   680
            eeprom += self.GenerateEEPROMList(data, 0, 28)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   681
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   682
            # calculate CRC for EEPROM offset 0x000e-0x000f
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   683
            crc = 0x48
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   684
            for segment in eeprom:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   685
                for i in range(8):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   686
                    bit = crc & 0x80
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   687
                    crc = (crc << 1) | ((int(segment, 16) >> (7 - i)) & 0x01)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   688
                    if bit:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   689
                        crc ^= 0x07
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   690
            for k in range(8):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   691
                bit = crc & 0x80
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   692
                crc <<= 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   693
                if bit:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   694
                    crc ^= 0x07
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   695
            eeprom.append(hex(crc)[len(hex(crc))-3:len(hex(crc))-1])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   696
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   697
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   698
            # get VendorID for EEPROM offset 0x0010-0x0013;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   699
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   700
            for vendor_id, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   701
                for available_device in vendor["groups"][vendor["groups"].keys()[0]]["devices"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   702
                    if available_device[0] == type_infos["device_type"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   703
                        data = "{:0>8x}".format(vendor_id)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   704
            eeprom += self.GenerateEEPROMList(data, 1, 8)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   705
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   706
            # get Product Code for EEPROM offset 0x0014-0x0017;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   707
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   708
            if device.getType().getProductCode() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   709
                data = "{:0>8x}".format(ExtractHexDecValue(device.getType().getProductCode()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   710
            eeprom += self.GenerateEEPROMList(data, 1, 8)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   711
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   712
            # get Revision Number for EEPROM offset 0x0018-0x001b;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   713
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   714
            if device.getType().getRevisionNo() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   715
                data = "{:0>8x}".format(ExtractHexDecValue(device.getType().getRevisionNo()))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   716
            eeprom += self.GenerateEEPROMList(data, 1, 8)
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   717
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   718
            # get Serial Number for EEPROM 0x001c-0x001f;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   719
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   720
            if device.getType().getSerialNo() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   721
                data = "{:0>8x}".format(ExtractHexDecValue(device.getType().getSerialNo()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   722
            eeprom += self.GenerateEEPROMList(data, 1, 8)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   723
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   724
            # get Execution Delay for EEPROM 0x0020-0x0021; not analyzed yet
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   725
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   726
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   727
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   728
            # get Port0/1 Delay for EEPROM offset 0x0022-0x0025; not analyzed yet
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   729
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   730
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   731
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   732
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   733
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   734
            # reserved for EEPROM offset 0x0026-0x0027;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   735
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   736
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   737
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   738
            # get BootStrap for EEPROM offset 0x0028-0x002e; <Device>-<Eeprom>-<BootStrap>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   739
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   740
            for eeprom_element in device.getEeprom().getcontent():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   741
                if eeprom_element["name"] == "BootStrap":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   742
                    data = "{:0>16x}".format(eeprom_element)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   743
            eeprom += self.GenerateEEPROMList(data, 0, 16)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   744
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   745
            # get Standard Mailbox for EEPROM offset 0x0030-0x0037; <Device>-<sm>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   746
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   747
            standard_send_mailbox_offset = None
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   748
            standard_send_mailbox_size = None
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   749
            standard_receive_mailbox_offset = None
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   750
            standard_receive_mailbox_size = None
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   751
            for sm_element in device.getSm():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   752
                if sm_element.getcontent() == "MBoxOut":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   753
                    standard_receive_mailbox_offset = "{:0>4x}".format(ExtractHexDecValue(sm_element.getStartAddress()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   754
                    standard_receive_mailbox_size = "{:0>4x}".format(ExtractHexDecValue(sm_element.getDefaultSize()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   755
                elif sm_element.getcontent() == "MBoxIn":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   756
                    standard_send_mailbox_offset = "{:0>4x}".format(ExtractHexDecValue(sm_element.getStartAddress()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   757
                    standard_send_mailbox_size = "{:0>4x}".format(ExtractHexDecValue(sm_element.getDefaultSize()))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   758
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   759
            if standard_receive_mailbox_offset is None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   760
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   761
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   762
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   763
                eeprom.append(standard_receive_mailbox_offset[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   764
                eeprom.append(standard_receive_mailbox_offset[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   765
            if standard_receive_mailbox_size is None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   766
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   767
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   768
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   769
                eeprom.append(standard_receive_mailbox_size[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   770
                eeprom.append(standard_receive_mailbox_size[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   771
            if standard_send_mailbox_offset is None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   772
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   773
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   774
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   775
                eeprom.append(standard_send_mailbox_offset[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   776
                eeprom.append(standard_send_mailbox_offset[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   777
            if standard_send_mailbox_size is None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   778
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   779
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   780
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   781
                eeprom.append(standard_send_mailbox_size[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   782
                eeprom.append(standard_send_mailbox_size[0:2])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   783
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   784
            # get supported mailbox protocols for EEPROM offset 0x0038-0x0039;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   785
            data = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   786
            mb = device.getMailbox()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   787
            if mb is not None :
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
   788
                for bit, mbprot in enumerate(mailbox_protocols):
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
   789
                    if getattr(mb, "get%s" % mbprot)() is not None:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   790
                        data += 1<<bit
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   791
            data = "{:0>4x}".format(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   792
            eeprom.append(data[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   793
            eeprom.append(data[0:2])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   794
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   795
            # resereved for EEPROM offset 0x003a-0x007b;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   796
            for i in range(0x007b-0x003a+0x0001):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   797
                eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   798
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   799
            # get EEPROM size for EEPROM offset 0x007c-0x007d;
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   800
            data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   801
            for eeprom_element in device.getEeprom().getcontent():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   802
                if eeprom_element["name"] == "ByteSize":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   803
                    eeprom_size = int(str(eeprom_element))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   804
                    data = "{:0>4x}".format(int(eeprom_element)/1024*8-1)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   805
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   806
            if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   807
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   808
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   809
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   810
                eeprom.append(data[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   811
                eeprom.append(data[0:2])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   812
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   813
            # Version for EEPROM 0x007e-0x007f;
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   814
            #  According to "EtherCAT Slave Device Description(V0.3.0)"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   815
            eeprom.append("01")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   816
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   817
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   818
            # append String Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   819
            for data in self.ExtractEEPROMStringCategory(device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   820
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   821
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   822
            # append General Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   823
            for data in self.ExtractEEPROMGeneralCategory(device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   824
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   825
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   826
            # append FMMU Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   827
            for data in self.ExtractEEPROMFMMUCategory(device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   828
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   829
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   830
            # append SyncM Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   831
            for data in self.ExtractEEPROMSyncMCategory(device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   832
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   833
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   834
            # append TxPDO Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   835
            for data in self.ExtractEEPROMPDOCategory(device, "TxPdo"):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   836
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   837
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   838
            # append RxPDO Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   839
            for data in self.ExtractEEPROMPDOCategory(device, "RxPdo"):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   840
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   841
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   842
            # append DC Category data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   843
            for data in self.ExtractEEPROMDCCategory(device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   844
                eeprom.append(data)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   845
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   846
            # append padding
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   847
            padding = eeprom_size-len(eeprom)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   848
            for i in range(padding):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   849
                eeprom.append("ff")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   850
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   851
            # convert binary code
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   852
            for index in range(eeprom_size):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   853
                eeprom_binary = eeprom_binary + eeprom[index].decode('hex')
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   854
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   855
            return eeprom_binary
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   856
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   857
    def ExtractEEPROMStringCategory(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   858
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   859
        Extract "Strings" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   860
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   861
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   862
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   863
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   864
        self.Strings = []
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   865
        data = ""
2361
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
   866
        count = 0        # string counter
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
   867
        padflag = False  # padding flag if category length is odd
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   868
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   869
        # index information for General Category in EEPROM
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   870
        self.GroupIdx = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   871
        self.ImgIdx = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   872
        self.OrderIdx = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   873
        self.NameIdx = 0
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   874
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   875
        # flag for preventing duplicated vendor specific data
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   876
        typeflag = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   877
        grouptypeflag = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   878
        groupnameflag = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   879
        devnameflag = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   880
        imageflag = False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   881
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   882
        # vendor specific data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   883
        #   element1; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Type>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   884
        #   vendor_specific_data : vendor specific data (binary type)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   885
        vendor_specific_data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   886
        #   vendor_spec_strings : list of vendor specific "strings" for preventing duplicated strings
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   887
        vendor_spec_strings = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   888
        for element in device.getType().getcontent():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   889
            data += element
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   890
        if data is not "" and type(data) == unicode:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   891
            for vendor_spec_string in vendor_spec_strings:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   892
                if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   893
                    self.OrderIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   894
                    typeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   895
                    break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   896
            if typeflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   897
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   898
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   899
                vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   900
                typeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   901
                self.OrderIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   902
                vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   903
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   904
                    vendor_specific_data += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   905
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   906
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   907
        #  element2-1; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<GroupType>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   908
        data = device.getGroupType()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   909
        if data is not None and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   910
            for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   911
                if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   912
                    self.GroupIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   913
                    grouptypeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   914
                    break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   915
            if grouptypeflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   916
                grouptype = data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   917
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   918
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   919
                vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   920
                grouptypeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   921
                self.GroupIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   922
                vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   923
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   924
                    vendor_specific_data += "{:0>2x}".format(ord(data[character]))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   925
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   926
        #  element2-2; <EtherCATInfo>-<Groups>-<Group>-<Type>
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   927
        if grouptypeflag is False:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   928
            if self.Controler.CTNParent.CTNParent.ModulesLibrary.Library is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   929
                for vendor_id, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   930
                    for group_type, group_etc in vendor["groups"].iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   931
                        for device_item in group_etc["devices"]:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   932
                            if device == device_item[1]:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   933
                                data = group_type
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   934
                if data is not None and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   935
                    for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   936
                        if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   937
                            self.GroupIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   938
                            grouptypeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   939
                            break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   940
                    if grouptypeflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   941
                        grouptype = data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   942
                        count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   943
                        self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   944
                        vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   945
                        grouptypeflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   946
                        self.GroupIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   947
                        vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   948
                        for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   949
                            vendor_specific_data += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   950
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   951
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   952
        #  element3; <EtherCATInfo>-<Descriptions>-<Groups>-<Group>-<Name(LcId is "1033")>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   953
        if self.Controler.CTNParent.CTNParent.ModulesLibrary.Library is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   954
            for vendorId, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   955
                for group_type, group_etc in vendor["groups"].iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   956
                    for device_item in group_etc["devices"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   957
                        if device == device_item[1]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   958
                            data = group_etc["name"]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   959
        if data is not "" and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   960
            for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   961
                if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   962
                    groupnameflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   963
                    break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   964
            if groupnameflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   965
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   966
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   967
                vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   968
                groupnameflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   969
                vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   970
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   971
                    vendor_specific_data += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   972
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   973
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   974
        #  element4; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Name(LcId is "1033" or "1"?)>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   975
        for element in device.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   976
            if element.getLcId() == 1 or element.getLcId()==1033:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   977
                data = element.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   978
        if data is not "" and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   979
            for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   980
                if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   981
                    self.NameIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   982
                    devnameflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   983
                    break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   984
            if devnameflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   985
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   986
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   987
                vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   988
                devnameflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   989
                self.NameIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   990
                vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   991
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   992
                    vendor_specific_data += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   993
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
   994
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   995
        #  element5-1; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Image16x14>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   996
        if device.getcontent() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   997
            data = device.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   998
            if data is not None and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
   999
                for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1000
                    if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1001
                        self.ImgIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1002
                        imageflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1003
                        break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1004
                if imageflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1005
                    count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1006
                    self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1007
                    vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1008
                    imageflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1009
                    self.ImgIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1010
                    vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1011
                    for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1012
                        vendor_specific_data += "{:0>2x}".format(ord(data[character]))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1013
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1014
        #  element5-2; <EtherCATInfo>-<Descriptions>-<Groups>-<Group>-<Image16x14>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1015
        if imageflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1016
            if self.Controler.CTNParent.CTNParent.ModulesLibrary.Library is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1017
                for vendor_id, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1018
                    for group_type, group_etc in vendor["groups"].iteritems():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1019
                        for device_item in group_etc["devices"]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1020
                            if device == device_item[1]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1021
                                data = group_etc
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1022
                if data is not None and type(data) == unicode:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1023
                    for vendor_spec_string in vendor_spec_strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1024
                        if data == vendor_spec_string:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1025
                            self.ImgIdx = vendor_spec_strings.index(data)+1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1026
                            imageflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1027
                            break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1028
                    if imageflag is False:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1029
                        count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1030
                        self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1031
                        vendor_spec_strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1032
                        imageflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1033
                        self.ImgIdx = count
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1034
                        vendor_specific_data += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1035
                        for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1036
                            vendor_specific_data += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1037
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1038
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1039
        # DC related elements
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1040
        #  <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Dc>-<OpMode>-<Name>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1041
        dc_related_elements = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1042
        if device.getDc() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1043
            for element in device.getDc().getOpMode():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1044
                data = element.getName()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1045
                if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1046
                    count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1047
                    self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1048
                    dc_related_elements += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1049
                    for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1050
                        dc_related_elements += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1051
                    data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1052
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1053
        # Input elements(TxPDO)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1054
        #  <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<TxPdo>; Name
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1055
        input_elements = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1056
        inputs = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1057
        for element in device.getTxPdo():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1058
            for name in element.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1059
                data = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1060
            for input in inputs:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1061
                if data == input:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1062
                    data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1063
            if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1064
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1065
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1066
                inputs.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1067
                input_elements += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1068
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1069
                    input_elements += "{:0>2x}".format(ord(data[character]))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1070
                data = ""
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1071
            for entry in element.getEntry():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1072
                for name in entry.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1073
                    data = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1074
                for input in inputs:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1075
                    if data == input:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1076
                        data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1077
                if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1078
                    count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1079
                    self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1080
                    inputs.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1081
                    input_elements += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1082
                    for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1083
                        input_elements += "{:0>2x}".format(ord(data[character]))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1084
                    data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1085
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1086
        # Output elements(RxPDO)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1087
        #  <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<RxPdo>; Name
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1088
        output_elements = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1089
        outputs = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1090
        for element in device.getRxPdo():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1091
            for name in element.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1092
                data = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1093
            for output in outputs:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1094
                if data == output:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1095
                    data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1096
            if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1097
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1098
                self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1099
                outputs.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1100
                output_elements += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1101
                for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1102
                    output_elements += "{:0>2x}".format(ord(data[character]))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1103
                data = ""
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1104
            for entry in element.getEntry():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1105
                for name in entry.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1106
                    data = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1107
                for output in outputs:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1108
                    if data == output:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1109
                        data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1110
                if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1111
                    count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1112
                    self.Strings.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1113
                    outputs.append(data)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1114
                    output_elements += "{:0>2x}".format(len(data))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1115
                    for character in range(len(data)):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1116
                        output_elements += "{:0>2x}".format(ord(data[character]))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1117
                    data = ""
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1118
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1119
        # form eeprom data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1120
        #  category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1121
        eeprom.append("0a")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1122
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1123
        #  category length (word); 1 word is 4 bytes. "+2" is the length of string's total number
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1124
        length = len(vendor_specific_data + dc_related_elements + input_elements + output_elements) + 2
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1125
        if length % 4 == 0:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1126
            pass
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1127
        else:
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1128
            length +=length % 4
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1129
            padflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1130
        eeprom.append("{:0>4x}".format(length/4)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1131
        eeprom.append("{:0>4x}".format(length/4)[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1132
        #  total numbers of strings
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1133
        eeprom.append("{:0>2x}".format(count))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1134
        for element in [vendor_specific_data,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1135
                        dc_related_elements,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1136
                        input_elements,
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1137
                        output_elements]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1138
            for iter in range(len(element)/2):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1139
                if element == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1140
                    eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1141
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1142
                    eeprom.append(element[0:2])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1143
                element = element[2:len(element)]
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1144
        # padding if length is odd bytes
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1145
        if padflag is True:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1146
            eeprom.append("ff")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1147
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1148
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1149
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1150
    def ExtractEEPROMGeneralCategory(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1151
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1152
        Extract "General" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1153
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1154
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1155
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1156
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1157
        data = ""
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1158
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1159
        # category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1160
        eeprom.append("1e")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1161
        eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1162
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1163
        # category length
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1164
        eeprom.append("10")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1165
        eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1166
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1167
        # word 1 : Group Type index and Image index in STRINGS Category
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1168
        eeprom.append("{:0>2x}".format(self.GroupIdx))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1169
        eeprom.append("{:0>2x}".format(self.ImgIdx))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1170
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1171
        # word 2 : Device Type index and Device Name index in STRINGS Category
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1172
        eeprom.append("{:0>2x}".format(self.OrderIdx))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1173
        eeprom.append("{:0>2x}".format(self.NameIdx))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1174
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1175
        # word 3 : Physical Layer Port info. and CoE Details
2361
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
  1176
        eeprom.append("01")  # Physical Layer Port info - assume 01
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1177
        #  CoE Details; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Mailbox>-<CoE>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1178
        coe_details = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1179
        mb = device.getMailbox()
2361
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
  1180
        coe_details = 1  # sdo enabled
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1181
        if mb is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1182
            coe = mb.getCoE()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1183
            if coe is not None:
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
  1184
                for bit, flag in enumerate(["SdoInfo", "PdoAssign", "PdoConfig",
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1185
                                           "PdoUpload", "CompleteAccess"]):
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
  1186
                    if getattr(coe, "get%s" % flag)() is not None:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1187
                        coe_details += 1<<bit
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1188
        eeprom.append("{:0>2x}".format(coe_details))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1189
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1190
        # word 4 : FoE Details and EoE Details
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1191
        #  FoE Details; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Mailbox>-<FoE>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1192
        if mb is not None and mb.getFoE() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1193
            eeprom.append("01")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1194
        else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1195
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1196
        #  EoE Details; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Mailbox>-<EoE>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1197
        if mb is not None and mb.getEoE() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1198
            eeprom.append("01")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1199
        else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1200
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1201
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1202
        # word 5 : SoE Channels(reserved) and DS402 Channels
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1203
        #  SoE Details; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Mailbox>-<SoE>
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1204
        if mb is not None and mb.getSoE() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1205
            eeprom.append("01")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1206
        else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1207
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1208
        #  DS402Channels; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Mailbox>-<CoE>: DS402Channels
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1209
        ds402ch = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1210
        if mb is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1211
            coe = mb.getCoE()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1212
            if coe is not None :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1213
                ds402ch = coe.getDS402Channels()
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
  1214
        eeprom.append("01" if ds402ch in [True, 1] else "00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1215
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1216
        # word 6 : SysmanClass(reserved) and Flags
2361
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
  1217
        eeprom.append("00")  # reserved
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1218
        #  Flags
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1219
        en_safeop = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1220
        en_lrw = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1221
        if device.getType().getTcCfgModeSafeOp() == True \
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1222
        or device.getType().getTcCfgModeSafeOp() == 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1223
            en_safeop = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1224
        if device.getType().getUseLrdLwr() == True \
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1225
        or device.getType().getUseLrdLwr() == 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1226
            en_lrw = True
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1227
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1228
        flags = "0b"+"000000"+str(int(en_lrw))+str(int(en_safeop))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1229
        eeprom.append("{:0>2x}".format(int(flags, 2)))
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1230
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1231
        # word 7 : Current On EBus (assume 0x0000)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1232
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1233
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1234
        # after word 7; couldn't analyze yet
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1235
        eeprom.append("03")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1236
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1237
        eeprom.append("11")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1238
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1239
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1240
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1241
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1242
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1243
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1244
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1245
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1246
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1247
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1248
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1249
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1250
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1251
        eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1252
        eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1253
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1254
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1255
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1256
    def ExtractEEPROMFMMUCategory(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1257
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1258
        Extract "FMMU" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1259
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1260
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1261
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1262
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1263
        data = ""
2361
5d6ce74f7835 cleanup etherlab: pep8, E261 at least two spaces before inline comment
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2360
diff changeset
  1264
        count = 0  # number of FMMU
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1265
        padflag = False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1266
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1267
        for fmmu in device.getFmmu():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1268
            count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1269
            if fmmu.getcontent() == "Outputs":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1270
                data += "01"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1271
            if fmmu.getcontent() == "Inputs":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1272
                data += "02"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1273
            if fmmu.getcontent() == "MBoxState":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1274
                data += "03"
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1275
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1276
        # construct of EEPROM data
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1277
        if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1278
            #  category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1279
            eeprom.append("28")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1280
            eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1281
            #  category length
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1282
            if count % 2 == 1:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1283
                padflag = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1284
                eeprom.append("{:0>4x}".format((count+1)/2)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1285
                eeprom.append("{:0>4x}".format((count+1)/2)[0:2])
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1286
            else:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1287
                eeprom.append("{:0>4x}".format((count)/2)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1288
                eeprom.append("{:0>4x}".format((count)/2)[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1289
            for i in range(count):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1290
                if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1291
                    eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1292
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1293
                    eeprom.append(data[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1294
                data = data[2:len(data)]
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1295
            #  padding if length is odd bytes
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1296
            if padflag is True:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1297
                eeprom.append("ff")
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1298
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1299
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1300
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1301
    def ExtractEEPROMSyncMCategory(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1302
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1303
        Extract "SyncM" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1304
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1305
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1306
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1307
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1308
        data = ""
2363
9c7da6ff6a34 cleanup etherlab: pep8, E231 missing whitespace after ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2361
diff changeset
  1309
        number = {"MBoxOut": "01", "MBoxIn": "02", "Outputs": "03", "Inputs": "04"}
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1310
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1311
        for sm in device.getSm():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1312
            for attr in [sm.getStartAddress(),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1313
                         sm.getDefaultSize(),
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1314
                         sm.getControlByte()]:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1315
                if attr is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1316
                    data += "{:0>4x}".format(ExtractHexDecValue(attr))[2:4]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1317
                    data += "{:0>4x}".format(ExtractHexDecValue(attr))[0:2]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1318
                else:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1319
                    data += "0000"
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1320
            if sm.getEnable() == "1" or sm.getEnable() == True:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1321
                data += "01"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1322
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1323
                data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1324
            data += number[sm.getcontent()]
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1325
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1326
        if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1327
            #  category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1328
            eeprom.append("29")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1329
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1330
            #  category length
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1331
            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1332
            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1333
            for i in range(len(data)/2):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1334
                if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1335
                    eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1336
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1337
                    eeprom.append(data[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1338
                data = data[2:len(data)]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1339
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1340
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1341
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1342
    def ExtractEEPROMPDOCategory(self, device, pdotype):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1343
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1344
        Extract ""PDO (Tx, Rx)"" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1345
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1346
        @param pdotype : identifier whether "TxPDO" or "RxPDO".
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1347
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1348
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1349
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1350
        data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1351
        count = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1352
        en_fixed = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1353
        en_mandatory = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1354
        en_virtual = False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1355
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1356
        for element in eval("device.get%s()" % pdotype):
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1357
            #  PDO Index
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1358
            data += "{:0>4x}".format(ExtractHexDecValue(element.getIndex().getcontent()))[2:4]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1359
            data += "{:0>4x}".format(ExtractHexDecValue(element.getIndex().getcontent()))[0:2]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1360
            #  Number of Entries
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1361
            data += "{:0>2x}".format(len(element.getEntry()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1362
            #  About Sync Manager
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1363
            if element.getSm() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1364
                data += "{:0>2x}".format(element.getSm())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1365
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1366
                data += "ff"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1367
            #  Reference to DC Synch (according to ET1100 documentation) - assume 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1368
            data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1369
            #  Name Index
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1370
            objname = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1371
            for name in element.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1372
                objname = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1373
            for name in self.Strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1374
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1375
                if objname == name:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1376
                    break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1377
            if len(self.Strings)+1 == count:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1378
                data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1379
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1380
                data += "{:0>2x}".format(count)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1381
            count = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1382
            #  Flags; by Fixed, Mandatory, Virtual attributes ?
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1383
            if element.getFixed() == True or 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1384
                en_fixed = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1385
            if element.getMandatory() == True or 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1386
                en_mandatory = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1387
            if element.getVirtual() == True or element.getVirtual():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1388
                en_virtual = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1389
            data += str(int(en_fixed)) + str(int(en_mandatory)) + str(int(en_virtual)) + "0"
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1390
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1391
            for entry in element.getEntry():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1392
                #   Entry Index
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1393
                data += "{:0>4x}".format(ExtractHexDecValue(entry.getIndex().getcontent()))[2:4]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1394
                data += "{:0>4x}".format(ExtractHexDecValue(entry.getIndex().getcontent()))[0:2]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1395
                #   Subindex
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1396
                data += "{:0>2x}".format(int(entry.getSubIndex()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1397
                #   Entry Name Index
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1398
                objname = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1399
                for name in entry.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1400
                    objname = name.getcontent()
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1401
                for name in self.Strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1402
                    count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1403
                    if objname == name:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1404
                        break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1405
                if len(self.Strings)+1 == count:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1406
                    data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1407
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1408
                    data += "{:0>2x}".format(count)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1409
                count = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1410
                #   DataType
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1411
                if entry.getDataType() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1412
                    if entry.getDataType().getcontent() in self.BaseDataTypeDict:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1413
                        data += self.BaseDataTypeDict[entry.getDataType().getcontent()]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1414
                    else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1415
                        data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1416
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1417
                    data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1418
                #   BitLen
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1419
                if entry.getBitLen() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1420
                    data += "{:0>2x}".format(int(entry.getBitLen()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1421
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1422
                    data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1423
                #   Flags; by Fixed attributes ?
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1424
                en_fixed = False
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1425
                if entry.getFixed() == True or entry.getFixed() == 1:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1426
                    en_fixed = True
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1427
                data += str(int(en_fixed)) + "000"
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1428
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1429
        if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1430
            #  category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1431
            if pdotype == "TxPdo":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1432
                eeprom.append("32")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1433
            elif pdotype == "RxPdo":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1434
                eeprom.append("33")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1435
            else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1436
                eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1437
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1438
            #  category length
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1439
            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1440
            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1441
            data = str(data.lower())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1442
            for i in range(len(data)/2):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1443
                if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1444
                    eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1445
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1446
                    eeprom.append(data[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1447
                data = data[2:len(data)]
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1448
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1449
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1450
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1451
    def ExtractEEPROMDCCategory(self, device):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1452
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1453
        Extract "DC(Distributed Clock)" category data from slave ESI XML and generate EEPROM image data.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1454
        @param device : 'device' object in the slave ESI XML
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1455
        @return eeprom : "Strings" category EEPROM image data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1456
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1457
        eeprom = []
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1458
        data = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1459
        count = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1460
        namecount = 0
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1461
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1462
        if device.getDc() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1463
            for element in device.getDc().getOpMode():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1464
                count += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1465
                #  assume that word 1-7 are 0x0000
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1466
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1467
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1468
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1469
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1470
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1471
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1472
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1473
                #  word 8-10
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1474
                #  AssignActivate
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1475
                if element.getAssignActivate() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1476
                    data += "{:0>4x}".format(ExtractHexDecValue(element.getAssignActivate()))[2:4]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1477
                    data += "{:0>4x}".format(ExtractHexDecValue(element.getAssignActivate()))[0:2]
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1478
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1479
                    data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1480
                #  Factor of CycleTimeSync0 ? and default is 1?
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1481
                if element.getCycleTimeSync0() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1482
                    if element.getCycleTimeSync0().getFactor() is not None:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1483
                        data += "{:0>2x}".format(int(element.getCycleTimeSync0().getFactor()))
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1484
                        data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1485
                    else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1486
                        data += "0100"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1487
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1488
                    data += "0100"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1489
                #  Index of Name in STRINGS Category
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1490
                #  Name Index
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1491
                objname = ""
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1492
                for name in element.getName():
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1493
                    objname += name
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1494
                for name in self.Strings:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1495
                    namecount += 1
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1496
                    if objname == name:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1497
                        break
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1498
                if len(self.Strings)+1 == namecount:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1499
                    data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1500
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1501
                    data += "{:0>2x}".format(namecount)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1502
                namecount = 0
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1503
                data += "00"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1504
                #  assume that word 11-12 are 0x0000
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1505
                data += "0000"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1506
                data += "0000"
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1507
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1508
        if data is not "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1509
            #  category header
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1510
            eeprom.append("3c")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1511
            eeprom.append("00")
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1512
            #  category length
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1513
            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1514
            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1515
            data = str(data.lower())
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1516
            for i in range(len(data)/2):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1517
                if data == "":
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1518
                    eeprom.append("00")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1519
                else:
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1520
                    eeprom.append(data[0:2])
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1521
                data = data[2:len(data)]
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1522
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1523
        return eeprom
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1524
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
  1525
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1526
    #                        Used Register Access
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
  1527
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1528
    def RegRead(self, offset, length):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1529
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1530
        Read slave ESC register content using "ethercat reg_read -p %d %s %s" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1531
        Command example : "ethercat reg_read -p 0 0x0c00 0x0400"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1532
        @param offset : register address
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1533
        @param length : register length
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1534
        @return return_val : register data
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1535
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1536
        error, return_val = self.Controler.RemoteExec(REG_READ % (self.Controler.GetSlavePos(), offset, length), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1537
        return return_val
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1538
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1539
    def RegWrite(self, address, data):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1540
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1541
        Write data to slave ESC register using "ethercat reg_write -p %d %s %s" command.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1542
        Command example : "ethercat reg_write -p 0 0x0c04 0x0001"
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1543
        @param address : register address
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1544
        @param data : data to write
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1545
        @return return_val : the execution result of "ethercat reg_write" (for error check)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1546
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1547
        error, return_val = self.Controler.RemoteExec(REG_WRITE % (self.Controler.GetSlavePos(), address, data), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1548
        return return_val
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1549
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1550
    def Rescan(self):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1551
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1552
        Synchronize EEPROM data in master controller with the data in slave device after EEPROM write.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1553
        Command example : "ethercat rescan -p 0"
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1554
        """
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1555
        error, return_val = self.Controler.RemoteExec(RESCAN % (self.Controler.GetSlavePos()), return_val = None)
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1556
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
  1557
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1558
    #                        Common Use Methods
2356
c26e0c66d8d5 cleanup etherlab: pep8, E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2355
diff changeset
  1559
    # -------------------------------------------------------------------------------
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1560
    def CheckConnect(self, cyclic_flag):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1561
        """
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1562
        Check connection status (1) between Beremiz and the master (2) between the master and the slave.
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1563
        @param cyclic_flag: 0 - one shot, 1 - periodic
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1564
        @return True or False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1565
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1566
        if self.Controler.GetCTRoot()._connector is not None:
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1567
            # Check connection between the master and the slave.
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1568
            # Command example : "ethercat xml -p 0"
2358
8e5a9830867e cleanup etherlab: pep8, E228 missing whitespace around modulo operator
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2356
diff changeset
  1569
            error, return_val = self.Controler.RemoteExec(SLAVE_XML % (self.Controler.GetSlavePos()), return_val = None)
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1570
            number_of_lines = return_val.split("\n")
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1571
            if len(number_of_lines) <= 2 :  # No slave connected to the master controller
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1572
                if not cyclic_flag :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1573
                    self.CreateErrorDialog('No connected slaves')
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1574
                return False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1575
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1576
            elif len(number_of_lines) > 2 :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1577
                return True
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1578
        else:
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1579
            # The master controller is not connected to Beremiz host
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1580
            if not cyclic_flag :
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1581
                self.CreateErrorDialog('PLC not connected!')
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1582
            return False
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1583
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1584
    def CreateErrorDialog(self, mention):
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1585
        """
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1586
        Create a dialog to indicate error or warning.
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1587
        @param mention : Error String
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1588
        """
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1589
        app_frame = self.Controler.GetCTRoot().AppFrame
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1590
        dlg = wx.MessageDialog (app_frame, mention,
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1591
                                ' Warning...',
2354
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1592
                                wx.OK | wx.ICON_INFORMATION)
9460872f1440 convert some etherlab source files to unix format
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2353
diff changeset
  1593
        dlg.ShowModal()
2355
fec77f2b9e07 cleanup etherlab: pep8, W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2354
diff changeset
  1594
        dlg.Destroy()