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
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
def createBitfieldInfoRow(bitfield): name = "    " + 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;\">⇨</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
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
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
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
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
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
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
def createBitfieldInfoRow(bitfield): name = "    " + 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;\">⇨</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
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
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
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
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
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
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
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
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
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
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
def fnHdr(field): ret = "// %s %s, (%s to %s)" % (MsgParser.fieldDescription(field), MsgParser.fieldUnits(field), MsgParser.fieldMin(field), MsgParser.fieldMax(field)) return ret