コード例 #1
0
def fieldMin(field):
    ret = str(MsgParser.fieldMin(field))
    if ret == 'DBL_MIN':
        ret = '-double.MAX_FINITE'
    elif ret == 'FLT_MIN':
        ret = '-3.402823466e38'
    return ret
コード例 #2
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def createFieldInfoRow(field):
    name = str(field["Name"]) if "Name" in field else "ERROR"
    fieldtype = str(field["Type"]) if "Type" in field else "ERROR"
    count = str(field["Count"]) if "Count" in field else "1"

    units = str(field["Units"]) if "Units" in field else ""

    if "Enum" in field:
        units = str(field["Enum"])
    elif "Bitfields" in field:
        units = "Bitfield"

    scale = str(field["Scale"]) if "Scale" in field else ""
    offset = str(field["Offset"]) if "Offset" in field else ""
    default = str(field["Default"]) if "Default" in field else ""
    min = str(MsgParser.fieldMin(field))
    max = str(MsgParser.fieldMax(field))
    description = str(field["Description"]) if "Description" in field else ""

    html = "\
        <tr>\
            <td class='fieldname'>" + name + "</td>\
            <td class='fieldtype'>" + fieldtype + "</td>\
            <td class='fieldcount'>" + count + "</td>\
            <td class='fieldunits'>" + units + "</td>\
            <td class='fieldscale'>" + scale + "</td>\
            <td class='fieldoffset'>" + offset + "</td>\
            <td class='fielddefault'>" + default + "</td>\
            <td class='fielddefault'>" + min + " - " + max + "</td>\
            <td class='fielddescription'>" + description + "</td>\
        </tr>\
    "
    return html
コード例 #3
0
def createBitfieldInfoRow(bitfield):
    name = "&nbsp&nbsp&nbsp&nbsp" + str(
        bitfield["Name"]) if "Name" in bitfield else "ERROR"
    bitfieldtype = str(
        bitfield["NumBits"]) + " bits" if "NumBits" in bitfield else "ERROR"
    count = str(bitfield["Count"]) if "Count" in bitfield else "1"
    units = str(bitfield["Units"]) if "Units" in bitfield else ""

    if "Enum" in bitfield:
        units = "<ENUM>" + str(bitfield["Enum"]) + "</ENUM>"

    scale = str(bitfield["Scale"]) if "Scale" in bitfield else ""
    offset = str(bitfield["Offset"]) if "Offset" in bitfield else ""
    default = str(bitfield["Default"]) if "Default" in bitfield else ""
    min = str(MsgParser.fieldMin(bitfield))
    max = str(MsgParser.fieldMax(bitfield))
    description = str(
        bitfield["Description"]) if "Description" in bitfield else ""

    html = "\
        <tr>\
            <td> <span style=\"font-size: 1.3em;\">&#x21e8;</span>" + name + " </td>\
            <td>" + bitfieldtype + "</td>\
            <td>" + count + "</td>\
            <td>" + units + "</td>\
            <td>" + scale + "</td>\
            <td>" + offset + "</td>\
            <td>" + default + "</td>\
            <td>" + min + " - " + max + "</td>\
            <td>" + description + "</td>\
        </tr>\
    "

    return html
コード例 #4
0
def fieldReflection(msg, field):
    fieldInfo = "FieldInfo("+\
                  'name="'+field["Name"] + '",'+\
                  'type="'+reflectionInterfaceType(field) + '",'+\
                  'units="'+MsgParser.fieldUnits(field) + '",'+\
                  'minVal="'+str(MsgParser.fieldMin(field)) + '",'+\
                  'maxVal="'+str(MsgParser.fieldMax(field)) + '",'+\
                  'description="'+MsgParser.fieldDescription(field) + '",'+\
                  'get='+"Get" + field["Name"] + ','+\
                  'set='+"Set" + field["Name"]  + ','+\
                  'count='+str(pythonFieldCount(field)) + ', '
    if "IDBits" in field:
        fieldInfo += "idbits=" + str(field["IDBits"]) + ","
    if "Bitfields" in field:
        bitfieldInfo = []
        for bits in field["Bitfields"]:
            bitfieldInfo.append("    " + bitfieldReflection(msg, field, bits))
        fieldInfo += "bitfieldInfo = [\n" + ",\n".join(bitfieldInfo) + "], "
    else:
        fieldInfo += "bitfieldInfo = [], "
    if "Enum" in field:
        fieldInfo += "enum = [" + field["Enum"] + ", " + "Reverse" + field[
            "Enum"] + "])"
    else:
        fieldInfo += "enum = [])"
    return fieldInfo
コード例 #5
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def fieldReflection(msg, field):
    fieldInfo = "FieldInfo("+\
                  'name="'+field["Name"] + '",'+\
                  'type="'+reflectionInterfaceType(field) + '",'+\
                  'units="'+MsgParser.fieldUnits(field) + '",'+\
                  'minVal="'+str(MsgParser.fieldMin(field)) + '",'+\
                  'maxVal="'+str(MsgParser.fieldMax(field)) + '",'+\
                  'description="'+MsgParser.fieldDescription(field) + '",'+\
                  'get='+"Get" + field["Name"] + ','+\
                  'set='+"Set" + field["Name"]  + ','+\
                  'count='+str(pythonFieldCount(field)) + ', '
    if "IDBits" in field:
        fieldInfo += "idbits="+str(field["IDBits"])+","
    if "Bitfields" in field:
        bitfieldInfo = []
        for bits in field["Bitfields"]:
            bitfieldInfo.append("    " + bitfieldReflection(msg, field, bits))
        fieldInfo += "bitfieldInfo = [\n" + ",\n".join(bitfieldInfo) + "], "
    else:
        fieldInfo += "bitfieldInfo = [], "
    if "Enum" in field:
        fieldInfo += "enum = [" + field["Enum"]+", " + "Reverse" + field["Enum"]+"])"
    else:
        fieldInfo += "enum = [])"
    return fieldInfo
コード例 #6
0
def fnHdr(field, offset, count, name):
    param = "self"
    if str.find(name, "Set") == 0:
        param += ", value"
    if count > 1:
        param += ", idx"
    if str.find(name, "Set") != 0:
        if "Enum" in field:
            param += ", enumAsInt=0"

    min = MsgParser.fieldMin(field)
    max = MsgParser.fieldMax(field)

    try:
        fieldSize = MsgParser.fieldSize(field)
        if MsgParser.fieldUnits(field) == "ASCII" and (
                field["Type"] == "uint8" or field["Type"] == "int8"):
            count = MsgParser.fieldCount(field)
    except KeyError:
        fieldSize = 0

    ret = '''\
@msg.units('%s')
@msg.default('%s')
@msg.minVal('%s')
@msg.maxVal('%s')
@msg.offset('%s')
@msg.size('%s')
@msg.count(%s)
def %s(%s):
    """%s"""''' % (MsgParser.fieldUnits(field),
                   str(MsgParser.fieldDefault(field)), str(min), str(max),
                   str(offset), str(fieldSize), str(count), name, param,
                   MsgParser.fieldDescription(field))
    return ret
コード例 #7
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def fnHdr(field, offset, count, name):
    param = "self"
    if str.find(name, "Set") == 0:
        param += ", value"
    if  count > 1:
        param += ", idx"
    if str.find(name, "Set") != 0:
        if "Enum" in field:
            param += ", enumAsInt=0"
        
    min = MsgParser.fieldMin(field)
    max = MsgParser.fieldMax(field)
    
    try:
        fieldSize = MsgParser.fieldSize(field)
        if MsgParser.fieldUnits(field) == "ASCII" and (field["Type"] == "uint8" or field["Type"] == "int8"):
            count = MsgParser.fieldCount(field)
    except KeyError:
        fieldSize = 0
        
    ret = '''\
@msg.units('%s')
@msg.default('%s')
@msg.minVal('%s')
@msg.maxVal('%s')
@msg.offset('%s')
@msg.size('%s')
@msg.count(%s)
def %s(%s):
    """%s"""''' % (MsgParser.fieldUnits(field), str(MsgParser.fieldDefault(field)), str(min), str(max), str(offset), str(fieldSize), str(count), name, param, MsgParser.fieldDescription(field))
    return ret
コード例 #8
0
def fieldReflection(msg, field):
    fieldFnName = field["Name"]
    fieldCount = MsgParser.fieldCount(field)
    if MsgParser.fieldCount(field) != 1 and MsgParser.fieldUnits(field) == "ASCII" and (field["Type"] == "uint8" or field["Type"] == "int8"):
        fieldFnName = field["Name"]+"String"
        fieldCount = 1
    fieldInfo = "["+\
                  '"name":"'+field["Name"] + '",'+\
                  '"type":"'+reflectionInterfaceType(field) + '",'+\
                  '"units":"'+MsgParser.fieldUnits(field) + '",'+\
                  '"minVal":"'+str(MsgParser.fieldMin(field)) + '",'+\
                  '"maxVal":"'+str(MsgParser.fieldMax(field)) + '",'+\
                  '"description":"'+MsgParser.fieldDescription(field) + '",'+\
                  '"get":"Get' + fieldFnName + '",'+\
                  '"set":"Set' + fieldFnName  + '",'+\
                  '"count":'+str(fieldCount) + ', '
    if "Bitfields" in field:
        bitfieldInfo = []
        for bits in field["Bitfields"]:
            bitfieldInfo.append("    " + bitfieldReflection(msg, field, bits))
        fieldInfo += '"bitfieldInfo" : [\n' + ",\n".join(bitfieldInfo) + "], "
    else:
        fieldInfo += '"bitfieldInfo" : [], '
    if "Enum" in field:
        fieldInfo += '"enumLookup" : [' + field["Enum"]+"Enum, " + "Reverse" + field["Enum"]+"Enum]]"
    else:
        fieldInfo += '"enumLookup" : []]'
    return fieldInfo
コード例 #9
0
def createFieldInfoRow(field):
    name = str(field["Name"]) if "Name" in field else "ERROR"
    fieldtype = str(field["Type"]) if "Type" in field else "ERROR"
    count = str(field["Count"]) if "Count" in field else "1"

    units = str(field["Units"]) if "Units" in field else ""

    if "Enum" in field:
        units = str(field["Enum"])
    elif "Bitfields" in field:
        units = "Bitfield"

    scale = str(field["Scale"]) if "Scale" in field else ""
    offset = str(field["Offset"]) if "Offset" in field else ""
    default = str(field["Default"]) if "Default" in field else ""
    min = str(MsgParser.fieldMin(field))
    max = str(MsgParser.fieldMax(field))
    description = str(field["Description"]) if "Description" in field else ""

    html = "\
        <tr>\
            <td class='fieldname'>" + name + "</td>\
            <td class='fieldtype'>" + fieldtype + "</td>\
            <td class='fieldcount'>" + count + "</td>\
            <td class='fieldunits'>" + units + "</td>\
            <td class='fieldscale'>" + scale + "</td>\
            <td class='fieldoffset'>" + offset + "</td>\
            <td class='fielddefault'>" + default + "</td>\
            <td class='fielddefault'>" + min + " - " + max + "</td>\
            <td class='fielddescription'>" + description + "</td>\
        </tr>\
    "

    return html
コード例 #10
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def createBitfieldInfoRow(bitfield):
    name = "&nbsp&nbsp&nbsp&nbsp" + str(bitfield["Name"]) if "Name" in bitfield else "ERROR"
    bitfieldtype = str(bitfield["NumBits"]) + " bits" if "NumBits" in bitfield else "ERROR"
    count = str(bitfield["Count"]) if "Count" in bitfield else "1"
    units = str(bitfield["Units"]) if "Units" in bitfield else ""

    if "Enum" in bitfield:
        units = "<ENUM>" + str(bitfield["Enum"]) + "</ENUM>"

    scale = str(bitfield["Scale"]) if "Scale" in bitfield else ""
    offset = str(bitfield["Offset"]) if "Offset" in bitfield else ""
    default = str(bitfield["Default"]) if "Default" in bitfield else ""
    min = str(MsgParser.fieldMin(bitfield))
    max = str(MsgParser.fieldMax(bitfield))
    description = str(bitfield["Description"]) if "Description" in bitfield else ""

    html = "\
        <tr>\
            <td> <span style=\"font-size: 1.3em;\">&#x21e8;</span>" + name + " </td>\
            <td>" + bitfieldtype + "</td>\
            <td>" + count + "</td>\
            <td>" + units + "</td>\
            <td>" + scale + "</td>\
            <td>" + offset + "</td>\
            <td>" + default + "</td>\
            <td>" + min + " - " + max + "</td>\
            <td>" + description + "</td>\
        </tr>\
    "
    return html
コード例 #11
0
ファイル: language.py プロジェクト: BoseCorp/MsgTools
def fieldReflection(msg, field):
    fieldFnName = field["Name"]
    fieldCount = MsgParser.fieldCount(field)
    if MsgParser.fieldCount(field) != 1 and MsgParser.fieldUnits(field) == "ASCII" and (field["Type"] == "uint8" or field["Type"] == "int8"):
        fieldFnName = field["Name"]+"String"
        fieldCount = 1
    fieldInfo = "{"+\
                  'name:"'+field["Name"] + '",'+\
                  'type:"'+reflectionInterfaceType(field) + '",'+\
                  'units:"'+MsgParser.fieldUnits(field) + '",'+\
                  'minVal:"'+str(MsgParser.fieldMin(field)) + '",'+\
                  'maxVal:"'+str(MsgParser.fieldMax(field)) + '",'+\
                  'description:"'+MsgParser.fieldDescription(field) + '",'+\
                  'get:"Get' + fieldFnName + '",'+\
                  'set:"Set' + fieldFnName  + '",'+\
                  'count:'+str(fieldCount) + ', '
    if "Bitfields" in field:
        bitfieldInfo = []
        for bits in field["Bitfields"]:
            bitfieldInfo.append("    " + bitfieldReflection(msg, field, bits))
        fieldInfo += "bitfieldInfo : [\n" + ",\n".join(bitfieldInfo) + "], "
    else:
        fieldInfo += "bitfieldInfo : [], "
    if "Enum" in field:
        fieldInfo += "enumLookup : [<MSGSHORTNAME>." + field["Enum"]+", " + "<MSGSHORTNAME>.Reverse" + field["Enum"]+"]}"
    else:
        fieldInfo += "enumLookup : []}"
    return fieldInfo
コード例 #12
0
def fieldMin(field):
    ret = str(MsgParser.fieldMin(field))
    if "Scale" in field or "Offset" in field:
        ret += 'f'
    else:
        if fieldIsInt(field) and not fieldIsSigned(field):
            ret += 'U'
    return ret
コード例 #13
0
ファイル: language.py プロジェクト: BoseCorp/MsgTools
def fieldMin(field):
    val = MsgParser.fieldMin(field)
    ret = str(val)
    if ret == 'DBL_MIN':
        ret = 'Double.MIN_VALUE'
    elif ret == 'FLT_MIN':
        ret = 'Float.MIN_VALUE'
    return ret
コード例 #14
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def fieldMin(field):
    ret = str(MsgParser.fieldMin(field))
    if "Scale" in field or "Offset" in field:
        ret += 'f'
    else:
        if fieldIsInt(field) and not fieldIsSigned(field):
            ret += 'U'
    return ret
コード例 #15
0
def fieldMin(field):
    val = MsgParser.fieldMin(field)
    ret = str(val)
    if ret == 'DBL_MIN':
        ret = 'Double.MIN_VALUE'
    elif ret == 'FLT_MIN':
        ret = 'Float.MIN_VALUE'
    else:
        try:
            if val > fieldStorageMax("uint32"):
                ret += 'L'
        except TypeError:
            pass
    return ret
コード例 #16
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def fieldMin(field):
    val = MsgParser.fieldMin(field)
    ret = str(val)
    if ret == 'DBL_MIN':
        ret = 'Double.MIN_VALUE'
    elif ret == 'FLT_MIN':
        ret = 'Float.MIN_VALUE'
    else:
        try:
            if val > fieldStorageMax("uint32"):
                ret += 'L'
        except TypeError:
            pass
    return ret
コード例 #17
0
def bitfieldReflection(msg, field, bits):
    name = bits["Name"]
    ret = "["+\
              '"name":"'+name + '",'+\
              '"type":"'+bitsReflectionInterfaceType(bits) + '",'+\
              '"units":"'+MsgParser.fieldUnits(bits) + '",'+\
              '"minVal":"'+str(MsgParser.fieldMin(bits)) + '",'+\
              '"maxVal":"'+str(MsgParser.fieldMax(bits)) + '",'+\
              '"description":"'+MsgParser.fieldDescription(bits) + '",'+\
              '"get":"Get' + name + '",'+\
              '"set":"Set' + name  + '", '
    if "Enum" in bits:
        ret += '"enumLookup" : ['+  bits["Enum"]+"Enum, " + "Reverse" + bits["Enum"]+"Enum]]"
    else:
        ret += '"enumLookup" : []]'
    return ret
コード例 #18
0
ファイル: language.py プロジェクト: BoseCorp/MsgTools
def bitfieldReflection(msg, field, bits):
    name = bits["Name"]
    ret = "{"+\
              'name:"'+name + '",'+\
              'type:"'+bitsReflectionInterfaceType(bits) + '",'+\
              'units:"'+MsgParser.fieldUnits(bits) + '",'+\
              'minVal:"'+str(MsgParser.fieldMin(bits)) + '",'+\
              'maxVal:"'+str(MsgParser.fieldMax(bits)) + '",'+\
              'description:"'+MsgParser.fieldDescription(bits) + '",'+\
              'get:"Get' + name + '",'+\
              'set:"Set' + name  + '", '
    if "Enum" in bits:
        ret += "enumLookup : [<MSGSHORTNAME>."+  bits["Enum"]+", " + "<MSGSHORTNAME>.Reverse" + bits["Enum"]+"]}"
    else:
        ret += "enumLookup : []}"
    return ret
コード例 #19
0
ファイル: language.py プロジェクト: jkominek/MsgTools
def bitfieldReflection(msg, field, bits):
    name = bits["Name"]
    ret = "BitFieldInfo("+\
              'name="'+name + '",'+\
              'type="'+bitsReflectionInterfaceType(bits) + '",'+\
              'units="'+MsgParser.fieldUnits(bits) + '",'+\
              'minVal="'+str(MsgParser.fieldMin(bits)) + '",'+\
              'maxVal="'+str(MsgParser.fieldMax(bits)) + '",'+\
              'description="'+MsgParser.fieldDescription(bits) + '",'+\
              'get='+"Get" + name + ','+\
              'set='+"Set" + name  + ', '
    if "Enum" in bits:
        ret += "enum = ["+  bits["Enum"]+", " + "Reverse" + bits["Enum"]+"])"
    else:
        ret += "enum = [])"
    return ret
コード例 #20
0
ファイル: language.py プロジェクト: MilesEngineering/MsgTools
def bitfieldReflection(msg, field, bits):
    name = bits["Name"]
    ret = "BitFieldInfo("+\
              'name="'+name + '",'+\
              'type="'+bitsReflectionInterfaceType(bits) + '",'+\
              'units="'+MsgParser.fieldUnits(bits) + '",'+\
              'minVal="'+str(MsgParser.fieldMin(bits)) + '",'+\
              'maxVal="'+str(MsgParser.fieldMax(bits)) + '",'+\
              'description="'+MsgParser.fieldDescription(bits) + '",'+\
              'get='+"Get" + name + ','+\
              'set='+"Set" + name  + ', '
    if "IDBits" in bits:
        ret += "idbits="+str(bits["IDBits"])+","
    if "Enum" in bits:
        ret += "enum = ["+  bits["Enum"]+", " + "Reverse" + bits["Enum"]+"])"
    else:
        ret += "enum = [])"
    return ret
コード例 #21
0
def fnHdr(field):
    ret = "// %s %s, (%s to %s)" % (MsgParser.fieldDescription(field), MsgParser.fieldUnits(field), MsgParser.fieldMin(field), MsgParser.fieldMax(field))
    return ret