Exemplo n.º 1
0
    def setProtocol(self, protocolName):
        global memoryFields, instructionSets
        self.memoryFieldsKey = protocolName
        self.memoryInfo = {'fieldNames': [], 'memorySize': 0}
        if protocolName not in memoryFields:
            self.log(0, 'Unknown memory structure "%s"' % protocolName)
            return
        index = 0
        address = 0
        converter = DataConverter()
        for memoryField in memoryFields[protocolName]:
            fieldBaseType = memoryField['type'].split(' ')[-1]
            arrayElements = fieldBaseType.split('[')
            if len(arrayElements) > 1:
                fieldBaseType = arrayElements[0]
                arraySize = int(arrayElements[1].split(']')[0])
            else:
                arraySize = 1

            typeSize = converter.getByteSize(fieldBaseType)
            fieldSize = typeSize * arraySize

            self.memoryInfo['fieldNames'].append(memoryField['name'])
            self.memoryInfo[address] = {
                'name': memoryField['name'],
                'size': fieldSize,
                'type': memoryField['type'].split('[')[0],
                'numElements': arraySize,
                'writable': memoryField.get('writable', False),
                'address': address,
                'index': index,
                'makeToolTip': memoryField.get('makeToolTip', repr),
            }
            self.memoryInfo[memoryField['name']] = self.memoryInfo[address]
            index += 1
            address += fieldSize

        self.memoryInfo['memorySize'] = address

        self.instructionName = {}
        self.instructionCode = {}
        self.instructionDescription = {}
        for instruction in instructionSets.get(protocolName,
                                               instructionSets['Default']):
            self.instructionName[instruction[0]] = instruction[
                1]  # code to name
            self.instructionCode[instruction[1]] = instruction[
                0]  # name to code
            self.instructionDescription[instruction[0]] = instruction[
                2]  # code to description
            self.instructionDescription[instruction[1]] = instruction[
                2]  # name to description
Exemplo n.º 2
0
    def setProtocol(self, protocolName):
        global memoryFields, instructionSets
        self.memoryFieldsKey = protocolName
        self.memoryInfo = {'fieldNames' : [], 'memorySize': 0}
        if protocolName not in memoryFields:
            self.log(0, 'Unknown memory structure "%s"' % protocolName)
            return
        index = 0
        address = 0
        converter = DataConverter()
        for memoryField in memoryFields[protocolName]:
            fieldBaseType = memoryField['type'].split(' ')[-1]
            arrayElements = fieldBaseType.split('[')
            if len(arrayElements) > 1:
                fieldBaseType = arrayElements[0]
                arraySize = int(arrayElements[1].split(']')[0])
            else:
                arraySize = 1

            typeSize = converter.getByteSize(fieldBaseType)
            fieldSize = typeSize * arraySize

            self.memoryInfo['fieldNames'].append(memoryField['name'])
            self.memoryInfo[address] = {
                'name'        : memoryField['name'],
                'size'        : fieldSize,
                'type'        : memoryField['type'].split('[')[0],
                'numElements' : arraySize,
                'writable'    : memoryField.get('writable', False),
                'address'     : address,
                'index'       : index,
                'makeToolTip' : memoryField.get('makeToolTip', repr),
            }
            self.memoryInfo[memoryField['name']] = self.memoryInfo[address]
            index += 1
            address += fieldSize

        self.memoryInfo['memorySize'] = address

        self.instructionName = {}
        self.instructionCode = {}
        self.instructionDescription = {}
        for instruction in instructionSets.get(protocolName, instructionSets['Default']):
            self.instructionName[instruction[0]] = instruction[1] # code to name
            self.instructionCode[instruction[1]] = instruction[0] # name to code
            self.instructionDescription[instruction[0]] = instruction[2] # code to description
            self.instructionDescription[instruction[1]] = instruction[2] # name to description